//说明:我的板子是mini2440 有2M的s29al016j nor flash 和一块 256M的 k9f2608u0b nand flash。
//这篇文章并非全部原创,只是把网友“sblpp”在http://bbs.eeworld.com.cn/thread-144846-1-1.html 的帖子修改了并附图。需要说明的是uboot.bin这个文件必须支持nand flash 驱动
//使用的uboot.bin 是网友tekkaman移植的。大家可以到这里下载:http://blog.chinaunix.net/uid-20543672-id-94362.html,也可以从这里下载 u-boot.zip
//下面用的初始化程序init也是网友提供的,我会在附件中提供 init.zip ,
//下面说明烧写方法,在jlink-command里输入的命令用蓝色字体标明,在uboot的终端环境输入的命令用红色标明.
注:烧写时 最好先 nand erase 0 擦除正片FLASH
//----------准备工作
打开j-Link command
命令:
usb
//初始化usb 连接
r //重置
效果如图:
//经过上面步骤,就表示jlink已经连接了arm 核
//----------------------初始化SDRAM
1 speed 12000 //设置TCK为12M
2 loadbin d:\init.bin 0
3 setpc 0
4 g
//----------------------初始化SDRAM
1 speed 12000 //设置TCK为12M
2 loadbin d:\init.bin 0
3 setpc 0
4 g
做完这一步,你会发现你得mini2440的led灯变成了流水灯,说明初始化sdram成功了 !
//----------------------下载UBOOT 内存中运行的uboot
5 h //暂停
6 loadbin d:\u-boot.bin 0x33f80000
7 setpc 0x33f80000
8 g
//经过上面步骤后,mini2440的蜂鸣器会笛的一声,终端可以看到uboot启动了,并打印出了信息
//下面的步骤我就不截图了,只要分区是在超级终端输入命令还是在jlink command输入命令就ok了。需要注意的是上面的烧写uboot到
0x33f80000 这个地址不能修改,这是编译的时候就指定的基地址。下面的
0x30000000可以变。
//----------------------烧写Uboot至NandFlash
9 loadbin d:\u-boot.bin 30000000 //重新将uboot load 指内存3000 0000处 不运行,因为在0x33f800地址处的uboot已经运行过,也就是被修改了,所以要重新下载新的uboot.bin映像,以前我失败过就是因为这里
10 nand erase 0 40000 //擦除从0地址开始的大小为0x40000的NandFlash扇区 256K
11 nand write.jffs2 30000000 0 40000 //把前面下载到0x33f80000的程序烧写到NandFlash去
//----------------------烧写内核
12 loadbin e:\uImage 30000800
13 bootm 30000800 //可以直接运行内存中内核
14 nand erase 60000 200000 //擦除从60000开始 2MB的空间放内核
15 nand write.jffs2 30000800 60000 200000 //将内存中30000800中的内核映像烧写至60000开始的NandFlash
//烧写文件系统 260000开始
16 loadbin e:\myfs.img 30000800
17 nand erase 260000 //擦出260000后面所有的FLASH空间
18 nand write.yaffs 30000800 260000
//----------------------烧写Uboot至NandFlash
9 loadbin d:\u-boot.bin 30000000 //重新将uboot load 指内存3000 0000处 不运行,因为在0x33f800地址处的uboot已经运行过,也就是被修改了,所以要重新下载新的uboot.bin映像,以前我失败过就是因为这里
10 nand erase 0 40000 //擦除从0地址开始的大小为0x40000的NandFlash扇区 256K
11 nand write.jffs2 30000000 0 40000 //把前面下载到0x33f80000的程序烧写到NandFlash去
//----------------------烧写内核
12 loadbin e:\uImage 30000800
13 bootm 30000800 //可以直接运行内存中内核
14 nand erase 60000 200000 //擦除从60000开始 2MB的空间放内核
15 nand write.jffs2 30000800 60000 200000 //将内存中30000800中的内核映像烧写至60000开始的NandFlash
//烧写文件系统 260000开始
16 loadbin e:\myfs.img 30000800
17 nand erase 260000 //擦出260000后面所有的FLASH空间
18 nand write.yaffs 30000800 260000
注:块大小是2048 64字节;
在烧写的时候 一定是要2112的倍数才行 比如 我要烧写的文件是6.38 MB (6,699,264 字节) 那么
nand write.yaffs 30008000 260000 663900
//good luck my friends!