1. 程式人生 > >第三期 QEMU除錯U-Boot實驗 《虛擬機器就是開發板》

第三期 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原始檔:

http://ftp.denx.de/pub/u-boot/ 我下載的是 u-boot-2017.01.tar.bz2
        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就看你的啦。