请教高手一个Nor flash的操作
Nor Flash 的型号是JS28F320 ,4M的;FL2440的开发板,这是boot里面的源码;#include "norflash.h"
//#define out_l(v, a) (*(volatile U32 *)(a) = (v))
//#define in_l(a) (*(volatile U32 *)(a))
#define out_w(v, a) (*(volatile U16 *)(a) = (v))
#define in_w(a) (*(volatile U16 *)(a))
#define ROM_BASE 0x00000000
static U32 FlashSize;
static int ProgramBlk(U32 addr, U32 src, U32 len)
{
int ret;
U32 i;
addr += ROM_BASE;
for(i=0; i<len; i+=32)
{
int j;
do
{
out_w(0x00e8, addr); //buffer program
ret = in_w(ROM_BASE);//ReadStatus();
} while((ret&0x0080)!=0x0080); //waite for complete
out_w(0x000f, addr);
for(j=0; j<16; j++)
out_w(*(U16 *)(src+i+j*2), addr+i+j*2);
out_w(0x00d0, addr);
do {
ret = ReadStatus();
} while((ret&0x0080)!=0x0080);
ClrStatus();
if(ret&0x001e) {
printf("Program addr 0x%x Fail, status=%x\n", addr, ret);
return -1;
}
}
ReadArray();
for(i=0; i<len; i+=2)
if(in_w(addr+i)!=*(U16 *)(src+i)) {
printf("Program addr 0x%x Fail, wr=0x%x, rd=0x%x\n", addr+i, *(U16 *)(src+i), in_w(addr+i));
return -1;
}
ret = 0;//LockBlk(addr);
return ret;
}
上面的第一个for循环里,i为什么是i+=32;
第二个for循环里;为什么是j < 16 ;这个16是从哪得出来的;
还有这句是什么意思啊 out_w(0x000f, addr); 有知道的帮忙解释一下!!!!感激不尽
helphelphelp :'( :dizzy::dizzy::dizzy: 帮帮忙啊,有人看过这段代码吗 跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下 飞凌-peacelove 发表于 2013-9-17 09:40 static/image/common/back.gif
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下
既然这个源代码都是公开的,解释一下也可以帮助一些不懂的人多理解理解,激发一些对飞凌的热情,这么些代码肯定有些地方是自己理解不过去的, 飞凌-peacelove 发表于 2013-9-17 09:40 static/image/common/back.gif
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下
而且有关这个flash芯片,网上的基本没什么资源,有的话我也不会来这里了,帮帮忙吧 楼主您这个问题已经超出了技术支持范围内,您可以再等等看有没有网友能回答您这个问题,我们这确实没做过!抱歉
页:
[1]