|
楼主 |
发表于 2008-12-6 19:40:08
|
显示全部楼层
多谢天涯帮忙测试和及时反馈,小版本更新比较快。1.4的来了希望能解决你的问题。
大概写一下所谓的解锁教程吧,希望能成功。 我们进行恢复操作的基本条件是6358还可以正常读取flash所有分区中的其中1个,S29GL128N/P/M 有128个扇区,从1f00 0000 ~ 1ffe 0000 ,可以任选其中的1个
1. 寻找可以正确读取的扇区地址
使用默认的1fc00000进行flash ID 检测,通常只要flash不损坏,这个扇区应该是可读的。如果不可读,那么我们改变探测地址 继续尝试
- brjtag -probeonly /window:1fx00000
复制代码
x可以选择0,1,2,3,...9,A,B,C,D,E,F十六个数中的任何一个。这个地址可以是128个扇区起始地址的任何一个,不过前面的16个就能解决问题。
成功检测后flash芯片的型号可以被显示,另外各扇区保护PPB状态的读取如下面的屏幕显示,我们根据这个来判断哪个扇区可用。
-
- Read Sector: 62 (addr = 1f7a0000) with PPB:0000000000000000 (0000)
- DMA Read Addr = 1f7c0000 Data = (00000000)ERROR ON READ #发生读写错误,下面的这个扇区被锁定
- Read Sector: 63 (addr = 1f7c0000) with PPB:0000000000000000 (0000) # 被锁的扇区
- DMA Read Addr = 1f7e0000 Data = (00000000)ERROR ON READ
- Read Sector: 64 (addr = 1f7e0000) with PPB:0000000000000000 (0000) # 被锁的扇区
- Read Sector: 65 (addr = 1f800000) with PPB:0000000000000000 (0001) #正常扇区,扇区保护状态可读,无读写错误发生
- Read Sector: 66 (addr = 1f820000) with PPB:0000000000000000 (0001) #正常扇区,扇区保护状态可读,无读写错误发生
- Read Sector: 67 (addr = 1f840000) with PPB:0000000000000000 (0001)
- Read Sector: 68 (addr = 1f860000) with PPB:0000000000000000 (0001)
复制代码
我们选择命令行中尝试的这个地址作为我们后面操作的基本地址。这样flash芯片可以被jtag所访问了,flash能够相应部分我们发出的指令。
假如我们可访问地址是1fd00000
2. 通过刚才确定的探测地址擦除整个flash芯片。
- brjtag -probeonly /erasechip /window:1fd00000
复制代码
/erase 选项采用全芯片擦除命令对芯片进行擦除,只要找到可访问地址,那么就可以成功,而不是扇区by扇区进行擦除。全片擦除的意义是,防止由于flash里面的错误指令使6358处理器处于不可控状态。
我们必须要令6358可控,这样才能相应我们发出的配置指令。
提示开始擦除以后,时间可能比较长,大概1分钟,耐心等待一会。
再用命令
查看一下是否有变化。
3. 尝试解锁。
- brjtag -probeonly /unppb /window:1fd00000
复制代码
/unppb选项是通过brjtg初始化6358对EBI的访问,打开kseg1的所有地址空间。 应该可以确认所有扇区都能够正常读取PPB状态,没有读写错误发生。说明解锁操作基本成功
4. 完成解锁,准备一个好的CFE(TFE.BIN), ADSL上用的CFE和flash底部扇区的大小匹配。比如S29GL128N, cfe大小是128KB (0x20000),brjtag里面对这种单扇区的CFE用TFE标记 (tiny CFE)
或者
- brjtag -flash:tfe /unppb /fc:79
复制代码
5. 解锁完成,进行后续的恢复操作。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
|