今天從i386核心編譯轉換到arm核心編譯上遇到一點細節問題,寫下來:
<2> : 進入linux-2.6.23核心根目錄,輸入make menuconfig,具體預設是哪個cpu,要參考根目錄下的arch = (kernel type指定)
<3> : 配置好kernel後,儲存退出.
<4> : make zimage即可,如果arch = i386,那麼在arch/i386/boot目錄下就會產生zimage映象檔案;
<5> : 上面的適合計算機等同型別的cpu,不適合arm,那麼就要編譯適合arm的核心;
<6> : 開啟根目錄下makefile檔案編譯下列字段並且儲存退出
arch ?= arm
cross_compile ?= arm-linux-
<7> : make mrproper
<8> : make menuconfig
<9> : make ;等待半個小時即可.
<10> : 半個小時過去,結果有錯誤
drivers/char/drm/drm_lock.c:310: undefined reference to `cmpxchg'
蛋疼!!!
<11> :重新配置系統,make menuconfig
在device driver/裡選擇了direct rendering manager驅動,arm裡不支援這個驅動,去掉選項就可以了
i386的頁機制
i386cpu不僅有段機制,而且支援頁機制。乙個32位的邏輯位址經過段機制對映成線性位址後,還要經過頁機制對映成32位的邏輯位址。與頁機制有關的暫存器有 cr3,cr0 cr0的最高位pg是頁對映機制的總開關,如果pg位是1則開啟頁對映機制。cr3暫存器用來存放頁面目錄的首位址。頁面目錄dir,10...
計組 i386呼叫約定
x64呼叫約定是由硬體的彙編指令call和ret的微指令和軟體的彙編指令規範共同完成的 一般為如下順序 父函式引數入棧 軟體彙編 父函式call 硬體微指令 子函式棧建立 軟體彙編 子函式棧清理 軟體彙編 子函式ret 硬體微指令 父函式棧清理 軟體彙編 下文中將演示 f a1,a2,a3,a4,a...
i386和i686的區別
i386和i686 現在所有的intel 32位體系 包括amd等相容cpu 都叫i386體系,包括p4。i686仍然屬於i386體系,不過對cpu 相對於386 的特性作了指令優化。gnu linux分為alpha powerpc sun等各個不同版本,所有從intel386 p4都用i386版本...