Leefree 发表于 2013-9-16 22:24:01

请教高手一个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);   有知道的帮忙解释一下!!!!感激不尽






Leefree 发表于 2013-9-16 22:36:44

helphelphelp   :'(

Leefree 发表于 2013-9-17 08:31:08

:dizzy::dizzy::dizzy:

Leefree 发表于 2013-9-17 08:34:12

帮帮忙啊,有人看过这段代码吗

飞凌-peacelove 发表于 2013-9-17 09:40:08

跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下

Leefree 发表于 2013-9-17 09:52:07

飞凌-peacelove 发表于 2013-9-17 09:40 static/image/common/back.gif
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下

既然这个源代码都是公开的,解释一下也可以帮助一些不懂的人多理解理解,激发一些对飞凌的热情,这么些代码肯定有些地方是自己理解不过去的,

Leefree 发表于 2013-9-17 10:05:10

飞凌-peacelove 发表于 2013-9-17 09:40 static/image/common/back.gif
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下

而且有关这个flash芯片,网上的基本没什么资源,有的话我也不会来这里了,帮帮忙吧

飞凌-路飞 发表于 2013-10-16 10:54:46

楼主您这个问题已经超出了技术支持范围内,您可以再等等看有没有网友能回答您这个问题,我们这确实没做过!抱歉
页: [1]
查看完整版本: 请教高手一个Nor flash的操作