原创 JLINK无法(单步)调试,JLINK固件的烧写,S3C6410

2014-3-29 21:30 4712 18 19 分类: MCU/ 嵌入式 文集: S3C6410

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:准备所需的软件和固件,包括:

         aInstall AT91-ISP v1.13.exe——下载J-LINK V8固件的工具软件

         bJ-LINK v8.bin——J-LINK V8的固件

         cSetup_JLinkARM_v422g.exe——JLINK V8的驱动

 

B:安装Install AT91-ISP v1.13.exe软件,生成了两个图标sam-ba v2.9SAM-PROG V2.4.WINXP电脑,WIN7可能不行),其次安装好Setup_JLinkARM_v422g.exe这个JLINK驱动程序。

 

C:擦除芯片并使其进入编程模式

 

如图,有AB两个红框,AERASE跳线,BRESET跳线(不同JLINK位置可能不同)

         a:用USB线连接JLINKPC,提供电源;

         b:短接A处两过孔,25s以上,然后断开短接;

         c:断开JLINKPC之间的USB连接;

         d:短接B处两过孔;

         e:用USB线连接JLINKPC,提供电源,20s以上,然后断开电源;

         f:断开B处的短接。(顺序不能乱)

 

D:更新固件

         a:运行SAM-PROG v2.4烧录软件,并进行如下设置:

 

         b:用USB线将JLINKPC相连。此时需要注意的是,如果电脑初次烧固件,一般会提示你发现新硬件,是否安装驱动,此时一定要安装驱动,直接点击本机自动查找就行,安装成功会如下图所示,否则软件中的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固件经常容易掉链子,因此我们需要做好长期与之斗争的准备)

转载请注明出处


文章评论1条评论)

登录后参与讨论

644398774_263592779 2014-3-30 11:30

JLINK有时候确实令人郁闷
相关推荐阅读
用户1651464 2014-05-06 11:07
__asm__ __volatile__ 嵌入式内嵌汇编语法解构
再次对EDN的编辑功能表示无语,这篇文章竟然说超字数限制!...
用户1651464 2014-05-04 14:54
sourceinsight添加uboot时,部分文件无法搜索
Sourceinsight添加uboot时,部分文件无法搜索 在用sourceinsight查看uboot(或者linux内核源码等代码)的时候,突然发现不能使用搜索的方法查找源码中的.S文件,查找...
用户1651464 2014-04-25 11:20
ubuntu中vi使用大全
vi编辑器是任何Unix及Linux系统下标准的编辑器,他的强大不逊色于任何 最新的文本编辑器,这里只是简单地介绍一下他的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全...
用户1651464 2014-04-21 21:47
[博客大赛]S3C6410时钟控制(1.2)系统时钟设定
S3C6410时钟控制(1.2)系统时钟设定 三、S3C6410时钟初始化的具体流程。 1:设定PLL_LOCK寄存器。参见上面的PLL_LOCK(1)。 对应代码:(C或者汇编)     //1-...
用户1651464 2014-04-21 21:46
[博客大赛]S3C6410时钟控制(2)PWM定时器设置
S3C6410时钟控制(2)PWM定时器设置 1、    S3C6410定时器综述 (1)   定时器资源,参见上图,S3C6410有5个32位定时器,其中定时器0和定时器1具有脉冲宽度调制(PW...
用户1651464 2014-04-21 21:43
[博客大赛]S3C6410时钟控制(1.1)系统时钟设定
S3C6410时钟控制(1.1)系统时钟设定 一、S3C6410系统时钟控制的概述 S3C6410系统有三个PLL(APLL/MPLL/EPLL)和四个CLK(ACLK/HCLK/PCLK/SCLK...
我要评论
1
18
关闭 站长推荐上一条 /2 下一条