U-Bootのソースを読んでみる(2)
[arch/arm/lib/board.c]
261 void board_init_f(ulong bootflag) 262 { ... 294 for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { 295 if ((*init_fnc_ptr)() != 0) { 296 hang (); 297 } 298 } ...
init_sequenceは以下の定義。
227 init_fnc_t *init_sequence[] = { 228 arch_cpu_init, /* basic arch cpu dependent setup */ 229 230 #if defined(CONFIG_BOARD_EARLY_INIT_F) 231 board_early_init_f, 232 #endif 233 #ifdef CONFIG_OF_CONTROL 234 fdtdec_check_fdt, 235 #endif 236 timer_init, /* initialize timer */ 237 #ifdef CONFIG_BOARD_POSTCLK_INIT 238 board_postclk_init, 239 #endif 240 #ifdef CONFIG_FSL_ESDHC 241 get_clocks, 242 #endif 243 env_init, /* initialize environment */ 244 init_baudrate, /* initialze baudrate settings */ 245 serial_init, /* serial communications setup */ 246 console_init_f, /* stage 1 init of console */ 247 display_banner, /* say that we are here */ 248 #if defined(CONFIG_DISPLAY_CPUINFO) 249 print_cpuinfo, /* display cpu info (and speed) */ 250 #endif 251 #if defined(CONFIG_DISPLAY_BOARDINFO) 252 checkboard, /* display board info */ 253 #endif 254 #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C) 255 init_func_i2c, 256 #endif 257 dram_init, /* configure available RAM banks */ 258 NULL, 259 };
ちなみに、このなかのdisplay_bannerで一番最初のブートメッセージを出力しているっぽい。
こんなメッセージ:U-Boot 2012.10-00381-g186fc4d-dirty (Nov 05 2012 - 00:40:02)
[arch/arm/lib/board.c]
118 static int display_banner(void) 119 { 120 printf("\n\n%s\n\n", version_string); 121 debug("U-Boot code: %08lX -> %08lX BSS: -> %08lX\n", 122 _TEXT_BASE, 123 _bss_start_ofs + _TEXT_BASE, _bss_end_ofs + _TEXT_BASE); 124 #ifdef CONFIG_MODEM_SUPPORT 125 debug("Modem Support enabled\n"); 126 #endif 127 #ifdef CONFIG_USE_IRQ 128 debug("IRQ Stack: %08lx\n", IRQ_STACK_START); 129 debug("FIQ Stack: %08lx\n", FIQ_STACK_START); 130 #endif 131 132 return (0); 133 }
printf使ってる!!!