在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号,结果如下,到此仿真器便能正常使用了。

  如果本文对您有帮助,请您给予一定的支持,您的支持就是我的动力!

ARM开发---Keil注册+JLink维修详解的更多相关文章

  1. 微信公众开发URL和token填写详解

    微信公众开发URL和token填写详解 方法/步骤     作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服 ...

  2. 最强常用开发库总结 - JSON库详解

    最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...

  3. PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等

    页面导航: 首页 → 网络编程 → PHP编程 → php技巧 → 正文内容 PHP安全 PHP开发中常见的安全问题详解和解决方法(如Sql注入.CSRF.Xss.CC等) 作者: 字体:[增加 减小 ...

  4. Android游戏开发之旅 View类详解

    Android游戏开发之旅 View类详解 自定义 View的常用方法: onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 onMeasure(int, int) ...

  5. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  6. [转帖]Windows注册表内容详解

    Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...

  7. iOS开发--常用技巧 (MJRefresh详解)

         iOS开发--常用技巧 (MJRefresh详解) https://github.com/CoderMJLee/MJRefresh 下拉刷新01-默认 self.tableView.head ...

  8. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...

  9. legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)

    legend3---Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead) 一.总结 一句话总结: 1.安装的话就是下载好git,va ...

随机推荐

  1. CSMA/CD 续

    重要特性 以太网不能进行全双工通信而只能进行双向交替通信(半双工通信).每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性. 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率 ...

  2. 数据库相关文章转载(2) MySQL自带的性能压力测试工具mysqlslap详解

    PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...

  3. ZT Android的引用计数(强弱指针)技术及一些问题

    Android的引用计数(强弱指针)技术及一些问题 分类: Android 2013-06-07 18:25 844人阅读 评论(4) 收藏 举报 目录(?)[+] Android C++框架层的引用 ...

  4. Java遇到的问题、错误——持续更新

    内容:dead code.关于eclipse没有js代码提示的解决 持续更新 ######################################################## dead ...

  5. Linux中安装Nginx

    1.安装编译文件及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel 2.安装PCRE,Ngi ...

  6. 自定义控件(视图)2期笔记12:View的滑动冲突之 外部拦截法

    1. 外部拦截法: 点击事件通过父容器拦截处理,如果父容器需要就拦截,不需要就不拦截. 这种方法比较符合事件分发机制.外部拦截法需要重写父容器的onInterceptTouchEvent方法,在内部做 ...

  7. [emerg]: getpwnam(“nginx”) failed

    [root@localhost nginx-1.11.2]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam("nginx" ...

  8. 图论——最短路径 Dijkstra算法、Floyd算法

    1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...

  9. 4、RabbitMQ-消息应答与消息持久化

    消息应答( Message acknowledgment) 1. Message acknowledgment(消息应答) 执行任务可能需要几秒钟.你可能想知道如果其中一个消费者开始一项长期任务并且只 ...

  10. [Python 多线程] asyncio (十六)

    asyncio 该模块是3.4版本加入的新功能. 先来看一个例子: def a(): for x in range(3): print('a.x', x) def b(): for x in 'abc ...