9437|20

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

6410 MLC 如何才能从nandflash启动 [复制链接]

各位老大,最近我刚开始研究6410的板子,手头上现有三星6410 PM 090416的BSP包,Nandflash型号是K9GAG08U0M 2G,用PM的包现在可以采用iRom方式从SD卡启动,但下载stepldr和Eboot不能从Nandflash启动,有谁知道都会有什么原因导致出现这个情况,我曾怀疑是烧写时校验码不对,但又不知道该怎么去判断,有几个问题请熟悉的人帮忙确认一下

1。PM包中whimory里用NAND_Steploader_Write()函数烧写stepldr,看到有烧写进去,但读出来的ECC校验布局好像不对,三星PM文档中MLC spare只有4Bit的校验方式的布局,8Bit ECC的校验格式应该是怎样的?
   4Bit每个Sector(512Kbyte)生成8byte ECC,8Bit是生成的有13Byte

2。MLC写stepldr/block0image需不需要分层写?
   BSP_IROMBOOT = 1 时用NAND_Steploader_Write写入没有分层,stepldr直接写了8个Sector
   BSP_IROMBOOT =   时用NAND_Write写入有分层,分别写入block0和block1中的头4个Sector

3。看到三星文档上有介绍在写spare时好像还需要对其自身写入内容进行自校验,还要采用24Byte方式,有没有必要?

最新回复

终于搞定了,兜了一大圈主要原因还是NBL1.bib的配置问题,PM版本自带的需要参照stepldr的修改,有一部分自己画蛇添足结果弄错了,另外就是被PB给耍了,不定什么时候编译就好使了,让各给见笑了,谢谢各位的支援。  详情 回复 发表于 2010-2-22 13:53
点赞 关注

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
要设置NAND启动要将相关设置启动模式及设置NAND访问PAGE页大小、地址周期等几个管脚进行硬件上的拉高或者拉低,这样系统启动的时候才能正确地从NAND中读取到stepldr。
1、CPU启动时从NAND中读取的8K stepstone时似乎是没有进行ECC校验的,所以前8K内容如果出现ECC不对应该没有关系,除非写的时候就没写成功,或者写进去的数据是错的。
2、你的分层是指two plane programe吗?stepldr通常都不采用这种方式。
3、如果spare空间够大,从eboot开始的代码通常都会对spare区的数据也进行ECC校验,进一步保证数据的正确性。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不知道启动模式设定是指那块,我对这些都不是很熟悉,是指OM[4:0]的设置么,根据K9GAG08U0M,1Page是4096+128,5-Cycle选的应该是0011X;
按照你说的读取8K stepstone时不需要校验,那是不是我写stepldr的地址不对,我是直接对block0的0地址开始写的;

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
帮顶下,

MARK,学习下。
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 
OM[4..0]应该为00010,
1. 8bit ECC是每一个secotr生成13Byte没错。在128byte的Spare区的布局就是8个sector的校验码8×13,后面补0xFF
2. Block0不需要分层操作,直接写Block0的前面8个sector即可。
3. block0采用8bit ECC校验,没有对spare区进行校验。因为前面2个page是直接由CPU读取,不需要ECC校验。后面4bit ECC的代码,一般有对Spare区的校验,如文档所写的
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

6
 
PM包里默认的就是写8*13个校验码,后面也是补足0xFF,写进去的ECC校验码我也确认过,OM[4:0]也设置过0x0010,但就是启不来,一点反应都没有.

NBL1和NBL2生成的Block0image.nb0,我也下载试过同样也没有反应, 按我的理解NBL1应该相当于stepldr放入page0和page1,NBL2从第6page开始写入,NBL2用什么方式校验8Bit么?PM包里默认block0image.nb0同样是用NAND_Steploader_Write写入,也就是8Bit,而且也没有分层,有没有问题?
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(初级)

7
 
还有一点我比较奇怪,OM[4:0]设置成x111x,GPN[15:13]无论设置成什么,只要SD卡在就能起来,这个现象正常么
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
LZ的GPC[5..7]为011,没问题吧。

NBL1的位置没错,NBL2的位置要看你NBL1中代码的设置了。
另外有加调试信息打印吗?NBL1是否有起来???

你可以先调一下NBL1看看:
1. 烧写进入Nand以后,再读出来看看,Block0的page0和Page1中这8k数据是否跟烧入的一样?

2. 上电后用AXD之类Jtag工具看看RAM地址为0-2000的代码(CPU自动加载的地方)是否跟Block0image.nb0前面两个page一样??如果一样,说明已经有加载进去了。并且是nand启动。

 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
我在stepldr中加了亮灯,出现了另外的问题

1。加载stepldr.nb0,startup.s之一执行到bl main之后就没有反应了

2。加载stepldr.bin或NBL1.nb0直接就挂了
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
你的stepldr.nb0有效代码有没有超过8K?
 
 
 

回复

110

帖子

0

TA的资源

一粒金砂(初级)

11
 
NAND_Steploader_Write()一次只能写一个page,楼主确认有烧全吗?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

12
 
谢谢提醒,我本来奇怪为什么我的stepldr.nbx生成到stepldr.nb3,我试着将stepldr.bib中COMPRESSION = ON,可以运行到main(),看到"Launch Eboot...";目前又卡到找不到eboot,有什么原因么,我的LOAD_ADDRESS_PHYSICAL=IMAGE_EBOOT_PA_START,按正常应该没有问题才对,还有几个问题需请教一下

1.我看文档上写6410好像支持stepstone 8K,为什么我设置 ROMSIZE = 00002000时启动一点反应也没有;控制stepldr的生成大小主要是那部分控制?我的stepldr.bib如下
    STEPLDR     00000000    00002000    RAMIMAGE        ; Image    : 8 KB (in Stepping Stone)
    RAM         500F0000    0000C000    RAM             ; RAM      : 48 KB
    STACK       500FC000    00004000    RESERVED        ; Stack    : 16 KB (sharing with Eboot)
    ROMSTART = 00000000
    ROMWIDTH = 32
    ROMSIZE = 00001000

2.我只能下载eboot.bin,而且并未看到在eboot中加的亮灯,下载地址80030000,偏移为0,用的仍然是PM包里EBOOT.WHIMORY生成的eboot文件;

3.我的NBL1仍然没有看到什么反应,有没有什么建议?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

13
 
学习学习,呵呵。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 11 楼 jyoshou 的回复:
COMPRESSION =ON,可以运行到main(),看到"Launch Eboot...";
[/quote]
可以看到這句話,說明NBL2已經結束了。開始跳轉到EBOOT,如果Eboot沒有起來,是不是你在NAND中讀取Eboot的位置錯誤??

[quote]引用 11 楼 jyoshou 的回复:
为什么我设置 ROMSIZE = 00002000时启动一点反应也没有;控制stepldr的生成大小主要是那部分控制?

ROMSIZE没错,你设置以后可以看一下NBL1.nb0文件,文件大小有改变,NB0文件才是最原始的image文件。

 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
烧写EBOOT.NB0到NAND中我试过可以,BIN却不行,

有空帮我回答一下这个问题:http://topic.eeworld.net/u/20100209/20/44df0fe6-863f-4972-b3c5-b838d59fa4f3.html?52048
如何烧写0block做nand的引导启动,是否需要ecc校验方式来烧写,还是直接烧?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

16
 
我这几天也在搞NAND启动,可以加我qq281453291 一起研究。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

17
 
帮顶下,

MARK,学习下。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

18
 
可能是因为stepldr是拿FMD版本改的,读eboot时的地址顺序不对,拿NBL1生成文件下载进去后出现进入不了main函数,NBL1生成3个文件.nb1--.nb3超过8k,nbl1.bib中COMPRESSION = ON,求教怎样才能把它压缩到8k
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

19
 
学习一下,没弄过。

mark
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

20
 
只是玩玩SLC的NAND FLASH.
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表