5781|12

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教:关于NBOOT中一段代码的分析 [复制链接]

5
        ; Valid block sanity check
        ldr                r0, =NAND_NUM_BLOCKS
        cmp                r0, r7
        bls                LoopForever       
        mov                r0, r7
        bl                IsBlockGood
        tst                r0, #1
        addeq        r7, r7, #1
        beq                %b5


请问上面的程序怎么结束?我看怎么象是死循环?

最新回复

程序是在找第一个Good的块 如果找到了就跳出 遍历NAND_NUM_BLOCKS个块后仍然找不到Good的块就死循环  详情 回复 发表于 2008-9-4 09:39
点赞 关注

回复
举报

56

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
        ; load from first good block after block 0
        mov                r7, #1
5
        ; Valid block sanity check
        ldr                r0, =NAND_NUM_BLOCKS
        cmp                r0, r7
        bls                LoopForever       
        mov                r0, r7
        bl                IsBlockGood
        tst                r0, #1
        addeq        r7, r7, #1
        beq                %b5
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
;  FUNCTION:                IsBlockGood
;
;  DESCRIPTION:                Checks if a block is good by checking the bad
;                                        block indicators of first 2 sectors of block.
;
;  PARAMETERS:               
;                                        r0 - block to test
;
;  RETURNS:                        r0 - 0 for bad block
;                                r0 - 1 for good block
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
bls LoopForever ????贴详细点平台啊,什么编译器啊,都表达详细点
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果IsBlockGood 返回非0就出来了
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

6
 
ARM assembly!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
当NAND_NUM_BLOCKS 块检查完成之后,就跳转到LoopForever里了?!!

还有如果有个坏块,程序就死循环了,费解
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
上面说错了,如果有坏块,程序就继续执行,也就是说通过这段代码继续向下执行。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
LoopForever 就是死循环
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 4 楼 hhyh612 的回复:
如果IsBlockGood 返回非0就出来了
返回0出来还是返回1出来?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 iwillfy2007 的回复:
上面说错了,如果有坏块,程序就继续执行,也就是说通过这段代码继续向下执行。

我觉得你说的是对的,但是我不明白,如果一块FLASH没有坏块,那么程序就在这里一直循环??
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
坏块的分类
总体上,坏块可以分为两大类
(1) 固有坏块
这是生产过程中产生的坏块,一般芯片原厂都会在出厂时都会将坏块第一个page的spare area的第6个byte标记为不等于0xff的值。
(2) 使用坏块
这是在NAND Flash使用过程中,如果Block Erase或者Page Program错误,就可以简单地将这个块作为坏块来处理,这个时候需要把坏块标记起来。为了和固有坏块信息保持一致,将新发现的坏块的第一个page的spare area的第6个Byte标记为非0xff的值。

我在网上搜到的信息,难道NANDFLASH都有固有的坏快?希望明白的人解释下...
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
程序是在找第一个Good的块
如果找到了就跳出
遍历NAND_NUM_BLOCKS个块后仍然找不到Good的块就死循环
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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