2012年(10)
分类:
2012-06-20 10:45:44
原文地址:AXD+H-JTAG环境搭建总结 作者:自语的骆驼
1. 到下载最新版的H-JTAG
安装好后,如下图所示设置好AXD:
添加H-JTAG.dll,该dll文件在H-JTAG的安装目录下可以找到
设置好过后,在ADS1.2的界面中点击如下按钮即可以进行调试:
弹出对应的调试界面,可以看到执行LDR r0,=0x56000000候,左边的寄存器的值发生了变化,还可以看到下一条将要执行指令的地址,即pc值。
遇到的问题:嵌 入式环境是软硬件结合的环境,无论是软件或者硬件出现问题都可以导致系统无法正常的运行,我在配置调试环境的时候就遇到了各种问题。就按照上面的配置步 骤,我在进入调试界面时,指令从pc=0x30000000处开始执行,虽然执行了LDR R0, =0x56000010,但是左边的寄存器窗口根本就没有变化,找了很久都没有找到原因,郁闷了很久。其实现在对该问题出现的确切原因也不是非常清楚,出现问题的板子环境是没有u-boot的, 在我用h-flasher将u-boot下载到板子上后,就可以正常的看到寄存器受到汇编指令的变化,并且程序能够正确的控制板子上的硬件,这个例子是控 制led的。估计的原因是:没有u-boot 的环境,硬件没有得到相应的初始化,向SDRAM就没有被初始化,导致程序根本就没有被下载到板子上,所以程序肯定会跑飞的。如下一段话来自H-JTAG 官网:
程序下载不正确,程序跑飞
一般的用户,刚开始调试的时候,编译好程序,就直接点击调试。但结果发现调试根本没有按照预期的进行。发生这种问题一个最常见的原因是程序根本没有正确下载到目标系统中去。对SDRAM而言,上电后一般都是不可以使用的,需要进行相应的配置才可以使用。所以如果
是在SDRAM里进行调试,请先对SDRAM进行配置,或者确定SDRAM已经初始化好了。如果是内部SRAM,一般来说,可以直接使用。所以,做一般的测试,最简单的办法是使用片内SRAM。在调试的时候,最好是自己通过内存观察窗口判断一下,程序是否是下载到期望的地址去了,下载是否正确。以免出现调试跑飞的问题。
2.ADS工程的设置
工程的设置要针对ARM的编译器、连接器和可执行bin的设置。
按照如下图所示的步骤进行设置:
Language Settings中的每一项都选择ARM920T就行了:
ARM Linker中设置RO Base:
ARM fromELF中设置bin文件的名字和输出目录:
3、使用H-JTAG连接目标板时遇到的问题以及解决方案
出现的问题如下图所示:
想用H-Flasher烧写flash的 时候,出现H-JTAG无法将目标板复位的问题,中 有对这个问题的描述,无论从Nor Flash还是从Nand Flash启动都遇到这个问题,原因初步确定为:NOR Flash和Nand Flash中的代码是未定义的代码,导致CPU执行的时候处于一个不确定的状态,所以H-JTAG无法将板子带到DEBUG状态。其实我的板子刚开始从 NAND Flash启动的时候是可以被H-Jtag烧写程序的,但是由于烧写了一个有问题的bin文件到Nand Flash中,导致从NAND Flash也无法启动。网上搜索了很久,可能的解决方案是:用金属物短接Nand Flash的地址线,让CPU无法从Nand Flash中读取指令。在万般无赖之下我本打算就采取这个方法了。晚上回寝室后碰到强哥,和强哥讨论后觉得以下方案更有效,经过实验,果然见效,如果在 H-Jtag试图将目标板设置成DEBUG状态的时候,手动给CPU一个Reset信号,此时CPU还来不及去Nand Flash中错误的指令,就已经被H-Jtag控制,并且被带到了Debug模式,这需要多尝试几下,一般都可以成功的。
4、使用H-Jtag烧写Nand Flash时遇到的问题和解决方案
刚开始的时候,自己不知道怎么使用H-Jtag来烧写Nand Flash,在H-Flasher中也没有找到和自己型号一致的配置文件,绝望之下看到了了广东海洋大学的一篇文章,虽然我觉得那篇文章不应该叫做文章,但是它的确解决了我的问题。现在操作步骤详细描述如下:
上面的设置好了过后,先将芯片Erase掉,然后指定要下载的文件,然后Program,下载完后,Reset板子,看串口有没有输出,如果没有输出说明下载出现的问题,点击上图中的Verify看一下Nand Flash中的程序是否与u-boot.bin一样。这里我就遇到了这么一个问题,还以为板子坏了,从Nand Flash启动, 我第一次将u-boot.bin烧写进Nand Flash,Reset开发板,可以从串口看到U-boot传送过来的消息,窃喜~~,由于自己的Nor Flash中有错误的程序,导致CPU无法被H-Jtag Reset,所以我想用H-Jtag格式化Nor Flash,在没有load新的hfc文件的情况下,我直接选择从Nor Flash启动,然后通过多次的手动reset和Check配合终于让H-Jtag控制了CPU,然后Erase,然后Program,结果就出错了, 无论是从Nand Flash还是从Nor Flash都无法从串口接收到消息。无赖之下,我觉得应该是从Nor Flash启动,由于hfc文件是k9f1208,这个配置文件时针对板子上Nand Flash的,所以烧写的还是Nand Flash。于是我从Nand Flash启动,多次烧写Nand Fash,verify的结果都是failed, 意味着我pc机上的u-boot.bin和nand Flash中的程序不一致,也就是u-boot.bin没有能够正确的烧写到Nand Flash中,当然无法从串口中收到消息啦~~,无果,我想应该是我无意间改动了hfc文件,于是重装了H-Jtag,重启电脑,重新烧写u- boot.bin,verify 一切恢复正常。
5、串口线的问题
我的S3C2410板子的串口透是公的,PC机上串口头也是公的,这就需要两头都是母的串口线,这种线真的好难找啊,实验室的一根两头都是母的串口线根本 就无法接受到开发板的信息,最好才知道,原来串口线分为直连串口和交叉串口线。如果TX和TX相连就是直连,如果TX和RX相连就是交叉的,这只能够通过 原理图才能够判断板子应该采用哪种串口线。
6、Jtag 20针排线的问题
毕业的时候,不知道把板子的并口j-tag线弄得哪儿去了,只剩下一个板子和电源,其他的东西都是借的,非常感谢钱同学把Jlink借给我用了,虽然我们 只有一面之缘。由于S3C2410的20针J-tag口非常的非主流,现在的Jlink线上的20针排线根本就插不上去,让我非常郁闷,望洋兴叹。后来, 飞哥给了我一中可以把J-tag各个针和板子连接起来的线,虽然可以连接PC机,也可以下载程序,但是毕竟非常的不稳定,稍微碰一下,就无法连接、无法下 载程序、无法找到target。。。。各种错误,而且在复杂的环境中,让我无所适从,最后,在晋毅的建议下我去了城隍庙,去的时候根本就摸不到头绪,还好 在城隍庙遇到了一个热心的校友,带我去了一个专门制作排线的地方,我买了排线,哪个人问我方向的时候,我真的没有了方向,不知道什么是排线的方向,最后只 好买了回来,我叫晋毅帮我将排线的头接好了,最后发现jlink和板子连起来,板子的灯都不亮,我知道接反了,最后只好忍痛将线的一头给剪掉,一连上板 子,居然能用,真的是乐死我了~~PS:我观察身边的排线,一般都是一正一反,其实当初在城隍庙的时候就应该做两根,反正只有两种情况~~如果以后不确 定,又不想多跑路,就直接叫做两根就OK了~~再次感谢那个在城隍庙热心的校友:)
7、Jlink固件修复问题
从小明那里接过板子,以为自己的问题就解决了,可是现实总是残酷的,把jlink一连上就不能用,哎,真是悲催,为什么做点事就这么难啊?最后在河畔上借 到了钱同学的jlink,结果又和小明的接口不匹配,真实郁闷死哥了,最后向强哥求教,原来是jlink里面的固件坏了,
以下直接拿来主义了!!
---------------------------------------------------------------------------------------------------------------------------
J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK固件。
² 请ATMEL官方网址下载AT91-ISP下载软件。
软件下载地址:
在打开的网页中,下载下图中红色框所示软件。
² 安装下载好的Install AT91-ISP v1.13.exe软件
双击Install AT91-ISP v1.13.exe运行,选择默认设置,安装好以后,桌面上生成如下两个图标。
² 使用USB线连接JLINK与PC机,以提供JLINK工作电源。
² 短接图中A的两个过孔约5秒。断开A位置的两个过孔的短接。然后拔掉JLINK与P C间的USB线(注意先后顺序)。
² 短接图中,B处的两个过孔。
² 使用USB线连接JLINK与PC机,至少超过10秒后,拔掉USB线,停止给JLINK供电(说明:请确保此过程中,图中B处一直处于可靠的端接状态)。
² 断开图中B处的短接。
² 双击桌面上的SAM-PROG v2.4图标 ,运行SAM-PROG v2.4烧录软件,按下图所示进行设置。
² 将JLINK V8通过USB线与PC机连接。此时,SAM-PROG v2.4软件中的Write Flash按钮将变为有效。(注意,先打开SAM-PROG v2.4再连接JLINK 与PC机)。
² 点击Write Flash 按钮,烧录固件,待烧录完成后,Active Connection:将变为1。
² 拔掉JLINK与PC机之间的USB线。
至此,JLINK V8的固件已经更新完毕,正常情况下,连接电脑与JLINK V8时,JLINK V的指示灯将闪烁,然后常绿。请参照JLINK V8用户手册说明,使用JLINK V8进行调试仿真。