很久没碰板子了,这次又要重新拾起,把每一步跌宕记录下来以便后查,之前记录过移植到FL2440板子上,那块板子送人了,又在网上100块买了个二手的QQ2440V3,不过似乎什么资料都没有,只能一点一点摸索了,还好板子里的supervivi还在,并且里边有默认的Linux系统,去年我曾经移植过3.0在上边,不过没有备份东西,这次重来吧。
这次就以现成的supervivi为根基,一步一步搭建起Linux系统,再把驱动和应用逐个实现。
第一步:准备下开发环境
这次就不换硬盘了,直接虚拟机弄个Ubuntu 12.04,目前最新的Linux Desktop,一切为了方便,重心放在板子开发上,环境弄个方便顺手不影响项目卡壳的。
1. unbuntu 700M下载地址
安装ubuntu时把虚拟机网卡断开,加速安装。
装完后,重启系统,连接虚拟机网卡,安装gcc编译器,sudo apt-get install build-essential --yes,装完发现是4.6版的。
更新源sudo gedit /etc/apt/sources.list
2. 内核源码80M下载地址
mainline: 3.5
Full source,3.5.4那个stable速度太慢了。
3. 交叉编译器(arm-linix-gcc)下载地址
gcc-4.5-arm-linux-gnueabi (4.5.3-12ubuntu2cross1.61) [universe]
i3864,717.2 kB11,579.0 kB[文件列表] 亚洲 mirrors.163.com/ubuntu/
(在安装好的ubuntu里面连好网络,执行命令安装应该也可以sudo apt-cache search arm-linux后sudo apt-get install arm-linux)
4. 尝试把源码包和交叉编译器弄到虚拟机ubuntu里面
用vmware-tools,建立主机和虚拟机共享文件夹,用来来回拷贝文件。从vmware安装包的linux.iso加载到虚拟机,拷贝并解压tar文件,进入解压后目录执行sudo ./vmware-install.pl默认安装,发现查找linux include的时候,卡住了,不知道include 在哪。
首先uname -r 结果是3.2.0-29-generic-pae
于是尝试输入/usr/src/3.2.0-29-generic-pae/include,结果又报错说version不符,
于是尝试更改/usr/src/3.2.0-29-generic-pae/include/linux/version.h 加一行#define UTS_RELEASE "3.2.0-29-generic-pae"
再来,结果说linux/autoconf.h不存在,要编译内核,搜索这个问题,人家说在include下sudo ln -s ../generated/autoconf.h ./,尝试后
再来,结果编译开始了,但报错,说asm/semaphore.h找不到,网上查说系统版本高,而虚拟机版本低。
5.于是去支持开源,选了德国的virtualbox虚拟机,直接可以读取ubuntu系统的vmdk。
前进的道路总是会卡壳的,想办法换个思路绕过哨卡吧。
进入系统将vmware-tools卸载 sudo /usr/bin/vmware-uninstall.pl
虚拟机加载光盘,选择虚拟文件,在virtualbox安装后目录下有个guest addition.iso,加载后自动运行引导安装。
装完,设置好虚拟机的共享文件夹位置,名字取share,就可以
sudo mkdir /mnt/share
sudo mount -t vboxsf share /mnt/share
ls /mnt/share 后就有东西了。
windows下面准备好的交叉编译器和内核可以放到共享文件夹后操作了。
双击arm-linux-gcc***.deb安装。将Linux3.5内核拷贝出来。
6. 测试arm-linux-gcc
arm-linux-gnueabi-gcc-4.5 --version
成功回显