`
yidongkaifa
  • 浏览: 4048623 次
文章分类
社区版块
存档分类
最新评论

U-Boot移植日志(2)--启动顺序

 
阅读更多

下面说一下U-boot在启动过程中的详细初始化过程,包括各个函数的调用及相应文件,更详细的信息可以阅读源代码
1)初始化CPU
这是汇编代码,一开始调用/cpu/s3c44b0/start.s,执行一些最初级的初始化,包括内存及外围的一些主要配置

2)C语言程序开始
汇编代码执行完后调用C语言函数start_armboot,该函数在lib_arm/board.c文件中
该函数通过一个循环调用函数指针来调用一系列的外设初始化函数,该函数在init_sequence数组中,可以修改该数组的初始化值来调整初始化的顺序。

3)初始化CPU
调用文件/cpu/s3c44b0/cpu.c中的函数cpu_init初始化没必要在汇编代码中进行的初始化工作

4)初始化IO及中断
/boar/nocky/S3C44B0/s3c44b0.c中的board_init

5)调用一系列函数指针初始化各外设
interrupt_init (cpu/s3c44b0)
env_init
init_baudrate (lib_arm/board.c)
serial_init(cpu/s3c44b0/serial.c)
console_init(common/consol.c)
display_banner(lib_arm/board.c) 启动时显示的一些项目
dram_init( boar/nocky/S3C44B0/s3c44b0.c) 对内存的初始化,包括清零操作
display_dram_config (lib_arm/board.c) 显示内存的配置信息
flash_init (board/nocky/S3C44B0/flash.c)如果要添加新型号,可以在些文件中添加
mem_malloc_init( lib_arm/board.c)
env_relocate (common/env_common.c)
get_env_IPaddr(net/net/c)
device_init(common/device.c)
jumptable(common/exports.c)
console_init_r(common/console.c)
enable_interrupts(cpu/s3c44b0/interrupts.c)
loadaddr
main_loop // 即主程序,一个无限循环,在common/main.c中

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics