DM8168 心得之从SD卡烧写到NAND

2015/05/02 23:36
阅读数 114

/******************************************************************

* author: 卢浩

* time: 12.03.08

* environment: ubuntu10.04LTS +TI DM8186

* kernel version: linux-2.6.37

******************************************************************/

这个还是比较纠结的...

当时看ti的文档,如图

但是我输入mmc init 却没反应...后来再看文档才发现TI坑人啊...mmc init 应该更换为Mmc rescan 0

而下面的fatloadmmc 1 0x81000000 uImage 应该把其中的1改成0

fatload mmc 0 0x81000000 uImage

好了,现在可以在uboot阶段初始化mmc了...我们可以开始烧写了

首先,拨码开关调至从sd卡启动,按空格进入uboot状态输入mmc rescan 0。然后会显示如图  

然后再输入

mw.b 0x81000000 0xFF 0x260000  //初始化使用的内存,全部置1

输入

fatload mmc 0 81000000 u-boot.noxip.bin[从SD卡中下载u-boot.noxip.bin到内存81000000处

输入

nand erase 0x0 0x260000 对将要使用的区域进行擦除操作

输入

nandecc hw 2

请看图,下图是TI对于ecc的一段说明

接下来输入

nand write.i 0x81000000 0x0 0x260000 [把内存81000000处的内容写到nand里面,从0x0开始,到0x260000结束]

接下来输入

nandecc hw 0

OK,至此,uboot烧写完毕

接下来烧写kernel

输入

mw.b 0x81000000 0xFF 0x440000 [初始化使用的内存,全部置1]

输入

Fatload mmc 0 81000000 uImage [从SD卡下载uImage到内存]

输入

nand erase 0x00280000 0x00440000 [对要使用的区域进行擦除操作]

输入

nand write 0x81000000 0x00280000 0x00251000 [从内存把uImage写入nand里面]

接下来烧写filesystem

输入

mw.b 0x81000000 0xFF 0x0C820000 [初始化使用的内存,全部置1]

输入

Fatload mmc 0 81000000 rd-jffs2.bin [从SD卡下载rd-jffs2.bin到内存]

输入

nand erase clean 0x006C0000 0x0C820000 [对要使用的区域进行擦除操作]

输入

nand write 0x81000000 0x006C0000 0x000e0700 [从内存把rd-jffs2.bin写入nand里面]

这里有个需要注意的就是我们的镜像文件的size

TI的文档有这么一段描述  

这个nand是2K对齐的。

我一开始没注意到,直接用的镜像的size,然后错误,如图  

尝试写入非对齐页失败

后来我改了下,稍微比0xe06128大一点用的是0xe07000。于是成功了。

设置拨码开关从nand启动

按空格进入uboot状态,设置env变量。如图  

Setenv bootcmd 'nandecc sw;nand read81000000 280000 440000;bootm 81000000'

Setenv bootargs 'console=ttyO2,115200n8root=/dev/mtdblock 7 rw rootfstype=jffs2 mem=100M earlyprintk'

如果root=/dev/mtdblock7启动不了的话尝试换成root=/dev/mtdblock3

然后记得saveenv

重启开发板,可以从nand启动linux系统了。

这里有个插曲

TI的uboot默认是nandecc是硬件校验,结果启动kernel的时候出错,显示crc校验失败

如图  

后来我在bootcmd 里面加入了一句 nandecc sw ,变成从软件校验,结果通过了。  

输入root登录即可

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部