發現 kernel 的版本更新非常頻繁,而且官方的 patch 指導以及網上的文章都是比較麻煩且老舊的方法,我研究了一種簡單方便的方法,其實核心設計者可能已經設計了n多種非常方便的方法,只不過需要我們主動動腦動手才能使用,發現核心自帶的文件往往年久失修,其實本質是我們開發者已經落後,主動學習研究的時間和精力已經落後了太多太多。
patch 方法:
qemu編譯後支援的arm 官方 板子有四種:
linux 核心支援 arm 官方板子有兩類:
從 mach 列表可以看出:
從 arm/configs 也可以看出:
uboot 支援 6種板子:
綜合評估:qemu uboot 核心 同時支援 的只有vexpress板子
公尺爾是arm 的官方**,我們看看 vexpress 是啥玩意:
可以同時看到 juno 板子和 versatile express 字樣,都是arm官方的開發板,juno 是armv8 的,juno arm開發平台(adp)是一款 armv8-a 軟體開發平台,它包括 juno versatile express 開發板和乙個從 linaro 獲得的 armv8-a 參考軟體埠
綜上:versatile 就是 versatile express 的簡寫,versatileexpress是arm官方的核心評估板,我們就選擇這個板子。
但uboot又又好幾種:
vexpress_aemv8a_dram_defconfig vexpress_aemv8a_semi_defconfig vexpress_ca5x2_defconfig
vexpress_aemv8a_juno_defconfig vexpress_ca15_tc2_defconfig vexpress_ca9x4_defconfig
其中 vexpress_aemv8a 相關的都是armv8架構,我們不需要
剩下的有a15_tc2板子、四核a9的板子以及雙核a5的板子,基於我們一開始就選擇了a15,所以只有a15_tc2選擇了。
查一下 vexpress_ca15_tc2
非常驚喜地發現以下內容,tc2 是雙核 a15+3核a7 的組合,而tc1 是雙核a15,tc1才是最適合我們的板子,但uboot內沒有,我們得基於tc2修改。
(看來網上大多數人在搭建qemu時都選擇a9是正確的,因為a9在qemu 和 uboot內都有預設的配置檔案;a15雖然也有,但uboot內是大小核心組合,知識有限,可能稍微麻煩)
再看看 核心和 uboot 對 qemu 的支援:
首先核心表示不並支援:
uboot 表示大力支援:
QEMU編譯問題
1.庫檔案支援 qeme0.15 之前版本不需要glibc 2.0支援 再編譯前確保libsdl1.2 dev有安裝,否則再執行qemu時會出現vnc server running on 127.0.0.1 5900 其實這個也不算是錯誤了,可以使用vnc client連線,但是如果安裝libsdl...
qemu指令計數
使用全域性變數use icount 標記qemu如何進行指令計數。use icout 0 表示不統計執行的指令數 use icout 1 表示精確同時執行的指令數 use icout 2 表示對執行的指令數進行適應性估計。在configure icount 函式中對 use icount 進行設定 ...
qemu 環境搭建
早在2011年的時候,跟當時同事一起討論,做linux系統開發正處於整個linux開發中間層,沒有上層的c c 業務和資料庫的開發經驗,也沒有底層的核心和驅動開發經驗,到底路該如何走 基於對linux系統開發的理解和核心的興趣,認為選擇linux核心開發更適合自己。於是到 上買了塊三星s3c2440...