在ARM开发中,经常使用的开发环境就是Keil uVision集成开发环境+JLink仿真器,本文就是就是介绍、总结使用该开发环境中遇到的问题,并在问题后方附上亲测可行的解决方法。如果各位看官在开发过程中遇到了新的问题,欢迎在本文评论区留言,共同探讨,本文会及时更新。
==========================Keil部分===============================
Keil安装和破解
1、双击Keil安装包,根据提示进行安装。
2、接下来需要注册(不注册的话很多功能无法使用,例如会限制编译生成的二进制文件的大小),点击File --> License Management, 拷贝CID。
3、打开keillic.exe(点击这里下载),Target选ARM, 版本选Prof.Developers Kit/RealView MDK,然后将复制的CID粘贴至注册码,点击Generate,拷贝出生成的注册码。
4、将上一步拷贝的注册码添加到Keil中( File --> License Management),至此Keil集成开发环境就能正常使用了。
===========================JLink仿真器部分=========================
问题1:
JLink仿真器用着突然指示灯不亮了,重新拔插USB也依旧,点击烧写程序报错:No JLink Device found。
此问题一般是在JLink内部的问题,可能是外部干扰、不正当操作或程序BUG等导致JLink芯片程序空间中数据被破坏,最终导致JLink无法正常运行,所以表面现象就是指示灯不亮。这时候的解决方法就是重新给JLink烧写程序(也即更新固件)。
J-Link内部芯片:AT91SAM7S64 (Atmel的ARM7处理器)
烧写工具:SAM-PROG Vx.xx (点此下载)
串口烧写工具:SAM-BA Vx.xx(点此下载)
(1)首先擦除已损坏固件,先找到Erase脚 Pin55 和 TST脚 Pin40 。一般某宝上的JLink鱼龙混杂,友好的会将Erase和TST引出来并标有丝印,但有的什么提示信息也没有,没关系,我们可以自己找,将仿真器的芯片按照下图摆放,左上往下数第7个引脚就是Erase引脚,如果肉眼只能能看出来它引到哪里最好,如果看不出来可用万用表量一下,如果实在找不到引去哪里也没关系,记住这个脚,要用时直接用镊子等尖物体往上点。 TST引脚在上方从左数第9引脚,如没有丝印,寻找方法跟Erase脚一样。
(2)这两个重要的管脚找到之后,然后通过USB数据线连接J-Link和电脑,给J-Link供电(注意这一步小灯可能不亮,但电源已经加到J-Link板子上了);
(3)短接Erase区的两个过孔(即Erase与VDD3.3v)约5s以后,断开该连接,这时擦除完毕,最后断开USB电源,停止给J-Link供电。(注意先后顺序)
(4)短接TST区的两个过孔(即TST与VDD3.3v),然后再连接USB数据线给J-Link供电(注意顺序),约10s以后,拔掉USB电源,再断开TST区的连接,这时进入编程模式
(6)J-Link通过USB线与电脑连接。此时,SAM-PROG软件中的Write Flash按钮将变为有效。(注意,先打开SAM-PROG 再连接J-Link)。
(7)选择固件保存路径(没有固件的点此下载),点击Write Flash 按钮,烧录固件,待烧录完成后,Active Connection:将变为1,然后拔掉USB数据线即可。
问题2:
在执行问题1中的第(6)部时,SAM-PROG的Write Flash按钮一直无效。
产生这个问题的原因有很多,在此就不去深究了,直接上解决方法。
方法1、将驱动调整为“AT91 xxxx Test Board”驱动,驱动文件位置一般在xxx\ATMEL Corporation\AT91-ISPvx.xx\sam-ba x.x\drv目录下,再重复问题1中第(6)步。
方法2、Win10的系统经常会遇到这种情况,方法1也无法解决,这时可使用串口烧写,烧写工具SAM-BA,打开后按照下图提示进行操作。完成后重新拔插仿真器便会发现正常亮灯了。
但特别注意在使用SAM-BA烧录程序最后不能Lock Flash,否则无法更改SN号,无法自动更新固件!!!
问题3:
烧写完成后无法使用,提示更新framework,但是总时更新失败。
A new firmware version is available for the connected emulator.
Do you want to update to the latest firmware version?
…
这个问题是由于电脑中的JLink驱动版本比仿真器中的版本要高。
方法1、用老版本的JLink驱动(点此下载J-Link 4.40c)覆盖Keil中的JLink驱动,路径:Keil安装目录/UV4/ARM/Segger。
方法2、绕过SN校验升级仿真器中的固件。首先双击 Keil安装目录/UV4/ARM/Segger/JLink.exe,此时会有上图提示,注意不要升级固件,输入命令 exec setsn = 20180913
SN号为8位数,可自行定义,回车后显示O.K.,此时便可重新打开JLink.exe正常的升级固件了。
正常升级固件后显示你定义的SN号,结果如下,到此仿真器便能正常使用了。
如果本文对您有帮助,请您给予一定的支持,您的支持就是我的动力!