好久没有玩tiny6410了,今天拿出来试试。之前学习一直是跟着视频学习的。今天自己动手来做一下。
首先我将光盘linux目录下的linux-2.6.38-20150708.tgz rootfs_rtm_6410.tgz u-boot-mini6410-20111018.tar.gz 拷贝到我的UBUNTU系统中。使用tools目录下的SD-Flasher.exe将一张8G的sd卡制作为启动盘。bin文件用的是国嵌提供的。
将sd插入tiny6410中,首先我向nandFlash中下载u-boot-mini6410-20111018.tar.gz后的文件,想以后从nandflash启动,同时u-boot-mini6410-20111018.tar.gz这个uboot支持shell命令。
在通过dnw下载uboot程序时发现在64位linux系统中下载不成功但在32位可以。为了验证我的猜想,我特意下载了一个32位的UBUNTU做比较。事实证明我的猜想是正确的。
在nandflash中的u-boot能够支持shell命令。在下载的时候,我发现我不知道nandflash的分区表。但是我发现在uboot中的启动命令是NAND read: device 0 offset 0x80000, size 0x500000。于是我将linux内核写入到了nandflash的0x80000地址处。
tftp 0x50000000 uImage nand erase 80000 1fffff nand write.jffs2 0x50000000 80000 (内核大小)
在写入的时候注意留意一下内核文件的大小,并作为一个写入的参数。然后,关机重新启动,就发现能够正常启动。
在linux内核启动的过程中会打印分区表信息,这个时候就比较明确了。
但是我发现屏幕是花的。后来在网上找资料发现在启动的时候需要传入一个参数来选中正确屏幕的型号(我的是s70d)。于是在UBOOT的参数表中修改bootargs变量。
root=/dev/mtdblock2 console=ttySAC0,115200 lcd=S70D
但是在启动的时候会提示不能打开/t/dev/console。这里需要进入到linux内核的配置菜单中,找到Initial RAM filesystem and RAM disk (initramfs/initrd) support 那个选项,scripts/FriendlyARM.cpio部分置空即可。
重新启动后,发现还是无法挂载文件系统。并提示错误:Failed to execute /linuxrc. 原因是linuxrc没有执行权限。在UBUNTU下将文件系统中的文件都改成777,然后重新制作文件系统镜像即可。
sudo mkyaffs2image rootfs rootfs.yaffs2
完