易码技术论坛

 找回密码
 加入易码
搜索
查看: 450766|回复: 18

[求助]qiqi,怎么样管理ramb的?

[复制链接]
发表于 2005-5-6 21:51:00 | 显示全部楼层

能不能实践消除怀块呢?
发表于 2005-5-6 21:53:00 | 显示全部楼层
QIQI不是做了一个计算所有文件大小的BAS吗?
       能不能做一个消除坏文件的程序呢,,,期待哦!
发表于 2005-5-7 15:05:00 | 显示全部楼层
呵呵~想法很美好,不过这样操作有一定的危险性的.首先,物理坏块是不能修复的.
如果你修改了RAMB,系统如果把坏块当作正常块写入,这样会使坏块蔓延开的!
但是,如果是软件计算错误产生的逻辑坏块是可以修复的(不过发生这个的概率好象不高啊?)
发表于 2005-5-7 16:08:00 | 显示全部楼层
逻辑坏块...
可以先读取文件占用块再把其他块擦除,是个好方法
发表于 2005-5-10 18:45:00 | 显示全部楼层
那QIQI,可以实现吗?
发表于 2005-5-13 13:37:00 | 显示全部楼层
呵呵,系统不可以识别硬件问题还是软件问题(虚拟坏区)吗???
QIQI能不能做一个清除虚拟坏区的软件....?
发表于 2005-5-14 22:19:00 | 显示全部楼层
谢谢你了,QIQI高手!
不过我知道标志BadBlockTable罢了,"虚拟坏区"叫起来顺溜...呵呵
系统只有在写NAND时发现返回硬件出错时才会去标志BadBlockTable
然后系统根据这个表来更新RAMB里的逻辑区转物理区表
基本上是没有擦除什么虚拟坏区的必要的
垃圾文件通常是由于GFFS的INODE管理机制有问题而导致出现了未能清除掉的脏文件


我觉得很有必要....呵呵
发表于 2005-5-16 15:17:00 | 显示全部楼层
好像没什么必要,不过几个扇区罢了,占空间又不多!
发表于 2005-5-16 20:06:00 | 显示全部楼层
可是我觉得很有必要啊!
     我算了一下,占用了我闪存2M!       我不想格式化哦
willpk2002 该用户已被删除
发表于 2005-5-16 21:48:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2005-5-17 11:02:00 | 显示全部楼层
2M?我还是看看自己的先!
发表于 2005-5-17 12:59:00 | 显示全部楼层
呵呵,真的是2M啊....
因为我一个文件本来删不掉了,后来不见了....当然是占用空间的...............
                                   惨哦,不想格式化,找QIQI,哈哈
发表于 2006-5-26 21:11:00 | 显示全部楼层
RAMB能直接编辑吗
发表于 2006-5-27 13:48:00 | 显示全部楼层
ramb是系统作为坏区表等信息存放处。

既然是ram,应该就是可以编辑的,无非是进行一些擦,写的操作来实现。

不知道,不知道,瞎说的!!


[em01][em01]

[此贴子已经被作者于2006-5-30 9:23:47编辑过]

发表于 2006-5-27 15:55:00 | 显示全部楼层
我看很危险...
发表于 2006-5-27 19:43:00 | 显示全部楼层
并非是擦写什么的操作``ram就是直接读写了

位置在$2000-$2fff

读写前先

lda #$54

sta $0d

读写完了再

lda #$50

sta $0d

就可以了``

只是ramb只是坏区清单的一个映射表(即Phy to log,gfffs的source code里称为phy2log table)

修改它并没有太大作用(想修改为正常只要把按正常顺序排列下对应表就可以了)

想要真正使坏区可读写必须更改super block里面的bad block table

SUPER BLOCK在NOR FLASH里面,位置不定,根据$087b(NC2600)和$087c后面的一个表来定位

不过写坏区可能导致坏区扩散



这里说的是物理坏区



像mrzenix那样的坏区(GFFFS最多只允许876KB的坏区,超过就麻烦了,实际上一般也很难出这么多坏区,除非你改了bad block table使坏区可写然后使劲写坏区使其扩散``)使由于文件系统BUG导致的,可自己编辑利用表和INODE表来修复之```


发表于 2006-5-27 22:12:00 | 显示全部楼层
坏区表貌似是2个区块为单位的

比如我的是

0000020004000600

08000a000c000e00

...........
发表于 2006-5-31 12:01:00 | 显示全部楼层
以下是引用Mrzeng在2005-5-13 13:37:00的发言:[BR]呵呵,系统不可以识别硬件问题还是软件问题(虚拟坏区)吗???
QIQI能不能做一个清除虚拟坏区的软件....?


PC上都有这样的软件,不知道 在wqx能否实现
 楼主| 发表于 2005-5-6 13:32:17 | 显示全部楼层 |阅读模式
系统是如何识别坏块的?怎样使写入ramb的信息不被系统还原?

我把所有块正常的信息写入ramb,空间整理或reset后又还原了。以下是代码,应该没有问题。

lda $00

pha

lda $0a

pha

lda $0d

pha

and #$f0

ora #$04

sta $0d

lda #$00

sta $40

lda #$41

sta $40

lda #$ff

sta $42

lda #$48

sta $43

lda #$00

sta $44

lda #$20

sta $45

jsr send

pla

sta $0d

pla

sta $0a

pla

sta $00

rts

send:ldy #$00

D:lda ($40),y

sta ($44),y

lda $40

cmp $42

bne A

lda $41

cmp $43

bne A

rts

A:inc $40

bne B

inc $41

B:inc $44

bne C

inc $45

C:jmp D

$4100开始的数据是:

00 00 02 00 04 00 06 00

.....

f8 07 fa 07 fc 07 fe 07

表示没有坏块,物理地址就是逻辑地址。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-23 14:49 , Processed in 0.013630 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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