|
飞凌的OK6410板子,买了快一个月了,但就刚买那两天试了下,之后事比较多就放下了。昨天突然想再折腾下,弄了一天终于比较明朗了,总结一下。
基本配置:
cpu: s3c6410
ram: ddr sdram 256M
nandflash: 2G
screen: 4.7 480x272
接口比较多但基本没什么外设,现在用到的有串口接口、SD卡、网口、USB host。
pc主要是linux平台,如果实在解决不了问题用xp虚拟机。目前发现有一个问题不好解决。
串口通信用c-kermit,因为之前用minicom发现有问题,网上也更推荐c-kermit,另外用起来也比较舒服,全命令操作。
自带的Wince系统,用了会,感觉没兴趣,之前就换成linux了。
从nandflash启动,先用启动到Eboot,然后按A清除nandflash,这步是必须的,不然之后会出错。然后再启动就没有任何反应了。
官方手册有两种烧写linux方法,一键烧写和分步烧写。
开始时试分步烧写遇到不少麻烦。因为手册上用的全是windows下的工具,在linux下比较困难,还好经验比较多,又上网找了不少资料。
首先得启动到uboot,只能用sd卡了,而手册里要用一个windows下的工具来制作,无奈用了下虚拟机(之后的操作就再也不用了)。其实它只是把一个文件拷到sd卡的某个地址,但具体是什么地址不清楚,网上说法也不一,有的说是最后的8k,有的说是根据fat32的分区表计算的,这个问题以后再仔细研究吧。
那个文件是一个uboot,自带了一些启动参数,用于自动烧写linux。
然后调整到sd卡启动方式就要以启动了,按空格停住。这时就进入uboot了。
烧写的步骤是分别将uboot、linux内核、文件系统烧写到nandflash的不同地址。
首先要解决的问题就是怎么把文件传到板子上。
因为这里手册上用的超级终端和dnw,在这纠结了好一会。
发现c-kermit串口传文件还是比较方便的:
uboot里运行loadb 地址,然后退到命令模式send filename就可以发过去了,这时文件传到指定的内存地址,再用uboot的命令就可以烧写到nandflash里了。但有一个问题,串口传输太慢,发了uboot还行,发内核就要十多分钟,显然不好用。手册里是用dnw通过usb传的。上网一找dnw有linux版本,但编译了好几个都没法用,最后放弃了。
最后还是用了自动烧写的方式。
还是刚才的sd卡,把3个文件放进去,用它启动就行了。安装完再从nandflash启动就进入了linux。光盘里的linux比较简单,虽然也不小,但不少都是qt相关的东西,默认进入QTOPIA界面,感觉易用性还好。但我对GUI的东西不感兴趣,除了/opt其他的加里来也就十几兆了,不少命令都没有,连dhcpcd或dhclient都没有。昨天试图编译一个dhcpcd,结果发现/分区不可写,运行dhcpcd不方便,于是按手册上烧个yaffs2文件系统。重启调参数后发现启动到内核pc端就没反应了,东西直接显示在lcd上,找了好久不知道怎么回事。
今天终于发现是启动参数弄错了,console=ttySAC0 写成了console=/dev/ttySAC0,是手册上错的,手册看上去很详细,错误一片片的,很无语。
然后根分区可写了。
文件要传到板子上,最明了的方法是用sd卡,但比较麻烦,用网络传比较方便,和pc用交叉网线连上,设好ip,然后在pc上启动一个web或ftp服务器,板子上有wget、ftpget、ftpput,可以下载上传。tftp和nfs因为之前没配明白,先没试,以后直接开ssh就行了。
传上dhcpcd,运行出错,非法指令什么的意思,调参数重编译几回还不行,后来换板子光盘的编译器重编错误变了,但还是连不上。
后来想这个linux也不好用,不如换一个。
pc上用的archlinux,很顺手,但官方没有arm版。虽然有个非官方的但一看包很少,也不活跃,就算了。其余可以考虑的基本就debian和gentoo了。对gentoo无爱,没那么多时间浪费在交叉编译上,环境也不好搭。debian成最优解。又恰好看到http://code.google.com/p/mini641 ... 路就明朗了。
按之前烧写yaffs2的方法,只是文件换成了上边的debian_squeeze_armel_minimal_28.01.2011.tar.bz2。而内核还用之前的,尝试下果然可行。虽然启动比之前慢了点,但命令基本可pc没什么差别了,又可以从源安装包,非常方便。
还有个问题是系统装在nandflash不大方便,如果能安在sd卡上就好了。
现在的情况是uboot和内核在nandflash上,文件系统在sd卡上,基本实现了,下一步就是看怎么把内核也放sd卡上。
走了些弯路,最后这么实现的:
sd卡只放文件系统,单分区,ext3格式,直接把上边的文件解压到里边。
改uboot启动参数:
setenv bootargs "root=/dev/mmcblk0 console=ttySAC0,115200"
bootcmd不变:
bootcmd=nand read 0xc0008000 0x100000 0x500000;bootm 0xc0008000
但有个问题,默认的内核不支持ext3分区。开始时想办法把sd卡弄成yaffs2格式,发现好像不对。后来重编译内核加入ext3支持可以启动了。
然后回来了开始的dhcp问题,现在有dhclient命令了,但运行发现无问题,应该是少内核选项,重编译后好了。
板子终于可以上外网了。
一些备忘:
bootargs=root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200
bootcmd=nand erase;fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x100000;fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x100000 0x500000;fatload mmc 0:1 0x50008000 cramfs;nand write.e 0x50008000 0x600000 0x7800000;
#nand:
bootargs=root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200
bootcmd=nand read 0xc0008000 0x100000 0x500000;bootm 0xc0008000
bootdelay=1
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
ipaddr=192.168.1.20
serverip=192.168.1.10
gatewayip=192.168.1.1
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
/dev/mmcblk0
/dev/mmcblk0p2
setenv bootargs "root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200"
setenv bootargs "root=/dev/mtdblock3 rootfstype=yaffs2 console=ttySAC0,115200"
dhclient -v -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 |
|