- static int ProgramBlk(U32 addr, U32 src, U32 len)//ProgramBlk(U32 0x20000, U32 dat[0x80] , 0x20000)
- {
- 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);
- 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;
- }
这个是FL2440的开发板上JS28F320 nor flash的代码;;
有几点疑问,烦请各位帮忙解决一下;
1.第一个for循环里,i += 32;是怎么来的;
2.第二个for循环里,j 为什么循环16次;
3.out_w(0x000f, addr);这条语句是什么意思
|