QEMU 探索旅程 準備

2021-09-01 18:39:05 字數 2772 閱讀 2007

發現 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...