QEMU模擬Mini2440開發板運行環境

原文:http://blog.csdn.net/maxwell_nc/article/details/44454547


前言

原創文章歡迎轉載,請保留出處。
若有任何疑問建議,歡迎回復。
郵箱:[email protected]

手頭上只有一塊Smart210(Tiny210V2),無奈網上的資料多數是2440的資料,又不想再花錢買一塊2440,後來發現qemu可以模擬arm,參考各種文章後成功模擬,留下博文作爲筆記。


參考文章

本文主要參考 
http://bbs.51cto.com/thread-970787-1-1.html 
http://www.cnblogs.com/jinmu190/archive/2011/03/21/1990698.html 
http://blog.csdn.net/zeroboundary/article/details/12657215 
這三篇文章,雖然按照他們的做的出現了不少錯誤,但是非常感謝他們給出了路的方向,通過自己另外摸索成功了,在此和大家分享方法,如果你遇到問題也不妨再看看參考的網站或許會有意外的收穫。


開發環境

虛擬機:VMware 10.0.3簡體中文綠色版(含VMware Tools) 
操作系統:Ubuntu 10.04 32位 
不保證能在其他開發環境下正常實現本文最終結果,建議使用相同開發環境。另外本文不討論如何搭建虛擬機Linux環境,一些庫丟失問題請自行apt-get,另外我的所有終端操作均在超級用戶下進行。 
安裝VMware Tools後鼠標捕獲有問題的試試sudo apt-get install xserver-xorg-input-vmmouse後重啓虛擬機。


編譯安裝QEMU

首先下載qemu for mini2440,直接打包下載 
http://repo.or.cz/w/qemu/mini2440.git/snapshot/HEAD.tar.gz 
解壓後,進入源代碼目錄中,

./configure --target-list=arm-softmmu --prefix=$HOME/local 
(prefix指定安裝路徑,這裏是/root/local)
make -j4
(同時允許4個任務,據網友所說設置成2倍CPU核心數更快)
make install 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

可能會出現的庫問題解決:

sudo apt-get install zlib1g-dev
sudo apt-get install libsdl-dev
  • 1
  • 2
  • 1
  • 2

安裝完後,添加環境變量vi /etc/bash.bashrc 
添加一行export PATH=$PATH:$HOME/local/bin 
保存退出後,用source 生效或者註銷重新登錄,注意source只在當前終端有效,新開的均無效,然後使用qemu-system-arm --version測試是否正常,正常如下圖所示:

測試qemu是否成功


使用buildroot一鍵生成uboot和linux內核及根文件系統

首先下載buildroot的源代碼,下載地址: 
http://buildroot.org/downloads/buildroot-2012.05.tar.gz 
(我使用這個版本2012.05)解壓後,進入源代碼目錄中,make mini2440_defconfigmake menuconfig(可能出現的庫問題用sudo apt-get install libncurses5-dev解決) 
出現如下畫面: 
buildroot配置
其中以下需要修改,其他自己選擇: 
- Kernel :內核版本改選爲 3.3.7版本 
- Package Selection for the target : Busybox已經包含在裏面了,我們也可以選擇更多的項目,比如 Qt, EFL, directfb之類的圖形庫。在 Graphic libraries and application子目錄裏選擇。 
- Filesystem images :在 Flash Type這項,改爲 NAND flash with 512B Page and 16 KB erasesize 。 
- Toolchain:我選上了GDB和GDBServer方便調試。 
GDB調試選項 
然後保存退出。 
接下來執行make(注意這裏不要加-j4之類參數,否則後面編譯會出錯),網上很多文章都對此過程輕描淡寫,實際上這個過程會遇到一大堆問題。另外這個過程需要聯網下載各種源碼。

本人主要遇到的問題: 
1. 遇到automake出錯,使用apt-get install automake後重新make解決。 
2. make不能加-j4參數,否則會中途報錯停止編譯退出。 
3. 中途編譯QT會問你選擇商業版還是開源版,選擇O後輸入yes同意條款編譯開源版。 
4. 庫問題,會遇到一大堆,本人總結一個列表。

apt-get install g++   
apt-get install g++
apt-get install bison
apt-get install flex
apt-get install gettext
apt-get install texinfo
apt-get install patch
apt-get install git-core
apt-get install xz-utils
apt-get install automake
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果一切順利, make 結束後,在 buildroot-2012.05目錄的 output/images/ 子目錄下可以找到生成的四個文件: 
u-boot.bin: bootloader的鏡像 
uImage: u-boot格式的(用mkimage命令生成的)Linux內核鏡像 
rootfs.jffs2: jffs2格式的根文件系統鏡像 
rootfs.tar: 根文件系統源碼打包

如下圖所示: 
生成文件


Flashimg製作nand.bin並啓動系統

這裏參考上文給出的參考網站裏的使用flashimg製作nand.bin 
具體方法爲: 
下載flashimg源碼 
Git clone git://gitorious.org/flashimg/flashimg.git 
解壓後,進入flashimg源碼目錄後:

./autogen.sh (要求autoconf版本大於2.67)
./configure 
make 
sudo make install 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

然後把我們生成的三個文件 : u-boot.bin, uImage和rootfs.jffs2 拷貝到 flashimg文件夾下運行 
./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512
即可生成nand.bin。啓動方法爲: 
qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse 
(若出現錯誤:浮點數例外啓動不了qemu,請全屏最大化終端,再次執行,這是由於分辨率問題造成)

Uboot模式

如上圖啓動後進入uboot模式,此時的qemu還不能顯示圖形界面,輸入下面指令加載內核和根文件系統。

/*注意這裏的“MINI2440 #”是提示符,不用輸入。*/
MINI2440 # nboot kernel 
MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 
MINI2440 # saveenv 
MINI2440 # bootm 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

啓動後,輸入默認密碼root,即可成功登錄,此時還沒有配置網絡。ifconfig發現沒有網卡。 
qemu模擬arm成功 
如果你不需要網絡功能,那麼任務到此結束,你可以開始模擬2440的開發了。

如果你需要nfs和主機通訊,那得稍微期待下,我將會在下次發表採用的是掛在NFS根文件系統的方法,我們將不需要使用buildroot的根文件系統,而採用友善之臂提供的帶Qtopia的根文件系統(請到mini2440附帶的光盤找到rootfs_qtopia_qt4-20140103.tar.gz或者網上下載一份)你也可以使用buildroot生成的根文件系統,甚至可以用busybox自己製作一個,敬請期待,另外在此感謝參考文章的作者們。

發佈了21 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章