Jlink烧写问题

ARM9“裸板”编程授课过程中,发现很多同学都想用笔记本调试2440。无奈亚嵌的JTAG是并口Wiggler,可是现在的笔记本都没有并口,有些人买了usb转并口,可是又多半用不了。上网搜索,相关的文章不多。于是我专门为此做了一些研究,特将一些经验在此分享,希望对有此需求的朋友有所帮助。
    目前市面上流行的ARM JTAG方案有3种,一种是J-LINK配IAR,一种是U-LINK配KEIL,一种是OpenJTAG配OpenOCD+GDB,因J-LINK目前有SZ版价位比较低,先说这个。
   按说选择J-LINK应该使用IAR才对,但世上人偏偏就爱钻这个牛角。
   因为课件设计原因,学生都使用ADS和AXD,以及本人对KEIL比IAR熟,这里介绍ADS和KEIL使用方式。
   (1)安装J-LINK驱动和官方软件,可去Segger官网下载
   (2)将J-LINK的20Pin JTAG线连在目标板上(非标JTAG口需要转换板)


对于ADS/AXD用户:
(3)运行ADS和AXD,在AXD menu->configure target中选择"add", 在j-link软件安装目录,比如c:/program files/segger/j-linkARM_v4.04目录中,找形如Jlink-RDI.dll的一个文件添加。
   (4)添加完成后,不要关闭对话框,在"configure"选项下,可以设置Jlink-rdi的参数,注意其中一项时钟选择Auto Selection或手工选择时钟,不要使用adaptive那项。
   (5)一路确定后,就可以正常使用ADS编辑/编译程序,AXD调试。但我的实验过程中,常常出现AXD无反应的情况,无非是多重启几次。也许高版本的j-link软件会好些。
    (6)特别注意:程序最开始几句一定要把“狗”关掉。我手头的AKAE2440开发板,如果不关"狗",J-link会自动复位,这可能是因为板子JTAG连线问题,也可能是RDI.DLL的关系,我没有进一步分析。
对于KEIL用户
   (7)选择v3.9以上的uv3,选s3c2440 target.并创建工程。
    (8)在debug设置中,选择J-link(KEIL原生支持)
    (9)在utilities选项中,选择J-LINK,flash downloader选择KEIL本身的算法:S3C2440 FLASH support. RAM地址选择0-0x1000(注意:此设置为nand flash启动的),flash地址按你的连接的NAND flash容量设定,不过超过4K意义不大。
BIN文件烧写到2440 NAND FLASH的解决方法:
对于KEIL用户来说,支持2440 nand flash下载,但必须有工程源码,且必须用keil编译,不支持直接选择bin文件下载,有时很不方便。
而J-Link配套的软件J-Flash,目前不支持s3c2440 flash下载(可见2440在欧洲用的不多)
针对这种情况,我写了一个小程序,叫做M4K.bin专门用于J-link烧写s3c2440+k9f1208 flash.
步骤如下:
1.下载m4k.bin(尺寸约140字节)
2.运行segger目录中的j-link commander(命令行)
3.使用r命令或halt命令复位/暂停arm处理器
4.输入命令loadbin d:\m4k.bin, f38
表示加载m4k.bin到2440的4K sram地址0x0f38处。
5. loadbin d:\your.bin, 0
注意,your.bin是你要烧写到nand flash中的镜像,尺寸不能超过0xf38
6. setPC f38
设置pc从m4k.bin开始执行
7.输入g命令,开始执行m4k.bin,此时程序开始把sram中从0到fff的4K数据,原封不动的写入到nand flash第0块,第0页开始的8个页中,也就是可以被2440启动自加载到sram中的。
8.片刻后,使用halt命令,再使用regs命令查看r5==8表示m4k烧写程序正确执行完毕。
9.重启开发板,2440将加载flash中前4K数据到sram中运行,也就是你的your.bin。
m4k.bin的源代码采用GPL v2开源协议发布。
请对此代码有所更改的朋友,将更改代码回帖在这里,以示尊重本人劳动及遵守GPL协议

你可能感兴趣的:(编程,c,算法,Flash)