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

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线。

(原文件名:JLink_2440.jpg)

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开发板,一般都外接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

上述操作命令可以参考图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里执行:
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,如果你的程序比较小,请自行设置。


收藏42
 

回复


举报

 
论坛公益广告:使用360产品将会被封锁ID。周流氓枪毙1万次也无法弥补3721犯下的罪行。

heky

heky
当前离线

积分
1423


2

发表于 2009-3-4 14:37:36 |
只看该作者

好东西
 
 

回复


举报

 
公益广告:发表新主题时,务必起一个能说明帖子内容的清晰标题,否则将会被封锁ID(点击查看详细说明)

juedi

juedi
当前离线

积分
435


3

 楼主|
发表于 2009-3-4 14:38:19 |
只看该作者

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。

时间: 2025-01-26 16:18:12

使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法的相关文章

MIPS裸板程序烧写,MIPS裸板程序烧写?

问题描述 MIPS裸板程序烧写,MIPS裸板程序烧写? MIPS裸板程序如何烧写?烧写工具是什么? 请大侠回答,谢谢.MIPS裸板程序烧写问题?MIPS裸板程序烧写?

u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统

http://www.linuxidc.com/Linux/2012-09/70510.htm  来源:Linux社区  作者:赵春江  uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该功能,并组成一个最简单的系统,这不仅要移植uboot,还要移植linux内核及创建一个根文件系统. 首先我们对nandflash进行分区,规划好每个文件存放在nandflash的位置.下面是nandflash的分区: 第0分区:0x000000000000-0x000000080000为uboot

linux中CT开发板给nand分区,获得8G空间

df -h查看结果:  代码如下 复制代码 root@cubietruck:~# df -h Filesystem      Size  Used Avail Use% Mounted on /dev/root       2.0G  614M  1.3G  32% / devtmpfs        889M  4.0K  889M   1% /dev none            4.0K     0  4.0K   0% /sys/fs/cgroup tmpfs            2

S3c2440如何利用JLINK烧写U-boot到NAND Flash中

      很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给删除了,这时候开发板上电后由于没有bootloader,硬件没有被初始化,在NAND F

给开发板烧写程序的N种方式

以下是我的总结,有些事其他网友写的,这里分享出来主要是让大家对烧写程序有个广阔的了解. 开发板没有BootLoader的烧写(flash中没有任何内容时,或误擦除uboot),仅用于烧写bootloader和裸机程序到flash上. 1. 并口Wiggler JTAG调试板 配合HJTAG软件,可以烧写nandflash和norflash,并口速度较慢  (需要用到并口,现在笔记本电脑基本没有并口了,这个方法局限性很大) 2. HJTAG USB仿真器 配合HJTAG软件,可以烧写nandfla

Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

  很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot-2009.03差别不大,只不过这个u-boot-2009.03是从TI的网站上下载的,是DAVINCI系列最新的u-boot,也适合DM6467和DM365/368,移植的方法承接<Davinci DM6446开发攻略--u-boot-1.3.4移植(1)>,而本篇着重介绍nand flas

Jlink 烧写Uboot

  第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明    如果您是首次安装本SDK,请直接参看第2章.     第二章首次安装SDK 1.Hi3531 SDK包位置     在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包.   2.解压缩SDK包     在linux服务器上(或者一台装有linux的PC上,主流的linux发

手把手教你烧写烧写u-boot、kernel、rootfs(目标平台S3C2410)

内核分区空间: Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit": 0x00000000-0x00080000 : "Bootloader" 0x00080000-0x00280000 : "Linux Kernel" 0x00280000-0x00680000 : "Root File System" 0x00680000-0x04000000 : "User

嵌入式-win10怎样烧写JZ2440程序

问题描述 win10怎样烧写JZ2440程序 我是嵌入式小白,买了个JZ2440V2想学习嵌入式.win10系统怎样简单快速烧写程序进学习板?工具有网线和USB线,还有J-Link.我想用DNW但是安装不了驱动,然后pc和学习板又ping不通,烦.求打救 解决方案 给XC2440开发板烧写程序非常灵活,总结起来有这么几种方式: 空片烧写(flash中没有任何内容时,或误擦除uboot),仅用于烧写bootloader和裸机程序 1. 并口Wiggler JTAG调试板 配合HJTAG软件,可以烧