最近到手一块超级NB的板子,OMAP35X EVM的评估板,说它NB是因为在一平方厘米的空间下面集成可好几个CPU核,有基于ARM Cortex A8的 MCU,6000系列的DSP处理器,一个视频处理器ISP,一个2D/3D图形处理器SGX,还集成了一个128M的片上NAND和128M的SRAM。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
不过由于是评估板,里面没有什么应用程序和相关的库文件,一直想玩玩QTE,现在终于有机会了,于是动手移植QTE,结果不小心,把lib下的一个关键的库文件给损坏了,系统挂掉了,一阵心虚,我还不知道怎么恢复它呢,要是被导师知道肯定骂死,这个板子是他在香港买的,别想有技术支持。
于是翻了翻说明书,郁闷,它带的说明书寥寥数语,还是英文,算了,只能这么将就着做了,现在把我成功回复记录如下:
1. 由于我的只是文件系统损坏了,所以U boot并没有重新烧录。说明书上的方法是:
1)板子先断电,连接UART3,由于复用,所以要切换SW4到相应位置
2)打开提供的PC串口软件Utilities,选择COM1,下载文件U-boot.bin
3) 给板子上电,如果不能自动下载,可以按板子上的S2启动
问题:由于没有选择烧录地址,不知道他默认把Uboot烧在哪里了,按照常理Uboot一般在nand的0x0处的,但是我的板子上0x0处烧录的是x-loader,Uboot烧在80000处了,那么难道是x-loader引导的Uboot,那么x-loader怎么烧录呢?说明书上没有说,但是可以用uboot烧录x-loader。可是如果没有uboot怎么办?
2.通过Uboot和TFTP软件PumpKin,烧录其他:
1)打开PumpKin,选上“server is running”,在“option”下设置下载文件的根目录,就是那个SDK的目录,然后再选则“give all files”
2)板子上电,进入Uboot,设置Uboot中板子的网卡变量,ip地址,网关,要与PC在一个网段上,然后ping PC的ip,如果返回成功了,说明TFTP已经开启。
3)按照说明书上面说,可以通过 超级中断->传输->发送文本文件,把reflash-micron.txt,发送下去自动执行,但是我采用这个方法,发现传下去后,不是完整的,有很多问题!
分析reflash-micron.txt,发现实际上他就相当于执行了若干的Uboot指令,而且傻的是,他文件系统烧了三次,前两次都被第三次覆盖,而且另外一个设置linux启动的环境变量的文件(后面讲到)是启动ramdisk的fs模式,而他第三次烧的显然是jaffs的文件系统,那么自动执行这两个肯定有问题,不过这两个脚本也是有好处的,你可以有选择的复制,粘贴的执行!
这里我选择的是ramdisk,jaffs好像烧了有点问题。方法是:按照脚本执行
nand unlock
mw.b 0x81600000 0xff 0x1400000
nand erase 780000 1000000
tftpboot 0x81600000 bin/ramdisk-full.gz
nand ecc sw
nand write 0x81600000 780000
这样我们就把ramdisk给重新烧录上去了。
4)接下来根据initenv-micron.txt,设置linux启动的环境变量
setenv get_kernel run nand_kernel
setenv get_initrd run nand_initrd
setenv nand_kernel nand read 0x80000000 280000 200000
setenv nand_initrd nand read 0x81600000 780000 1000000
setenv tftp_kernel tftpboot 0x80000000 uImage
setenv tftp_initrd tftpboot 0x81600000 ramdisk.gz
setenv bootargs_rd mem="128M" console="ttyS0",115200n8 root="/dev/ram0"
initrd="0x81600000",40M ramdisk_size=40960
setenv addip setenv bootargs \$(bootargs)
ip=\$(ipaddr):\$(serverip):\$(gatewayip):\$(netmask):\$(hostname):eth0:on
setenv boot_rd run get_kernel\; run get_initrd\; setenv bootargs \$(bootargs_rd)\;
run addip\; bootm 0x80000000
setenv bootcmd run boot_rd
setenv bootdelay 20
setenv bootkernel
setenv bootkernel_1
savenv
bootcmd (重启,成功!)
akingqin_731290802 2009-10-27 14:27
akingqin_731290802 2009-10-27 14:25