热度 19
2014-3-29 21:30
4712 次阅读|
1 个评论
2014.03.29/ 写 昨天终于准备开始进行 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 固件经常容易掉链子,因此我们需要做好长期与之斗争的准备) 转载请注明出处