九鼎创展论坛中文版English
登录 | 立即注册 设为首页收藏本站 切换到宽版
查看: 7554|回复: 0

使用JLink烧写S3C2440开发板的Flash

[复制链接]
发表于 2012-7-19 11:04:13 | 显示全部楼层 |阅读模式
使用JLink烧写S3C2440开发板的Flash
                                                            刘启明 2010-04-01
1.简要说明
JLink的调试功能、烧写Flash的功能都很强大,但是对于S3C2410、S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。

    本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。原理为:JLink可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。由于我手头使用的是飞凌的FL2440-Ⅰ开发板,这里就以该开发板为例,当然其他开发板都类似。

2. 操作步骤
2.1 连接硬件
    接通FL2440开发板的电源,打开电源。将JLINK的JTAG接口接到开发板的JTEG座,如果JTEG接口不匹配,请使用JTEG转接板。将JLINK的USB端口接到PC的USB端口。当然前提是JLINK的驱动已经安装完毕。
2.2 运行J-Link commander
    双击桌面上的J-Link ARM V4.08l图标,具体名称视安装JLINK驱动的版本而定,其启动界面如下图所示。 (如果没有发现检测到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,下载程序时会很快
1.jpg
2. 下载并运行init.bin,这是用来初始化SDRAM的
2.1 如果是NAND启动:
h                                     //由于开发板上电后可能存在程序运行,故先停止
loadbin e:\init.bin 0       //E盘根目录下的init.bin文件导入0地址
setpc 0                            //
将运行指针指向0地址
g                                //
运行0地址所在程序
    执行上面三条命令后,开发板处理器就会执行init.bin文件,对板上的SDRAM进行初始化等操作。下面,就可以下载u-boot到SDRAM运行了。
2.2 如果是Nor启动:
loadbin e:\init.bin 0x40000000      
setpc 0x40000000
g

    上面三条指令是开发板设置为从NOR启动时的指令,这时仍然是执行init.bin文件,而且同样也是在S3C2440里面的4K SRAM里面运行。只不过启动方式不同,对应SRAM的起始地址不同罢了。
注意:2.12.2两步依启动配置方式不同而做出相应选择,只执行其中一步!

3. 下载特制的uboot:
h                                                //停止处理器(halt命令)
loadbin e:\u-boot.bin 0x33f80000  //
E盘根目录的u-boot.bin导到相应地址
setpc 0x33f80000                            //
将运行指针指向相应地址
g                                                //
运行相应地址所在程序

上述操作命令执行界面如下:

2.jpg
现在,u-boot已经启动了,在串口工具上可以看到下图所示的界面。
3.jpg
4.
使用u-boot烧写到Flash
4.1 将bootloader烧写到nand-flash

第一步:在J-Link commander里执行:
h
loadbin e:\
2440bootV5.bin 0x30000000
g

第二步:在u-boot里执行(串口终端):
nand erase 0 30000       // 擦除从0地址开始的大小为0x30000Nnad Flash扇区
nand write.jffs2 30000000 0 30000   //
把前面下载到0x30000000的程序烧写到Nand
注意:上面的30000表示2440bootV5.bin的大小为192KB,具体大小似该文件而定。

4.2 通过u-boot烧写到Nor Flash:
第一步:在J-Link commander里执行:
h
loadbin e:\
2440bootV5.bin 0x30000000
g

第二步:在u-boot里执行[串口终端]:
protect off all        // 解锁
erase 0 2ffff         //
擦除从0地址开始的大小为0x30000NOR Flash扇区(大小为可擦除块的整数倍,可以运行flash info命令查看)
cp.b 0x30000000 0 30000   //
把前面下载到0x30000000的程序烧写到NOR
注意:上面用的2ffff30000等数字是192K,如果你的程序比较小,请自行设置。

4.14.2根据开发板启动方式选择执行,只执行其中一种方式。执行完后,重启开发板,刚才烧进去的bootloader也就跑起来了。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳市九鼎创展科技官方论坛 ( 粤ICP备11028681号-2  

GMT+8, 2019-9-22 11:56 , Processed in 0.096895 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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