题记:一个多月之前在淘宝上买了一块开发板,带wifi功能,之前我的那块板子因为焊接问题导致焊接孔变小,无法再次焊接,因此又买了块直接焊好的wifi模块的板子,但是3月24日的一次打篮球受伤,导致膝盖两组韧带撕裂,4月13日在上海六院手术,现在已经手术后6周了(将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能)但愿是这样吧,5月23日回校,开始捣鼓毕业的东东,眼看着就要马上毕业了呀的,时间紧迫啊.这两天在捣鼓新板子.发现了问题.现在描述下所遇到的问题.
问题1: 我按照原来的方式,nfs挂载后,进入ko文件,然后./load3518,发现如下问题
一直无限次循环,然后问卖家,卖家说要按照以下重新进行uboot和rootfs的烧写:(我都没搞过,问卖家,爱答不理的,烦人)
编译内核
cd ./linux-3.0.y
./mk3518.sh
mk3518.sh 脚本里面包含了编译linux内核所需的所有的命令,具体看mk3518.sh文件,编译成功将生成在目录arch/arm/boot/uImage文件,这个就是要烧录到板子上的
制作rootfs文件系统
./mkfs.jffs2 -d ./rootfs-ov9712 -l -e 0x10000 -o rootfs-ov9712-c.jffs2
./mkfs.jffs2 -d ./rootfs-ar0130 -l -e 0x10000 -o rootfs-ar0130-c.jffs2
./mkfs.jffs2 -d ./rootfs-imx122 -l -e 0x10000 -o rootfs-imx122-c.jffs2
这个就是要烧录到板子上的文件
uboot请使用压缩包里面的,256k boot分区
地址空间说明
| 256K | 1M | 4M | 剩下2.75M供用户自由使用
|------------|---------------|-----------------------|
| boot | kernel | rootfs |
uboot烧写内核
set serverip 192.168.1.104;mw.b 0x82000000 0xFF 0x100000;tftp 0x82000000 uImage;sf probe 0;sf erase 0x40000 0x100000;sf write 0x82000000 0x40000 0x100000
烧写rootfs文件系统
mw.b 0x82000000 0xFF 0x400000;tftp 0x82000000 rootfs-ov9712-c.jffs2;sf probe 0;sf erase 0x140000 0x400000;sf write 0x82000000 0x140000 0x400000 //ov9712 sensor烧写这个
mw.b 0x82000000 0xFF 0x400000;tftp 0x82000000 rootfs-ar0130-c.jffs2;sf probe 0;sf erase 0x140000 0x400000;sf write 0x82000000 0x140000 0x400000 //ar0130 sensor烧写这个
mw.b 0x82000000 0xFF 0x400000;tftp 0x82000000 rootfs-imx122-c.jffs2;sf probe 0;sf erase 0x140000 0x400000;sf write 0x82000000 0x140000 0x400000 //imx122 sensor烧写这个
设置启动参数和启动命令
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1M(kernel),4096K(rootfs),2816K(user)';setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset
2 开始摸索着如何进行烧写
首先要进行tftp服务器的搭建 按照http://blog.chinaunix.net/uid-29094179-id-3864671.html 进行搭建.然后在本地试了以下.hi3518c-wifi/rootfs-ar0130/lib目录里面,然后按照用这个命令./mkfs.jffs2 -d ./rootfs-ar0130 -l -e 0x10000 -o rootfs-ar0130-c.jffs2再生成一个rootfs文件系统..
烧写的时候要将uImage和rootfs-ar0130-c.jffs2;放到tftpboot文件夹里面,这样才能下载下来.烧写之后然后,再重试,还是到了./load3518那就卡了然后就问卖家,他现在才说不用./load3518,提供的wifi的rootfs,已经把会自动运行load3518了,不需要在运行load3518.Oh,,my god.半天多废了啊.不过学回来如何烧写等等.
发现在lib里面没有libstdc++.so.6..然后问卖家说一般客户都是用c,我用才c++,并且libstdc++.so很大有5M,而设置的rootfs才只有4M,空间不足,要通过两个方法去改,一个是把libstdc++.so.6(是一个软链接文件)和libstdc++.so都要重新放到hi3518c-wifi/rootfs-ar0130/lib目录里面,然后按照用这个命令./mkfs.jffs2 -d ./rootfs-ar0130 -l -e 0x10000 -o rootfs-ar0130-c.jffs2再生成一个rootfs文件系统.然后把这个文件系统重新烧写..要修改烧写命令和启动命令
烧写命令修改--mw.b 0x82000000 0xFF 0x400000;tftp 0x82000000 rootfs-ar0130-c.jffs2;sf probe 0;sf erase 0x140000 0x540000;sf write 0x82000000 0x140000 0x640000
启动命令修改-setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:256K(boot),1M(kernel),6M(rootfs),2816K(user)';setenv bootcmd 'sf probe 0;sf read 0x82000000 0x40000 0x100000;bootm 0x82000000';saveenv;reset
最后再进行烧写--然后可以,,晚上再试试wifi行不行..