嵌入式爱好者

查看: 4242|回复: 7

请教高手一个Nor flash的操作

[复制链接]

5

主题

21

帖子

30

积分

扫一扫,手机访问本帖
发表于 2013-9-16 22:24:01 | 显示全部楼层 |阅读模式
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);   有知道的帮忙解释一下!!!!感激不尽






回复

使用道具 举报

5

主题

21

帖子

30

积分

 楼主| 发表于 2013-9-16 22:36:44 | 显示全部楼层
help  help  help   :'(
点评回复 支持 反对

使用道具 举报

5

主题

21

帖子

30

积分

 楼主| 发表于 2013-9-17 08:31:08 | 显示全部楼层
:dizzy::dizzy::dizzy:
点评回复 支持 反对

使用道具 举报

5

主题

21

帖子

30

积分

 楼主| 发表于 2013-9-17 08:34:12 | 显示全部楼层
帮帮忙啊,有人看过这段代码吗
点评回复 支持 反对

使用道具 举报

0

主题

972

帖子

900

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2013-9-17 09:40:08 | 显示全部楼层
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下
点评回复 支持 反对

使用道具 举报

5

主题

21

帖子

30

积分

 楼主| 发表于 2013-9-17 09:52:07 | 显示全部楼层
飞凌-peacelove 发表于 2013-9-17 09:40
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下

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

使用道具 举报

5

主题

21

帖子

30

积分

 楼主| 发表于 2013-9-17 10:05:10 | 显示全部楼层
飞凌-peacelove 发表于 2013-9-17 09:40
跟定义的U32和U16的参数类型是有关的,关于代码的讲解还是不太好说的,可以将不懂的语句google一下

而且有关这个flash芯片,网上的基本没什么资源,有的话我也不会来这里了,帮帮忙吧
点评回复 支持 反对

使用道具 举报

110

主题

1358

帖子

1443

积分

A40i/T3/T507/T527通行证i.MX6Q通行证i.MX6UL通行证i.MX8MM通行证i.MX8MP通行证RK3568通行证RK3588通行证RK3399通行证LS1028A通行证G2L通行证LS1012A通行证LS1043A\46A通行证TCU通行证FDU产品通行证FCU1401通行证FCU1301通行证FCU11xx通行证FCU1201通行证FCU2201通行证FCU2301/FCU2302通行证FCU2401通行证5G转接卡通行证FCU3001通行证AM5718通行证Hi3519A通信证AM335x通行证i.MX RT通行证XX18通行证AM62x资料下载FDU070K02\FDU101K02通行证i.MX9352通行证

发表于 2013-10-16 10:54:46 | 显示全部楼层
楼主您这个问题已经超出了技术支持范围内,您可以再等等看有没有网友能回答您这个问题,我们这确实没做过!抱歉
该会员没有填写今日想说内容.
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-22 14:45

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表