能不能实践消除怀块呢?
QIQI不是做了一个计算所有文件大小的BAS吗?
能不能做一个消除坏文件的程序呢,,,期待哦!
呵呵~想法很美好,不过这样操作有一定的危险性的.首先,物理坏块是不能修复的.
如果你修改了RAMB,系统如果把坏块当作正常块写入,这样会使坏块蔓延开的!
但是,如果是软件计算错误产生的逻辑坏块是可以修复的(不过发生这个的概率好象不高啊?)
逻辑坏块...
可以先读取文件占用块再把其他块擦除,是个好方法
那QIQI,可以实现吗? 呵呵,系统不可以识别硬件问题还是软件问题(虚拟坏区)吗???
QIQI能不能做一个清除虚拟坏区的软件....?
谢谢你了,QIQI高手!
不过我知道标志BadBlockTable罢了,"虚拟坏区"叫起来顺溜...呵呵
系统只有在写NAND时发现返回硬件出错时才会去标志BadBlockTable
然后系统根据这个表来更新RAMB里的逻辑区转物理区表
基本上是没有擦除什么虚拟坏区的必要的
垃圾文件通常是由于GFFS的INODE管理机制有问题而导致出现了未能清除掉的脏文件
我觉得很有必要....呵呵
好像没什么必要,不过几个扇区罢了,占空间又不多! 可是我觉得很有必要啊!
我算了一下,占用了我闪存2M! 我不想格式化哦
2M?我还是看看自己的先! 呵呵,真的是2M啊....
因为我一个文件本来删不掉了,后来不见了....当然是占用空间的...............
惨哦,不想格式化,找QIQI,哈哈
RAMB能直接编辑吗 ramb是系统作为坏区表等信息存放处。
既然是ram,应该就是可以编辑的,无非是进行一些擦,写的操作来实现。
不知道,不知道,瞎说的!!
[此贴子已经被作者于2006-5-30 9:23:47编辑过]
我看很危险...
并非是擦写什么的操作``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表来修复之```
坏区表貌似是2个区块为单位的
比如我的是
0000020004000600
08000a000c000e00
...........
以下是引用Mrzeng在2005-5-13 13:37:00的发言:呵呵,系统不可以识别硬件问题还是软件问题(虚拟坏区)吗???
QIQI能不能做一个清除虚拟坏区的软件....?
PC上都有这样的软件,不知道 在wqx能否实现
[求助]qiqi,怎么样管理ramb的?
系统是如何识别坏块的?怎样使写入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
表示没有坏块,物理地址就是逻辑地址。
页:
[1]