找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 9865|回复: 10

hg255d JTAG 救砖常见问题解决方法

[复制链接]
本帖最后由 aggresss 于 2016-9-28 12:31 编辑

本教程参考予恩山无线论坛的相关帖子,在这里感谢大神们的分享。
我可能说的不是很具体,但我会把思路讲清楚。
如果您已经使用wiggler,jlink或者其它调试工具对hg255d进行就转,各种飞线和设备都已就位,但当flash_uboot的时候,发现提示错误,比如下面这种情况
> halt

> ralink_init

> flash_uboot

Flash Manufacturer/Device: 0x0001 0x227e

flash 'cfi' found at 0xbf000000

fast_data (0x0000008c) is within write area (0x0000010c-0x0000030c).

Change work-area-phys or load_image address!

Falling back to non-bulk write

BUG: register 'a0' not found

error writing to flash at address 0xbf000000 at offset 0x00000000

flash write_bank bank_id filename offset


出现这种情况一定很棘手,我研究了整整一个月没有任何进展,如果哪位大哥有直接的解决方案并分享出来,我一定找机会登门道谢。我尝试过很多解决方法都无果而终,但最终我使用了一种绕过用OpenOCD刷入flash的方法来避开这个问题,实现对hg255d的flash写入的功能,下面分享出来。

我的解决思路就是,如果无法通过OpenOCD将u-boot写入flash,那么我就先通过OpenOCD将U-Boot写入RAM,然后运行RAM里的U-Boot,通过TFTP的方式将要刷入的U-Boot载入到RAM中,再通过RAM中的U-Boot来操作flash来将载入RAM的U-Boot刷入flash,从而实现对hg255d就砖的操作。

我将OpenOCD的配置文件和在RAM里运行的U-Boot都放到了附件里,使用附件里的配置文件按照下面的思路就可以对hg255d的flash进行操作,当然,前提是您的OpenOCD已经能识别出hg255d的TAP信息。

这种方法有两个额外要求:1.要通过TTL与hg255d进行通信,通信参数 57600bps,8N1;2.要使用tftp服务下载要刷入的U-Boot到RAM。

我们首先来思考一下ralink的参考U-Boot中相关命令和使用方法。


setenv serverip 192.168.1.100

设置默认连接的tftp服务器的地址


tftpboot 0x80100000 uboot.bin

连接tftp服务器,下载uboot.bin文件到RAM中的0x80100000地址中


protect off all

取消flash写保护功能


erase 0xBF000000 0xBF03FFFF

将flash中0xbf000000~0xbf03ffff的内容擦除


cp.b 0x80100000 0xBF000000 0x40000

将RAM中 0x80100000开始内容复制到flash中0xbf000000内,大小为0x40000


md 0xBF000000

显示 0xbf000000 中的内容


hg255d采用CFI接口的norflash作为非易失存储介质,这样的好处就是操作flash可以像操作RAM一样简单,只是在写入前要增加解除写保护和擦除的步骤。

使用我附件里的OpenOCD配置文件输入run_uboot_command 命令就可以将U-Boot导入RAM并运行。过着使用分解后的命令:

ralink_init

load_image uboot_command.bin 0x00200000
resume 0x00200000
当U-Boot在RAM中运行后,就可以通过TTL与U-Boot进行交互。
思路我提供到这里,具体操作参考osfix大哥的操作,在他的教程里稍作修改就行:


如果您还没有对hg255d进行jtag改造,我推荐您一个教程:



再这里再说一个常见的jtag问题,如果你已经连接好jtag,并且OpenOCD已经识别hg255d的硬件信息,但是在进行halt操作时提示如下:

Open On-Chip Debugger
> halt
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x00000000
也就是pc的值一直在0x00000000,然后操作都没有返回结果。出现这种问题的原因lintel大神已经有了解决方法,原因就是,RT3052的JATG接口是和GPIO复用的,因为你的hg255d并没有真正的变砖,在U-Boot初始化的过程中将jtag初始化为GPIO口导致的,解决方法就是开机时将flash的53和54引脚短接,jtag识别后,断开即可,具体参考下面的链接,感谢lintel和波鲁克两位前辈。
http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=9314
https://www.right.com.cn/forum/thread-105069-1-1.html







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
现在玩JTAG救砖的好少,普通uboot能在RAM里运行吗?
回复

使用道具 举报

 楼主| | 显示全部楼层
submars 发表于 2016-10-8 00:00
现在玩JTAG救砖的好少,普通uboot能在RAM里运行吗?

不能,编译的时候TEXT_BASE值不同, 您可以找U-Boot源码自己编译,make menuconfig 后 有ROM/RAM选项;或者您在这个链接直接下载 http://downloads.openwrt.org.cn/OpenWrt-DreamBox/HG255D/u-boot/  里面的两个文件分别对应ROM版本和RAM版本
回复

使用道具 举报

这个要好即思考一下
回复

使用道具 举报

新人 看起来 有点儿 困难
回复

使用道具 举报

一直卡在这:
> halt
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x00000000

lash的53和54引脚短接,也没用

回复

使用道具 举报

 楼主| | 显示全部楼层
wyn20007 发表于 2016-12-5 22:10
一直卡在这:
> halt
target state: halted

http://blog.csdn.net/aggresss/article/details/52454840  
这个能帮到你不
回复

使用道具 举报

aggresss 发表于 2017-1-23 21:19
http://blog.csdn.net/aggresss/article/details/52454840  
这个能帮到你不

我运行了, 但 不能下载至ram中,,没反应:

Open On-Chip Debugger
> halt
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x9f000418
> run_uboot_command
Fastdata access Failed
Falling back to non-bulk write

>
回复

使用道具 举报

wyn20007 发表于 2017-1-23 21:33
我运行了, 但 不能下载至ram中,,没反应:

Open On-Chip Debugger

一样的情况啊!!!
Open On-Chip Debugger
> halt
target halted in MIPS32 mode due to debug-request, pc: 0x9f000380
> ralink_init
> run_uboot_command
Fastdata access Failed
Falling back to non-bulk write
Open On-Chip Debugger
> halt
> ralink_init
> run_uboot
Fastdata access Failed
Falling back to non-bulk write

回复

使用道具 举报

ralink_init
load_image uboot_command.bin 0x00200000
resume 0x00200000
当U-Boot在RAM中运行后,就可以通过TTL与U-Boot进行交互。
执行完这三句后,练好电路后,secureCRT里啥都没有,长按重启也没反应,怎么交互?
回复

使用道具 举报

Open On-Chip Debugger
> run_uboot_command
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x9f000380
125280 bytes written at address 0x00200000
downloaded 125280 bytes in 134.546875s (0.909 KiB/s)
> run_uboot_command
target state: halted
target halted in MIPS32 mode due to debug-request, pc: 0x00200780
125280 bytes written at address 0x00200000
downloaded 125280 bytes in 143.765625s (0.851 KiB/s)
>

运行了,但是TTl没有输出呀
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-13 05:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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