作者:侯志刚
1 准备工作
说明:在进行调整ResidentFlash容量前,首先保证在您的系统里出现了ResidentFlash,否则您应该参考其他的文章,可能是通过修改注册表的方法将ResidentFlash添加到系统中。
背景介绍:
开发板:YL2440
WinCE版本:5.0
用原厂提供的BootLoader和映像文件则显示的ResidentFlash为1.6M。
2修改的目的:
把Flash给WinCE使用,分配32M给映像文件使用,将剩下的FLASH划分26M给ResidentFlash。
3具体的修改方法:
第一步:将Flash重新分区,修改的代码如下:
在Nand.c文件中,将分区信息改为如下:
staticstruct Partition NandPart[] = {
{0,0x00040000,"boot"},//256K
{0x00040000, 0x001c0000, "kernel"}, //1.75M
{0x00200000, 0x00100000, "rootfs"}, //1M
{0x00300000, 0x03d00000, "WinCE"}, //61M
{0,0,0}
};
第二步:修改 fmd.cpp 文件:
WinCE分区有61M空间,系统映像文件占用32M,还有近 61M-32M = 29M,这里划分为26M给ResidentFlash。
该文件的路径为:SMDK2440ASrcCommonSmartmediaFmd
将START_BLOCK修改为:#define START_BLOCKNAND_BLOCK_CNT-(26*1024*1024/NAND_BLOCK_SIZE))
26就是分配给Resident Flash的大小,表示26M的意思,这个可以根据自己的情况修改,只要保证不要越界即可。
ResidentFlash 大小为什么和START_BLOCK相关?,我猜想可能是WinCE从START_BLOCK开始计算的区域都作为WinCE使用,这样 NUM_BLOCKS是系统总共的块数,假设系统共有0x1000,而START_BLOCK的值为WinCE映像文件存放的开始地址。而在次之前的区域当然就是给Resident Flash使用了。
NUM_BLOCKS - START_BLOCK = 26*1024*1024,这个也就是ResidentFlash的大小了。
(3) 修改完Bootloader后,剩下的要注意的问题就是将系统文件烧录到分区里,注意引导的分区一定要和下载的分区对应上.
修改成功后,如图示:
ARM的开发板可谓是种类繁多,每家的BootLoader也不尽相同,对于开发板这里不做评论以避免有当"托"的嫌疑。有些开发板根本不提供BootLoader源代码,对于这样的板子我认为还不要买的好,因为BootLoader也是很重要的学习内容。本人使用YL2440开发板,这块板子也有问题,比如实时时钟掉电丢失、技术支持也不太好,这一点通过他们的网站的技术解答就可以看出来,例如一个简单的修改ResidentFalsh大小的问题都没能给出具体的答复,也可能是问题过于简单不值得回答。我把我的方法公布仅给大家提供一个参考。