1. 程式人生 > >在Linux下執行Qemu模擬AArch64硬體除錯核心

在Linux下執行Qemu模擬AArch64硬體除錯核心

環境說明:
Fedora21 x86_64

ARM公司推出ARM V8架構後,全面進入64位CPU時代,可是目前市場上出現的裝置太少或者說價效比不高,但是又想做相關平臺下的開發,那麼可以考慮下使用qemu模擬器

安裝aarch64-qemu:

$sudo yum install -y qemu-system-aarch64
$qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel aarch64-linux-3.15rc2-buildroot
.img --append "console=ttyAMA0"

輸入root,免密碼登陸:
檢視配置
當然還可能需要使用qemu來除錯Linux核心,那麼需要使用buildroot來構建根檔案系統,然後再次配置編譯核心,最後啟動gdb連線到gdbserver上來進行核心除錯和分析:
1.下載和編譯buildroot
(1)下載buildroot,2015-02穩定版
http://buildroot.uclibc.org/download.html
(2)配置和編譯

$tar -xjvf buildroot-2015.02.tar.bz2
$cd buildroot-2015.02
$make menuconfig

選用externel cross-compiler,Linaro 14.09,選擇安裝路徑,然後到Linaro官網下載對應的編譯器,不要使用yum來安裝對應的編譯器,因為紅帽公司打包的交叉編譯器缺少kernel標頭檔案,我把我的配置檔案放到了百度網盤,可以參考:
http://pan.baidu.com/s/176ef0
Linaro 14.09交叉編譯器的連結地址:
https://releases.linaro.org/14.09/components/toolchain/binaries
下載gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.bz2,解壓縮到目錄/opt/,修改名稱並再buildroot中配置路徑,然後編譯,順利的話會在目錄output/images/生成rootfs.cpio檔案,即為根檔案系統。
(3)下載並配置編譯核心
到kernel.org下載最新版核心,配置initramfs使用buildroot生成的根檔案系統,配置架構和交叉工具,編譯

$ARCH=arm64 make menuconfig
$ARCH=arm64 make -j 8

參考配置檔案:
http://pan.baidu.com/s/1i35pWwP
成功會在arch/arm64/boot/目錄生成Image檔案,然後使用以下命令啟動:

$qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel /home/jefby/linux-3.19.3/arch/arm64/boot/Image  --append "console=ttyAMA0"

(4)除錯核心

$  qemu-system-aarch64 -s -S -machine virt -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 2048 -kernel /home/jefby/linux-3.19.3/arch/arm64/boot/Image  --append "console=ttyAMA0"

此時核心啟動,並使用gdbserver打開了1234埠供gdb客戶端連線,本地開啟terminal,輸入以下命令:

$cd linux-3.19.3
$aarch64-linux-gnu-gdb
$file vmlinux
$target remote localhost:1234
$b start_kernel
$c
$n 

如圖所示:
這裡寫圖片描述