前言
很久沒碰板子了,這次又要重新拾起,把每一步跌宕記錄下來以便後查,之前記錄過移植到FL2440板子上,那塊板子送人了,又在網上100塊買了個二手的QQ2440V3,不過似乎什麼資料都沒有,只能一點一點摸索了,還好板子裡的supervivi還在,並且裡邊有默認的Linux系統,去年我曾經移植過3.0在上邊,不過沒有備份東西,這次重來吧。
這次就以現成的supervivi為根基,一步一步搭建起Linux系統,再把驅動和應用逐個實現。
第一步:准備下開發環境
這次就不換硬盤了,直接虛擬機弄個Ubuntu 12.04,目前最新的Linux Desktop,一切為了方便,重心放在板子開發上,環境弄個方便順手不影響項目卡殼的。
1. unbuntu 700M下載地址
http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/
安裝ubuntu時把虛擬機網卡斷開,加速安裝。
裝完後,重啟系統,連接虛擬機網卡,安裝gcc編譯器,sudo apt-get install build-essential --yes,裝完發現是4.6版的。
更新源sudo gedit /etc/apt/sources.list
2. 內核源碼80M下載地址
http://www.kernel.org/ 選擇
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]
http://packages.ubuntu.com/zh-cn/precise/gcc-4.5-arm-linux-gnueabi
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
成功回顯