U-BootのMLO部分の処理シーケンスを調べる(BBB)
U-Bootのソースを読んでいるが、#ifdefの嵐で読みづらい・・・。 しかも、信じられないくらいのCPU数、ボード数に対応してるから、今知りたいBBBに関係ないソースがほとんど。 ソースだけの検索結果はごみが多すなので、*.o ファイルからnmでシンボル情報を抜き出して、 関数の呼び出し関係を調べている。(これも面倒・・・) 今知りたいのは起動シーケンスで、大きな処理の順番としては、 MLO -> u-boot.img となっている。が、知りたいのはMLOの部分だけ。 MLOはビルド後に生成される spl/ フォルダーの下に、必要な情報がある。 この中の、u-boot-spl.lds (リンカースクリプト)を読むと、 エントリーポイントが_startで、それが入っている *.o が arch/arm/cpu/armv7/start.o と分かる。 さて、MLO の処理はざっくりいうと、 (1)_start -> (2) lowlevel_init -> (3) _main になっている。 lowlevel_init は、UART、タイマー、クロックその他の初期化をしているようだ。 ここの処理が終わると、シリアルが初期化されて文字が出るようになる。 _main以降は、u-boot.img に橋渡しするための、いろんな部分の初期化をやっているようだが、 今の興味の対象はシリアルの初期化までなので、lowlevel_initの中まで。 流れを簡単にすると以下のとおり。 --------------------------------------------------------------------------------------------- _start: arch/arm/cpu/armv7/start.S -> lowlevel_init: arch/arm/cpu/armv7/lowlevel_init.S -> s_init: arch/arm/cpu/armv7/am33xx/board.c -> save_omap_boot_params() arch/arm/cpu/armv7/omap-common/boot-common.c -> watchdog_disable() arch/arm/cpu/armv7/am33xx/board.c -> timer_init() arch/arm/cpu/armv7/omap-common/timer.c -> set_uart_mux_conf(): board/ti/am335x/board.c -> setup_clocks_for_console() arch/arm/cpu/armv7/am33xx/clock_am33xx.c -> uart_soft_reset() arch/arm/cpu/armv7/am33xx/board.c -> preloader_console_init(): common/spl/spl.c -> serial_init(): drivers/serial/serial.c -> get_current() drivers/serial/serial.c -> default_serial_console(): drivers/serial/serial_ns16550.c -> prcm_init() arch/arm/cpu/armv7/am33xx/clock.c -> set_mux_conf_regs() board/ti/am335x/board.c -> rtc32k_enable() arch/arm/cpu/armv7/am33xx/board.c -> sdram_init() board/ti/am335x/board.c ---------------------------------------------------------------------------------------------
2014-03-30 07:43
nice!(0)
コメント(1)
トラックバック(0)
Sir Elton John is my favourite jazz-singer of the world. I’m very glad to present for you this tour schedule. Check <a href=http://eltonjohntour2019.com>Elton John USA tour 2019</a> this link to get your tickets for the final Elton John tour 2019.
by EJCew (2019-01-02 10:14)