原创 uboot所做的一些事情

2013-9-8 16:25 1181 27 27 分类: MCU/ 嵌入式 文集: uboot

1:构建异常向量表
2:设置工作模式
3:关看门狗,关中断,初始化时钟
4:禁止cache,禁止mmu
5:初始化sdram,为代码搬迁做准备
6:搬迁代码
7:设置栈,清除bss段
8:进入start_armboot

1:使cache数据无效,和上面的4具体什么情况待分析????
2:为gd_t结构体分配空间
3:为bd_t结构体分配空间
4:依次执行这些函数(这些函数在另外sequence_init有说明)
    cpu_init,        /* 设置中断,快速中断在内存中的起始地址*/
    board_init,        /* basic board dependent setup */
    interrupt_init,        /* set up exceptions */
    env_init,        /* initialize environment */
    init_baudrate,        /* initialze baudrate settings */
    serial_init,        /* serial communications setup */
    console_init_f,        /* stage 1 init of console */
    display_banner,        /* say that we are here */
#if defined(CONFIG_DISPLAY_CPUINFO)
    print_cpuinfo,        /* display cpu info (and speed) */
#endif
#if defined(CONFIG_DISPLAY_BOARDINFO)
    checkboard,        /* display board info */
#endif
    dram_init,        /* configure available RAM banks */
    display_dram_config,

5:初始化norflash
6:初始化lcd,并分配帧缓冲区
7:分配堆空间
8:初始化nandflash
9:重定向环境变量
10:从环境变量里面读取IP地址给bd_t结构体
11:从环境变量里读mac地址给bd_t结构体
12:如果有两块网卡 读取eth1addr给结构体
13:对IIC 声卡 键盘等外设进行初始化
14:初始化跳转表
15:对控制台进行初始化
16:使能中断
17:对网卡搞一些东西
18:从环境变量获取load地址
19:从环境变量获取下载文件名称,这就是为什么下载文件的时候要改名字,因为环境变量里面已经写死了

如果两个不一样,要么改环境变量,要么改文件。
20:eth_initialize(gd->bd) //待仔细看看是干什么的
21:进入main_loop;

22:main_loop里面是一些与平台无关的初始化和判断,根据是否有键按下来进入命令交互或直接根据环境变

量bootcmd的命令来引导内核。一般bootcmd为执行bootm命令。

23:bootm命令执行函数do_bootm,进行一些校验,解压,判断操作系统类型,最后跳转到do_bootm_linux函数

中,对tag进行赋值,然后跳转到linux内核。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
27
关闭 站长推荐上一条 /3 下一条