您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

Armboot在EV40评估板上的移植

时间:2007-1-20栏目:电子通信论文

EV40使用的Flash是Fujitsu MBM29LV160TE。它规定,一个存储体上有35个扇区s0~s34;s0~s30大小为64KB(0x10000),s31大小为32KB,s32~s33大小为8KB,s34大小为16KB。

具体实现6个命令序列:

typedef volatile unsigned short flash_word;

#define CFG_FLASH_BASE 0x100000

flash_word *flash_address=CFG_FLASH_BASE,*s_address;

s_address=擦除扇区的起始地址;

*(flash_address+0x555)=0xAA;/*命令1*/

*(flash_address+0x2AA)=0x55;/*命令2*/

*(flash_address+0x555)=0x80;/*命令3*/

*(flash_address+0x555)=0xAA;/*命令4*/

*(flash_address+0x2AA)=0x55;/*命令5*/

*s_address=0x30; /*命令6*/

//扇区的擦除需要时间,擦除成功的标志是*s_address==0xFFFF

while((*s_address!=0xFFFF)&&(i++<1000000));

//*若超过

if(i>=1000000){

return ERR_TIMOUT;

}

4.2 Flash写入

写入以字(2字节)为单位,地址要字对齐。具体实现为4个命令序列:

s_sddress=写入处的起始地址(偶地址);

*(flash_address+0x555)=0xAA; /*命令1*/

*(flash_address+0x2AA)=0x55; /*命令2*/

*(flash_address+0x555)=0xA0; /*命令3*/

*s_address=data; /*命令4;data为欲写入数据,要求是flash_word类型*/

//扇区的写入需要时间,写入成功的标志是*s_address==data

while((*s_address!=data)&&(i++<100000));

//*若超时

if(i>=100000){

return ERR_TIMOUT;

}

结语

到此为止,移植可以告一段落了,如果有已经修改好的uClinux内核文件,可以试试使用Armboot(源码见网站http://www.fwsir.com收集整理),让它来下载并引导内核。还有一点须提醒读者注意,Armboot官方网站使用arm-linux-gcc编译。如果在写Flash时遇到问题(高字节和低字节内容相同),试试arm-elf-gcc suite。

上一页  [1] [2] [3] [4] [5] [6] 下一页

下页更精彩:1 2 3 4 下一页