第三期 QEMU除錯U-Boot實驗 《虛擬機器就是開發板》
這一期註定會很簡短,簡短的意義就在於使用模擬器做某些事情確實很快捷。這一期我們使用QEMU來模擬執行U-Boot,大家對U-Boot應該都不陌生,相當於Linux的學前班,U-Boot的資料結構定義和驅動模型定義都採用Linux風格,在研究Linux核心前分析一下U-Boot會大有裨益。
記得第一次用物理開發板除錯U-Boot時,怎麼把U-Boot下載到開發板就讓我研究了一星期,把有限的精力都浪費在了物理性的問題上了,而對於U-Boot的內部軟體架構就會分散一些精力。下面我們來實踐一下在模擬器上執行U-Boot,如果你之前沒有編譯過U-Boot,沒有把它下載到物理開發板並執行過,都不要緊,只要按照下面的操作來,20分鐘走完全程。
1. 首先安裝交叉編譯器,執行: sudo apt-get install gcc-arm-linux-gnueabi
2. 下載U-Boot原始檔:
3. 解壓原始檔 tar jvxf u-boot-2017.01.tar.bz2 -C xxxx (xxx為需要解壓的目錄)
4. 進入U-Boot 原始檔目錄,然後執行:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_ca9x4_defconfig
make
編譯完成後,如果目錄下生成 u-boot 檔案,則說明編譯成功。
5. 在U-Boot原始碼目錄下編寫指令碼 run.sh
qemu-system-arm \
-M vexpress-a9 \
-nographic \
-m 512M \
-kernel u-boot
然後 chmod +x run.sh 增加檔案執行許可權。
6. 最後執行 ./run.sh
到這裡,你已經搭建好了一個U-Boot的除錯環境。如果你想研究一下U-Boot,這是一個非常好的開始,沒必要被那些物理性的各種未知問題所困擾。
理解U-Boot內部執行原理的一個捷徑就是對它進行修改,然後驗證性的除錯執行,這樣能為你揭示出僅僅通過看程式碼無法看到的深層機理。
上面這些步驟是不是很快就完成了,我們用最短的時間製作出了一個U-Boot的除錯驗證環境,接下來怎麼去分析和研究U-Boot就看你的啦。