U-Boot中初始化序列的说明

http://www.360doc.com/content/12/0825/03/7775902_232197662.shtml


在函数中board_init_f()中,进行了一系列的初始化,主要通过调用初始化序列中的函数来实现。

初始化序列定义如下,这里只留下了我用到的初始化函数:

init_fnc_t *init_sequence[] = {
get_clocks,  
init_timebase,
env_init,
init_baudrate,
serial_init,
console_init_f,
display_options,
checkcpu,
checkboard,
init_func_i2c,
init_func_ram,
NULL,   /* Terminate this list */
};

下面逐个对这些函数进行说明:

get_clocks在文件./include/common.h中定义,在文件./cpu/mpc824x/Speed.c中实现,用于设置global_data中的gd->cpu_clk和gd->bus_clk。

init_timebase在文件./include/common.h中定义,在文件./lib_ppc/time.c中实现,用于设置Time Base寄存器TBU和TBL,将其都设置成0。

env_init在文件./include/common.h中定义,在文件./common/Env_flash.c中实现,用于设置global_data中的gd->env_addr和gd->env_valid。

init_baudrate在文件./lib_ppc/board.c中定义和实现,用于设置global_data中的gd->baudrate。

serial_init在文件./include/common.h中定义,在文件./drivers/serial.c中实现,通过调用函数 NS16550_init,对UART相关的寄存器进行初始化。NS16550_init在文件./include/ns16550.h中定义,在文件. /drivers/ns16550.c中实现。

console_init_f在文件./include/common.h中定义,在文件./common/console.c中实现,用于设置global_data中的gd->have_console。

display_options在文件./include/common.h中定义,在文件./lib_generic/display_options.c中实现,用于打印版本信息version_string。

checkcpu在文件./include/common.h中定义,在文件./cpu/mpc824x/cpu.c中实现,用于检测并打印CPU版本、CPU时钟频率、Cache大小等信息。

checkboard在文件./include/common.h中定义,在文件. /board/sandpoint/sandpoint.c中实现,用于打印板子名称等信息。

init_func_i2c在文件./include/common.h中定义和实现。其中调用i2c_ini,用于初始化I2C单元相关的寄存器。 i2c_init在文件./include/i2c.h中定义,在文件./cpu/mpc824x/drivers/i2c/i2c.c中实现。

init_func_ram在文件./lib_ppc/board.c中定义和实现。其中调用initdram,initdram在文件. /include/common.h中定义,在文件. /board/sandpoint/sandpoint.c中实现。Initdram又调用get_ram_size,get_ram_size在在文 件./include/common.h中定义,在文件. /common/memsize.c中实现,用于检测实际可用RAM的大小。【get_ram_size函数首先将特定的数据分别写入地址 0,1,2,4,8,……处,然后依次读出。如果读出的数据和之前写入的数据一致,则可用内存大小倍增,如果不一致,则说明该内存位置不可用,以后的就不 再检测了。这样可用的内存大小就是(0,1,2,4,8,……)×sizeof(long)中的某一个值。之后,init_func_ram打印可用 RAM大小】【此为UBOOT检测内存大小的原理】。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值