U-BOOT源码分析及移植(13)

邂逅黄昏 分享 2021-06-02 下载文档

U-BOOT源码分析及移植

如flash_info_t flash_info[CFG_MAX_FLASH_BANKS];记录nor flash的信息。 nand_info_t nand_info[CFG_MAX_NAND_DEVICE]; nand flash块设备信息

3、u-boot重定位后的内存分布:

对于smdk2410,RAM范围从0x30000000~0x34000000. u-boot占用高端内存区。从高地址到低地址内存分配如下:

显示缓冲区 (.bss_end~34000000)

u-boot(bss,data,text) (33f00000~.bss_end)

heap(for malloc)

gd(global data)

bd(board data)

stack

....

nor flash (0~2M)

三、u-boot的重要细节。

主要分析流程中各函数的功能。按启动顺序罗列一下启动函数执行细节。按照函数start_armboot流程进行分析:

1)DECLARE_GLOBAL_DATA_PTR;

这个宏定义在include/global_data.h中:

#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8") 声明一个寄存器变量 gd 占用r8。这个宏在所有需要引用全局数据指针gd_t *gd的源码中都有申明。

这个申明也避免编译器把r8分配给其它的变量. 所以gd就是r8,这个指针变量不占用内存。

2)gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));

对全局数据区进行地址分配,_armboot_start为0x3f000000,CFG_MALLOC_LEN是堆大小+环境数据区大小,config/smdk2410.h中CFG_MALLOC_LEN大小定义为192KB.


U-BOOT源码分析及移植(13).doc 将本文的Word文档下载到电脑

下一篇:CSS相关学习内容总结

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx