8591|19

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于优龙2440开发板K9F1208flash换成K9K8G08flash驱动得问题 [复制链接]

100分寻高人指点:我板子是优龙得2440开发板,现在板子上得flash是K9K8G08修改flash驱动得时候就出现了麻烦:
一:关于可行性:有朋友提出2440不支持MLC结构FLASH(K9K8G08是MLC结构)说要用软件方法解决,望指教
二:修改nand.c得时候有几个地方不太明白:
第一处:static U32 WaitNFBusy(void)        // R/B 未接好?
{
        U8 stat;
       
        WrNFCmd(QUERYCMD);
        do {
                stat = RdNFDat();
                //printf("%x\n", stat);
        }while(!(stat&0x40));                              //0x40这个数不清楚什么意思??
        WrNFCmd(READCMD0);
        return stat&1;
}
第二处:
InitEcc();        //reset mecc and secc
        MEccUnlock();
        for(i=0; i<2048; i++)
                WrNFDat(buf);
        MEccLock();
       
        mecc = RdNFMEcc();
               
        tmp[0] = mecc&0xff;
    tmp[1] = (mecc>>8)&0xff;
    tmp[2] = (mecc>>16)&0xff;
    tmp[3] = (mecc>>24)&0xff;
    tmp[5] = 0xff;        //mark good block
         if(fs_yaffs==1){
                 for(i=2048;i<2112;i++)
                 {
                         WrNFDat(buf);
                 }
               
         }else{   
               SEccUnlock();
                WrNFDat(tmp[0]);
                WrNFDat(tmp[1]);
                WrNFDat(tmp[2]);
                WrNFDat(tmp[3]);
                SEccLock();
                WrNFDat(tmp[4]);
                WrNFDat(tmp[5]);
         }这段说是校验用得在writepage函数里有没有高手能帮我稍微解说一下这段程序。
第三处:
      if((addr&0xff)==0x17) stat = 1;        //just for test bad block这里0x17这个数怎么确定得代表什么意思
第四处:if((i==0x9873)||(i==0xec75))       
                NandAddr = 0;
        else if(i==0xec76)
                NandAddr = 1;这里两个数0xec75和0xec76都是k9f1208得怎么解释
第五处;int search_params(void)这个函数要返回0才对我总是返回-1在调用函数里就出现fail to found params这个具体是什么原因啊?
第六处:现在是在2440init.s里得问题了:
       A: readnandpage这段汇编里有这么几句:
        mov      r0,#0                        ;for(i=0; i<2048; i++)
1
        ldrb     r1,[r5,#0x10]        ;buf = RdNFDat()
        strb     r1,[r4,r0]
        add      r0,r0,#1
        bic      r0,r0,#0x10000   ;这里这个10000代表得是什么啊,我总是搞不懂
        ;cmp      r0,#0x200
        cmp                 r0,#0x800
        bcc      %B1
B:nand_boot_beg这段代码里有这么句
        cmp        r8, #256                   ;这里这个256表示什么啊?
        bcc        %B2
最后一个问题:我用h-jatag仿真基本没问题,但是我把程序烧到flash串口始终打印不出信息:我就用点灯得办法跟踪发现程序到了 [ :LNOT:THUMBCODE
                bl        Main        ;Don't use main() because ......
                b        .
    ]后反而跳到这里去了$HandlerLabel
        sub        sp,sp,#4        ;decrement sp(to store jump address)
        stmfd        sp!,{r0}        ;PUSH the work register to stack(lr does't push because it return to original address)
        ldr     r0,=$HandleLabel;load the address of HandleXXX to r0
        ldr     r0,[r0]         ;load the contents(service routine start address) of HandleXXX
        str     r0,[sp,#4]      ;store the contents(ISR) of HandleXXX to stack
        ldmfd   sp!,{r0,pc}     ;POP the work register and pc(jump to ISR)
        MEND
望大侠能帮我解决,可惜最多只能给100要不我全部奉送。

最新回复

各位兄弟哪个有优龙光盘的资料,能给兄弟拷贝一份!  详情 回复 发表于 2011-10-17 17:40
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
多看芯片的DATASHEET
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
stat = RdNFDat();
//printf("%x\n", stat);
}while(!(stat&0x40));                              //0x40这个数不清楚什么意思??
这的的话先看看RdNFDat();是什么东西,stat&0x40)这句话其实就是STAT&01000000就是把STAT的第二位取出来吗。看看DATASHEET他代表什么
今天比较忙,一会儿帮你看其它的吧。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主的flash是MLC的
建议楼主把原来的拆了,引脚都是一样的。换成同样大小的SLC的,不然,我真觉得你会被搞死
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
今天才晓得公司还有网吧可以查资料:我把优龙原来的用1208flash的bootloader里的nand.c换成我修改后适合K9K8G08的nand.c烧到板子上能打印消息,现在估计问题就在init.s了,还有今天我发现老师给的那个DATASHEET根本不是K9K8G08的,是K9F4G08的。至于gooogleman大侠说的换芯片这个我不能做主啊,
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
楼主还是学生?读研究生?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
刚毕业,参加工作不到1个月,今天中午吃饭的时候斗胆给老师说了关于2440不支持MLC结构flash的事情,老师说可以换芯片,据我初步估计是换成K9F4G08U0M 1G大小的
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
哦,声明下虽然芯片要换但是本帖依然有效,那个板子我就当试验用。100分依然给!!!
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

9
 
MLC的校验位要求比SLC多,所以硬件的校验2440肯定是无法支持;当然,你可以考虑用软件来做校验,但是据说效率很低,基本上无法使用。

简单的就是说2440确实不能支持MLC
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
学习一下。还不知道什么是SLC,什么是MLC呢!
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习一下
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
能简单给我讲解下下面这段程序(校验)吗?我看了好久就是看不懂
        mecc = RdNFMEcc();
               
        tmp[0] = mecc&0xff;
    tmp[1] = (mecc>>8)&0xff;
    tmp[2] = (mecc>>16)&0xff;
    tmp[3] = (mecc>>24)&0xff;
    tmp[5] = 0xff;        //mark good block
         if(fs_yaffs==1){
                 for(i=2048;i<2112;i++)
                 {
                         WrNFDat(buf);
                 }
               
         }else{   
               SEccUnlock();
                WrNFDat(tmp[0]);
                WrNFDat(tmp[1]);
                WrNFDat(tmp[2]);
                WrNFDat(tmp[3]);
                SEccLock();
                WrNFDat(tmp[4]);
                WrNFDat(tmp[5]);
         }

期待拿分高手!^_^
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

13
 
stat = RdNFDat();
//printf("%x\n", stat);
}while(!(stat&0x40));                              //0x40这个数不清楚什么意思??
这的的话先看看RdNFDat();是什么东西,stat&0x40)这句话其实就是STAT&01000000就是把STAT的第二位取出来吗。看看DATASHEET他代表什么
今天比较忙,一会儿帮你看其它的吧。

___________________________________________________________________________________________________________________________________


谢谢,期待中!我不知道怎么把切下来用这笨办法^_^
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
up
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
关于问题六得256代表什么我已经在gooogleman大侠得帖子得到答案。原来是读256页,按512k/page,就是读128k,在这里是2k/page那么就是读512k了,应该改成64吧
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

16
 
重大错误纠正:我得那个flash不是mlc结构得:k9g得才是mlc结构。大侠们请赐教啊!!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

17
 
大侠帮帮啊
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

18
 
一个字,乱
自己先把问题搞搞清楚好不好
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

19
 
2443支持MLC ECC,但需要改的地方太多了,建议你还是用SLC的算了,反正不搞产品,不用计算成本。
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

20
 
各位兄弟哪个有优龙光盘的资料,能给兄弟拷贝一份!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表