八.linux开发之uboot移植(八)——uboot源码分析2-启动第二阶段之start_armboot函数分析2

本文详细分析了uboot启动的第二阶段,包括start_armboot函数的各个部分,如内存管理初始化、mmc初始化、环境变量重定位、控制台初始化、中断启用、设备初始化等。此外,还探讨了开发板特有的初始化步骤,如LCD和网卡的初始化,并介绍了自动更新机制。整个流程旨在为内核启动做好准备。
摘要由CSDN通过智能技术生成

接上一节:七.linux开发之uboot移植(七)——uboot源码分析2-启动第二阶段之start_armboot函数分析1

还是老规矩:有道云笔记地址:http://note.youdao.com/noteshare?id=fef34a7ee3bcdfdf7638db662564ae66&sub=69B7DF889DAF4064BF8D7852C69EE452

一.uboot启动第二阶段之start_armboot函数解析9

1、CFG_NO_FLASH

clipboard.png

(1)虽然NandFlash和NorFlash都是Flash,但是一般NandFlash会简称为Nand而不是Flash,一般讲Flash都是指的Norflash。这里2行代码是Norflash相关的。

(2)flash_init执行的是开发板中对应的NorFlash的初始化、display_flash_config打印的也是NorFlash的配置信息(Flash:
8 MB就是这里打印出来的)。

但是实际上X210中是没有Norflash的。所以着两行代码是可以去掉的(实验证明:加上CONFIG_NOFLASH宏之后编译出错,说明代码移植的不好,那个文件的包含没有被这个宏控制。于是乎移植的人就直接放这没管。)

clipboard.png

CONFIG_VFD和CONFIG_LCD是显示相关的,这个是uboot中自带的LCD显示的软件架构。但是实际上我们用LCD而没有使用uboot中设置的这套软件架构,我们自己在后面自己添加了一个LCD显示的部分。

2、mem_malloc_init

clipboard.png

(1)mem_malloc_init函数用来初始化uboot的堆管理器。

(2)uboot中自己维护了一段堆内存,肯定自己就有一套代码来管理这个堆内存。有了这些东西uboot中你也可以malloc、free这套机制来申请内存和释放内存。我们在DDR内存中给堆预留了896KB的内存。

二.uboot启动第二阶段之start_armboot函数解析10

1、开发板独有初始化:mmc初始化

clipboard.png

(1)从536到768行为开发板独有的初始化。意思是三星用一套uboot同时满足了好多个系列型号的开发板,然后在这里把不同开发板自己独有的一些初始化写到了这里。用#if条件编译配合CONFIG_xxx宏来选定特定的开发板。

(2)X210相关的配置在599行到632行。

clipboard.png

(3)mmc_initialize看名字就应该是MMC相关的一些基础的初始化,其实就是用来初始化SoC内部的SD/MMC控制器的。函数在uboot/drivers/mmc/mmc.c里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值