昨天终于准备开始进行S3C6410的裸机开发,写好了程序,编译生成了.axf文件,一切顺利的准备利用JLINK进行在线调试了,突然有种成功就在前面的感觉,Jlink也能被电脑正常的识别,利用AXD进行Jlink的相关设置也很正常,也能检测到CPU,于是load image,进行调试,选择go,发现开发板啥反应没有,这是怎么回事呢??
进行单步调试,发现程序可以从启动文件运行到main函数,但是到了main之后就无法单步执行了,有时会报错“can not read register 26(R13_SVC)while CPU is running”之类的错误,反正程序是跑飞了,程序是例程,也特别的简单,不至于跑飞的,上网查找,发现提出此类问题的还蛮多的,有些有回答,大部分归于沉寂,终于从中汲取了可能跟JLINK盗版有关,需要重新烧写下固件。那下面就整理下如何烧写JLINK固件的步骤吧。
(这说明,JLINK固件如果出现问题,不单单是以前我们熟知的PC提示无法识别的USB设备,JLINK的灯不亮,也有可能是JLINK突然不能单步调试,调试程序跑飞等情况,此时灯仍然亮着,这种情况更容易浪费发现问题的时间)
A:准备所需的软件和固件,包括:
a:Install AT91-ISP v1.13.exe——下载J-LINK V8固件的工具软件
b:J-LINK v8.bin——J-LINK V8的固件
c:Setup_JLinkARM_v422g.exe——JLINK V8的驱动
B:安装Install AT91-ISP v1.13.exe软件,生成了两个图标sam-ba v2.9和SAM-PROG V2.4.(WINXP电脑,WIN7可能不行),其次安装好Setup_JLinkARM_v422g.exe这个JLINK驱动程序。
C:擦除芯片并使其进入编程模式
如图,有AB两个红框,A为ERASE跳线,B为RESET跳线(不同JLINK位置可能不同)
a:用USB线连接JLINK与PC,提供电源;
b:短接A处两过孔,25s以上,然后断开短接;
c:断开JLINK与PC之间的USB连接;
d:短接B处两过孔;
e:用USB线连接JLINK与PC,提供电源,20s以上,然后断开电源;
f:断开B处的短接。(顺序不能乱)
D:更新固件
a:运行SAM-PROG v2.4烧录软件,并进行如下设置:
b:用USB线将JLINK与PC相连。此时需要注意的是,如果电脑初次烧固件,一般会提示你发现新硬件,是否安装驱动,此时一定要安装驱动,直接点击本机自动查找就行,安装成功会如下图所示,否则软件中的write flash仍然无效。一切顺利的话,此时write flash变为有效,active connection也变为1。这一步的安装驱动很重要。
c:点击write flash,烧录固件,待烧录完成后,Active Connection:将变为1。
d:拔掉USB线,此时固件更新完毕。
E:自动更新固件
在电脑开始菜单中找到SEGGER->J-Link ARM V4.34->J-Link Commander并打开,如果你前面的操作正确,这里首先会提示你更新固件,这里我直接按的是,自动更新固件。
(对于这一步,有的同学说需要先按否,不更新固件,然后输入命令Exec SetSN=20140328,后面的为目前的时间,这样可以覆盖掉固件上次的时间,然后重新运行J-Link Commander,此时按同意更新固件。我这样做了,但是提示“无法覆盖掉原来的SN”,至于why,没有深入研究)
(还有同学提出,重新烧写固件到Jlink,将原来V8.bin固件用Winhex打开,并找到偏移地址为0xff00为首地址4bytes修改为其他值,只要不为原来的11111117 或 805306163即可,因为更新后的固件对这两个固件SN进行了强制校验,修改为其他值即可完美解决问题,同时将0xff30后面的GDBFull对应改成GDBFULL,对应ASCII码为47 44 42 46 55 4C 4C,目的是跳过GDBFull检查。我也用winhex看了下,发现好像下载的最新版的2012固件的bin文件里面已经符合此要求,不需要改了)
F:成功的现象——JLINK指示灯先闪烁,然后变为常绿。
(有人说,JLINK固件经常容易掉链子,因此我们需要做好长期与之斗争的准备)
转载请注明出处
644398774_263592779 2014-3-30 11:30