易码技术论坛

 找回密码
 加入易码
搜索
查看: 148585|回复: 6

ECC算法?

[复制链接]
发表于 2006-4-8 09:28:00 | 显示全部楼层
我想TC800的校验算法也是这样的,
发表于 2006-4-8 13:47:00 | 显示全部楼层
这有什么用呢??[em01][em01][em07]
发表于 2006-4-8 14:57:00 | 显示全部楼层
ecc算法可以自己反汇编 int $0601,不过令人吐血的长,或者加我qq,我整理了一个vb的,呵呵.

而CHECKSUM算法呢,就是:

每一块nand分为32页,每页有16B的校验,所以实际上每一块的大小是(512+16)*32=16896字节,CHECKSUM算法就是计算前16894个字节的和.

在vb中可以这样写:

Dim i As Long
Dim sl As Integer
Dim sh As Integer
Dim v As Byte

sl = 0
sh = 0
For i = 0 To 16893
    Get ft, fs + i, v   '从文件中读入数据
    sl = sl + v
    If (sl > 255) Then sl = sl - 256: sh = sh + 1
    If (sh > 255) Then sh = sh - 256
Next

Print sl,sh

sl,sh就是所求了.






 楼主| 发表于 2006-4-8 17:46:00 | 显示全部楼层
谢谢楼上的,可是如果不用int $0601,ECC怎么算?

还有你的QQ?
发表于 2006-4-8 18:03:00 | 显示全部楼层
加我qq吧:354060597
发表于 2006-4-11 13:54:00 | 显示全部楼层
以下是引用litianzzk在2006-4-8 14:57:00的发言:[BR]ecc算法可以自己反汇编 int $0601,不过令人吐血的长


呵呵,你还有毅力看完.我看了一小段就晕过去了!!




[em01][em01][em01][em01][em01]
 楼主| 发表于 2006-4-8 09:20:41 | 显示全部楼层 |阅读模式
NFLASH每一页面都接着16B的校验区,里面包含了以下内容:
0-1 BYTES:如果该页是所在区块的第一页,那么这里应该是该区块的区块号,如02 00
03-06 BYTES:暂无用处
06-08 BYTES:作为该页的3字节ECC校验值
09 BYTE:此处必须为 aah
0a byte:此处为该页512B的异或和
0b-0c BYETS:暂时未用
0d BYTES:若是在0002区块的第1f个校验区,这里为NFLASH版本号
0e-0f bytes:若是在该区的第1f个校验区,则是该区16KB内容的校验和(NAND CHECKSUM)
1.ECC算法
这是计算512B的内容,最后得出3B的校验码
其原理是:将512B的内容先逐字节异或,再逐位异或,再逐2字节异或,逐4字节异或...逐128字节异或
wqx中可用系统函数JSR$E099和中断BRK$0601来计算
如要计算$4000-$4200的ECC校验码,程序如下:
LDA #$00
STA $e7
LDA #$40
STA $e8
JSR $E099
BRK $0601
RTS
最后$C7B4、$C7B5、$C7B6就是3B的ECC校验码
2.异或和校验:
异或和校验是计算512B的异或和
在写NAND 512B的系统函数会计算好.为$F3
如:
....
JSR $E08a ;写入512B
...
这时$f3就是写入的512B内容的异或和
3.CHECKSUM校验:
此校验算法由于速度很慢,而且只是对整个16KB区块进行计算的,所以只在系统检测中的"NANDCHECK"中有用到
方法就是计算整个16KB区块的数据和,得到2字节的CHECKSUM

这是摘至超级合集.ebk里的.
比如:异或和校验是这样的:

  1. int i;
  2. char data[512];
  3. char sum;
  4. for(i=0;i<512;i++)sum=sum^data[i ];
  5. printf("%d\n",sum);getchar();
复制代码

但是,ECC校验怎么算呢?我看不懂"将512B的内容先逐字节异或,再逐位异或,再逐2字节异或,逐4字节异或...逐128字节异或".
请大家讲讲.谢谢了.还有CHECKSUM校验.最好写出程序例子(像上面的那样)



您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

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

GMT+8, 2025-5-3 21:13 , Processed in 0.013081 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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