视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
J-link V7烧写flash
2025-10-05 17:05:07 责编:小OO
文档
1. 简要说明 

JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。 

本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。原理为:JLink可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。 

2. 操作步骤 

2.1 连接硬件 

对于大多数的S3C2410、S3C2440开发板而言,它们所用的JTAG接口一般有3种(如图1所示),其中前两种用得比较多。 

 (原文件名:3种jtag.JPG) 

引用图片

但是市面上的JLink,大多只支持第3种JTAG接口,所以需要用到转接板。或者直接使用JLink的变种,如图2所示的两种改进版JLink: 

 (原文件名:2种jlink.JPG) 

引用图片

以mini2440为例,如图3接好JTAG线。 

 (原文件名 

引用图片

2.2 运行J-Link commander 

J-Link commander启动界面如图4所示,(如果没有发现检测到CPU,就在里面执行usb命令连接JLink,再执行r命令识别处理器)。 

 (原文件名:JLINK启动界面.JPG) 

引用图片

2.3 下载运行特制的程序 

对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。 

对于S3C2410、S3C2440开发板,一般都外接M的SDRAM。SDRAM能被使用之前,需要经过初始化。 

所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去动行,它将实现对Nor、Nand Flash的操作。 

以下是在J-Link commander里的命令,假设init.bin、u-boot.bin在e:盘下。 

1. speed 12000               //设置TCK为12M,下载程序时会很快  

2. 下载并运行init.bin,这是用来初始化SDRAM的  

2.1 如果是NAND启动:  

loadbin e:\\init.bin 0       

setpc 0  

g  

2.2 如果是Nor启动:  

loadbin e:\\init.bin 0x40000000       

setpc 0x40000000  

g  

3. 下载特制的uboot:  

h  

loadbin e:.bin 0x33f80000  

setpc 0x33f80000  

g  

上述操作命令可以参考图5。 

 (原文件名:使用jlink下载运行uboot.JPG) 

引用图片

现在,u-boot已经启动了,在串口工具上可以看到如图6所示界面,以后就可以通过网络、串口下载文件,然后使用u-boot里的命令进行烧写。  

 (原文件名:u-boot启动界面.JPG) 

引用图片

当然,如果没有网络,也不想忍受串口的速率,也可以通过jlink commander下载,比如:  

h  

loadbin your_file.bin 0x30000000  

g  

这时,你的文件已经被下载到SDRAM 0x30000000去了。  

后面的操作就是u-boot的命令了。 

2.4 使用u-boot烧写Flash 

以例子为例,假设需要烧写一个名为leds.bin的程序到Nor、Nand Flash,那么请参考: 

(1).通过Jlink下载: 

在J-Link commander里执行: 

loadbin e:\\leds.bin 0x30000000 

注意leds.bin的大小 

(2).通过u-boot烧写到Nor Flash: 

在u-boot里执行: 

protect off all        // 解锁 

erase 0 2ffff         // 擦除从0地址开始的大小为0x30000的NOR Flash扇区(大小为可擦除块的整数倍,可以运行flash info命令查看) 

cp.b 0x30000000 0 30000   // 把前面下载到0x30000000的程序烧写到NOR去 

(3).通过u-boot烧写到Nand Flash: 

在u-boot里执行: 

nand erase 0 30000           // 擦除从0地址开始的大小为0x30000的Nnad Flash扇区 

nand write.jffs2 30000000 0 30000   // 把前面下载到0x30000000的程序烧写到Nand去 

注意,上面用的2ffff、30000等数字是192K,如果你的程序比较小,请自行设置。

init.bin用汇编写成,位置无关,可以在任何地方执行。  

u-boot.bin也是经过了我的大量修改,可以适用于友善之臂、优龙、扬创等等开发板,具备以下特点:  

1. 支持CFI、JEDEC接口的NOR FLASH  

2. 支持各种NAND FLASH  

3. 支持网络CS00、DM9000  

4. 支持USB下载  

5. 支持烧写YAFFS文件系统映象  

下载地址为:http://ouravr.com/bbs/bbs_upload34876/files_12/ourdev_422781.rar 

这两个程序是我为了基于FT2232D的OpenJTAG编写、修改的,后来想想在JLink上也可以使用。  

实际上,针对基于FT2232D的USB JTAG工具,我已经编写了一个NOR、NAND FLASH烧写器,目前JLINK烧写NAND的工具还在研究中。  

这是一种间接的、麻烦的、通过u-boot烧写NOR、NAND的方法,但是:速度很快,并且对于JLink似乎也没人搞定烧写NAND。 下载本文

显示全文
专题