不具备USBdevice的6410电路板使用tftp完成操作系统的烧写和配置
[复制链接]
手头有一块6410的电路板,硬件上usbdevice接口功能不正常,无法使用dnw工具完成uboot、内核和文件系统的烧写,摸索了一段时间,通过uboot支持的dm9000驱动,使用tftp将操作系统写入成功,发个经验贴,顺便做个记录
1、首先将u-boot(SD卡)烧写进SD卡,工具不限,只要成功即可,我使用的是友善提供的SD-Flasher.exe工具。顺便说一下,如果开发板上连SD卡接口都没有
的话,也可以使用仿真器(如Jlink)通过Jtag接口将uboot下载至SDRAM中,第一步的目的就是将uboot拷贝至SDRAM中运行!
2、接下来使用在SDRAM中运行的Uboot功能,通过tftp下载Uboot至NandFlash
其实是通过tftp下载uboot至SDRAM的固定地址,然后在通过nand命令,将SDRAM的固定内存段拷贝至nand的固定地址处,长度也固定!
为了正常使用tftp,
首先需要配置IP,将PC本地连接的IP和电路板的IP配置在同一网段,ipaddr是6410的IP,gatewayip是网关,serverip是PC的IP,需要在PC段设置静态IP,设置完成之后一定要saveenv将设置写入flash之中,否则下载启动有得重新设置: MINI6410 # setenv ipaddr 192.168.1.3 MINI6410 # setenv gatewayip 198.168.1.1 MINI6410 # setenv serverip 192.168.1.2 MINI6410 # saveenv
接下来需要在PC端下载TFTP服务软件,安装之后打开软件配置,主要是配置Current Directory,这个路径下主要是存放你需要下载的文件的。同时需要关闭防火墙。
我的6410 IP为192.168.1.3,PC机的本地连接IP为192.168.1.2。可以在uboot上通过ping 192.168.1.2来测试网络是否连接好了。如果可以ping通,那么会出现: 好了接下来利用命令完成uboot的nand烧写: MINI6410 # nand erase 0x0 0x80000 //擦除nand,uboot启动地址,参考手册可知起始地址是0x0 MINI6410 # tftp 0xc0008000u-boot_nand-ram128.bin //烧入SDAM
MINI6410 # nand write 0xc0008000 0x0 0x80000 //写入nand的固定地址
可以观察一下0x0处的数据: MINI6410 # nand dump 0x0
下面把开发板启动开关拨动到从NandFlash中启动的配置,重新上电。
我用的是友善的uboot,信息打印正确! 这时候需要重新设置网络: MINI6410 # setenv ipaddr 192.168.1.3 MINI6410 # setenv gatewayip 198.168.1.1 MINI6410 # setenv serverip 192.168.1.2 MINI6410 # saveenv
3、下载linux内核zImage到nand
把需要下载的文件发到刚刚设置的tftpboot目录下,就可以使用下面的方法来下载了,比如我们要下载linux内核zImage:
tftpc0008000 zImage
这样就将linux内核镜像加载到了起始地址为0xc0008000的内存中
擦出相关nand地址段
nand erase 0x80000 0x500000 //这里的地址要与Uboot的打印地址一致,也就是编译Uboot时设定的内核启动地址和大小一致。
写入相应的地址段:
重新启动:
3、烧写文件系统
设置启动项 bootargs setenv bootargs "root=/dev/mtdblock2rootfstype=yaffs2 console=ttySAC0,115200" saveenv
我的电路板的SDRAM是128M的,所以文件系统不能太大,可以稍微精简一下,烧录成功后再补充!
生成yaffs2文件的方法就不赘述了,网上有很多教程,准备好生成的rootfs.img,下载制作的镜像,烧写flash: 利用Uboot命令可查看,我的SDRAM起始地址为0x50000000 ~0x58000000
所以使用烧写地址可选为0x51000000 下载文件系统: 根据内核打印的信息可知:文件系统的地址写在:0x580000 大小0x3FA80000
nand erase 0x580000 0x3FA80000 //擦除文件系统所在的整个分区,即filesystem分区 传递文件系统镜像: tftp 0x51000000 rootfs.img 完成传输后会打印出信息: 所以传输的文件大小就为5e3e9c0 hex nand write.yaffs 0x51000000 0x580000 0x5e3e9c0//这里烧写的字节数,即5e3e9c0,为上面提示的传输字节数 重启后,内核启动,系统启动成功!!
4、总结 当然到了内核启动部分,也可以设置成NFS调试,然后再写入文件系统,看个人喜好了! 这三部分烧写完毕后,才能进行相关驱动和应用程序的开发了,算是进行开发的第一步吧!希望对自己和别人有所帮助!
|