Bootstrap之关键代码分析及U-Boot实现Dataflash分区

2012年4月7日 0 条评论 1.63k 次阅读 1 人点赞

U-Boot启动信息

Area 0+ Area 1就是Bootstrap的分区,其中Area 0规定了Bootstrap的大小,Area 1规定了参数存放的地址及其大小范围, Area 2是U-boot所在的空间范围,最后一个用作他用,本文所使用的板子是从dataflash启动,本文把第四个分区作为内核分区使用。这部分的定义和U-boot中相应部分的定义相关连。

代码分析

A.解压完下载的AT91Bootstap后打开头文件:/board/at91sam9263ek/dataflash/at91sam9263ek.h,默认代码:

其中:

指的U-boot在Dataflash中的地址,因为Bootstrap-1.16和U-boot-2010.06对Dataflash的分区定义匹配,可以看U-boot中相关代码。

指定了U-boot分区的最大容量。结合文章头部的启动信息可以看到:U-boot最大不能超过192K,确实U-boot-1.1.5编译完以后175k左右完全可以,但是经过最2010.06版本进行编译发现U-boot居然超过200k,当然我们的分区也是不能用的。想要使用新版本的Bootstrap和U-boot需要对Dataflash重新进行分区。

最后跳入的内存地址,需要和U-boot中TEXT_BASE =保持一致。TEXT_BASE段位于目录:u-boot-2010.06/board/atmel/at91sam9263ek/config.mk中,在编译Bootsrap的时候需要修改Makefile中的交叉编译器的路径。

B.在U-boot中,对Dataflash进行分区的代码在board/atmel/at91sam9263ek/partition.c中规定,默认代码:

修改以后就可以即可实现dataflash的分区设置。

勇敢,和生活的艰难无关。

文章评论(0)