天嵌 ARM开发社区

 找回密码
 注册
查看: 5421|回复: 7

使用JLink间接烧写S3C2440开发板Nor/Nand Flash的方法

[复制链接]
cmasp 发表于 2009-7-16 12:17:58 | 显示全部楼层 |阅读模式
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种。
但是市面上的JLink,大多只支持2.54mm间距20pin的JTAG接口,所以需要用到转接板。或者直接使用JLink的变种,如下面网址所示的两种改进版JLink:
http://item.taobao.com/auction/i ... 75c9c1a97a0333d.htm
http://item.taobao.com/auction/i ... 8eeb8e092859552.htm

2.2 运行J-Link commander
J-Link commander启动后会自动化检测CPU,如果没有发现检测到CPU,就在里面执行usb命令连接JLink,再执行r命令识别处理器。

2.3 下载运行特制的程序
对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。
对于S3C2410、S3C2440开发板,一般都外接64M的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:\u-boot.bin 0x33f80000
setpc 0x33f80000
g


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

当然,如果没有网络,也不想忍受串口的速率,也可以通过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里执行:
h
loadbin e:\leds.bin 0x30000000
g

注意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. 支持网络CS8900、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。
zhangwb 发表于 2009-7-30 15:12:37 | 显示全部楼层
谢谢阁下了,试试看
linghai 发表于 2009-8-22 21:04:05 | 显示全部楼层
好东西 正需要呢 谢谢分享
wachaong 发表于 2009-10-4 18:56:29 | 显示全部楼层
请重新上传下init.bin 等等。。
diaojie 发表于 2009-10-8 13:09:11 | 显示全部楼层
本帖最后由 diaojie 于 2009-10-8 13:22 编辑

下载链接坏掉了,麻烦楼主重新上传下,谢谢!
还有,我新买JLink v7电缆配套光盘里有这篇教程,也附带了教程里提到的init.bin和u-boot.bin,但我在JLink commander下用loadbin命令传到SRAM的时候总是提示“Segementation fault",接着JLink commander就退出了,不知道是什么问题。我用的是Linux下的JLink驱动,其他JTAG操作都正常。
thinke365 发表于 2009-11-19 21:01:06 | 显示全部楼层
1. 简要说明
烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。
怎么回事?

那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。

当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。
怎么回事?
启动的入口地址不同?


一般都外接64M的SDRAM。SDRAM能被使用之前,需要经过初始化。
所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去运行,它将实现对Nor、Nand Flash的操作。
哪里可以下到这个init.bin的代码?

2.1 如果是NAND启动:
loadbin e:\init.bin 0      
setpc 0    // 这个是JLink命令?
g
2.2 如果是Nor启动:
loadbin e:\init.bin 0x40000000      
setpc 0x40000000 // 这个是JLink命令?

g     

3. 下载特制的uboot:  // 这个uboot,也是从那个u-boot修改而来的吗?
h
loadbin e:\u-boot.bin 0x33f80000
setpc 0x33f80000
g

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




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



init.bin用汇编写成,位置无关,可以在任何地方执行。  
牛人啊,能给源码吗?

下载地址为(文件太大了,本站上传不了):http://ouravr.com/bbs/bbs_upload34876/files_12/ourdev_422781.rar
// 下载不了啊!!!

.......................................
thinke365 发表于 2009-11-19 21:02:05 | 显示全部楼层
xianjun_l 发表于 2010-1-5 21:55:05 | 显示全部楼层
能给个 init.bin 烧写代码吗
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-14 05:54 , Processed in 1.031250 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表