使用 qemu 模擬器搭建 arm 運行環境

一.流程

(1)安裝交叉編譯工具鏈
(2)安裝 qemu 模擬器
(3)編譯 arm 架構 u-boot
(4)用 u-boot 測試 qemu 是否正常啓動

二.原理

qemu 是一個在 linux 上廣泛使用的可以模擬 ARM 的模擬器。在進行嵌入式系統的開發時,運行程序的目標平臺通常具有有限的存儲空間和運算能力,比如常見的 ARM 平臺,其一般的靜態存儲空間大概是 16 到 32MB,而 CPU 的主頻大概在 100MHz 到500MHz 之間。這種情況下,在 ARM 平臺上進行本機編譯就不太可能了,這是因爲一般的編譯工具鏈(compilation tool chain)需要很大的存儲空間,並需要很強的 CPU 運算能力。爲了解決這個問題,交叉編譯工具就應運而生了。通過交叉編譯工具,我們就可以在 CPU 能力很強、存儲空間足夠的主機平臺上(比如 PC 上)編譯出針對其他平臺的可執行程序。本實驗在安裝 qemu 模擬器之前安裝了交叉編譯工具鏈,滿足了交叉編譯的要求,然後又安裝了相應的依賴庫以滿足 qemu 的正常運行。U-boot 用來引導啓動內核的,本實驗進行了編譯 arm 架構 u-boot。

三.步驟

1. 安裝交叉編譯工具鏈下載必備庫
(1)mkdir ~/qemu_linux:在主目錄下新建文件夾 qemu_linux,~表示主目

(2)cd ~/qemu_linux:切換目錄,進入文件夾 qemu_linux
(3)sudo apt-get install gcc-arm-linux-gnueabi:安裝 arm 交叉編譯
工具;apt-get 是自動從網上的軟件倉庫中搜索、安裝、升級、卸載軟件,
gcc-arm-linux-gnueabi 是一個 arm 的交叉編譯鏈工具
(4)git clone git://git.qemu-project.org/qemu.git:下載源碼

(5)cd qemu:進入目錄 qemu
(6)git checkout remotes/origin/stable-2.4 -b stable-2.4:檢出分

(7)sudo apt-get update 進行更新
(8) sudo apt-get install build-essential kernel-package
libncurses5-dev 和
sudo apt-get install libglib2.0-dev libfdt-dev libpixman-1-dev 都
是安裝 qemu 需要的依賴庫;
kernel-package 是 Debian 系統裏生成 內核鏡像文件 kernel-image 的一
些配置文件和工具
(9)接下來的 sudo apt-get install git-email 等命令都是安裝其他可能
需要的依賴文件
2. 安裝 qemu 模擬器
(1)mkdir build 在當前路徑爲 ~/qemu_linux 下創建新的文件 build
(2)cd build 進入 build 文件
(3)將配置生成的中間文件放到 build 中:
../qemu/configure --target-list=arm-softmmu --audio-drv-list=
configure 是用來檢測安裝平臺的目標特徵的。比如它會檢測是不是有 CC
或 GCC,並不是需要 CC 或 GCC,它是個 shell 腳本。
make:make 是用來編譯的,它從 Makefile 中讀取指令,然後編譯。
make install:make install 是用來安裝的,它也從 Makefile 中讀取指令,
安裝到指定的位置。
sudo apt-get install qemu:直接安裝
qemu-system-arm –M ?:查看 qemu 支持哪些板子,-M ?參數來獲取該 qemu
版本支持的所有單板
3. 編譯 u-boot
cd ~/qemu_linux
wget ftp://ftp.denx.de/pub/u-boot/u-boot-2016.09.tar.bz2
將 u-boot 下載到目錄~/qemu_linux 裏面
tar jxvf u-boot-2016.09.tar.bz2:解壓
cd u-boot-2016.09
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- \
vexpress_ca9x4_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

指定 ARM 的交叉編譯工具
結果如下所示:

4. qemu 中 u-boot 啓動:
qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 128M
參數解釋如下:-M vexpress-a9 模擬 vexpress-a9 單板;-kernel u-boot
表示告訴 qemu 單板運行內核鏡像路徑;-nographic 表示不使用圖形化界面,
只使用串口 ;-m 128M 表示單板運行物理內存 128M

四.結果及分析

測試 qemu 和內核能否運行成功的結果如下:

信息顯示:U-boot 爲 2016.09 版本;系統內存 DRAM 爲 128M;Falsh 內存爲
128M
在下面輸入 ls,print 等指令,結果如下:

表示 qemu 在 U-boot 中啓動正常。

五.遇到的問題

在 make install 的時候遇到這個無法創建目錄的情況:

提示權限不夠,後來加了個 sudo 就好了。
--------------------- 
作者:skj1995 
來源:CSDN 
原文:https://blog.csdn.net/skj1995/article/details/81168857 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章