S5PV210系列之編譯內核

內核配置和編譯體驗 

內核下載:鏈接:https://pan.baidu.com/s/1Qs2aCULgy9mEkvF3Q1ab3g 
提取碼:dk2g 


【1】、先確認Makefile


(1)主要是檢查交叉編譯工具鏈有沒有設置對。CROSS_COMPILE   ?= /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
(2)確認ARCH = arm。主要目的是爲了編譯時能找到arch/arm目錄。

【2】、make  x210ii_qt_defconfig


(1)最後只要出現:configuration written to .config這句話,就證明我們的操作是正確的。如果沒有出現這句話,就有錯誤。
(1)可能出現的錯誤1:名字敲錯了。名字是字符串匹配的,一定要正確。
注意:如果這一步配置沒有得到.config文件,是不能進行到下一步的。實際測試時沒有.config也可以make menuconfig,但是這樣做出來的內核編譯和燒寫運行應該是有問題的。

【3】、make menuconfig


(1)可能出現的錯誤1:ncurses庫沒裝
錯誤信息:
 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 *** 
 *** Install ncurses (ncurses-devel) and try again.
 
解決方案:  apt-get install libncurses5-dev (參考了:http://blog.csdn.net/yao_qinwei/article/details/8805101)

(2)可能出現的錯誤2:屏幕太小
錯誤信息:
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
解決方案:全屏,或者是把字體調小。

總結:make menuconfig是第二步配置,具體的用法和配置意義在後面課程講。我們這裏因爲是九鼎已經移植過的,所以第二步配置是可以不做的,直接退出即可。
用鍵盤的向右方向鍵移動到EXIT,按回車退出。

【4】、make


(1)可能出現的錯誤1:莫名其妙的錯誤,可以試試先make distclean
(2)代碼本身的錯誤:具體問題具體分析
(3)編譯完成後得到的內核鏡像不在源碼樹的根目錄下,在arch/arm/boot這個目錄下。得到的鏡像名是zImage


2.15.4.內核的配置原理1
2.15.4.1、燒寫測試
2.15.4.2、配置的關鍵是得到.config文件
(1).config以.開頭,是一個隱藏文件,因此平時是看不到的,需要ls -a來看
(2)當我們make distclean後(也就是說默認情況下)是沒有.config文件的,我們配置的兩步過程就是爲了得到內容合適的.config文件
(3).config文件是linux內核在編譯過程中很重要的一個文件,其作用類似與uboot中的include/configs/x210_sd.h,內核在編譯過程中會讀取.config中的配置項,並且用這些配置項去指導整個編譯鏈接過程。
(4).config文件的格式類似於腳本文件,其中內容爲類似於於:CONFIG_ARM=y的一個一個的配置項。這些配置項就類似於腳本文件中定義的一個一個變量,所以這一行可以被理解爲定義了一個變量CONFIG_ARM,這個變量的值爲y。
(5).config文件中每一行都是一個配置項,從.config文件的規模可以看出linux內核的可配置項有兩三千個。所以linux內核是高度可配置的,而且linux內核的所有配置項很難全部搞明白。因爲linux內核的配置項太多太繁雜超出了人的大腦能夠記憶和處理的數量級,因此linux內核不像uboot那樣直接手工配置,而是發明了一個圖形化的配置工具menuconfig。

2.15.4.3、make xx_defconfig和make menuconfig相配合
(1)我們爲了對.config文件中的兩三千個配置項做逐一合適的配置,專門發明了兩步結合的配置方式。
(2)其實只要人的記憶足夠好,大腦足夠厲害,完全可以手工去書寫/修改.config文件完成內核配置,最終只要.config中內容是正確的,就不影響編譯過程。
(3)第一步:make xxx_defconfig解決的問題是大部分的配置項(這一步結束後99%的配置項就已經正確了),下來就是對個別不同的針對我們的開發板進行細節調整,細節調整就通過make menuconfig來完成。
(4)make xxx_defconfig這一步其實是參考別人已經做好的,這樣做有很多好處:減少很多工作量,避開了很多自己不懂的配置項(譬如對內存管理的、調度系統的等模塊的配置項),我們只用管自己需要管的。
(5)make menuconfig其實就是讀取第一步得到的.config,然後給我們一個圖形化的界面,讓我們可以更加容易的找到自己想要修改的配置項,然後更改配置他。

2.15.4.4、make xx_defconfig到底做了什麼?
(1)make x210ii_qt_defconfig其實相當於:cp arch/arm/configs/x210ii_qt_defconfig .config
(2)arch/arm/configs目錄下的這麼多個xxx_defconfig哪裏來的?其實這些文件都是別人手工配置好適合一定的開發板的.config文件後自己把.config文件保存過去的。譬如說我們用S5PV210這個SoC,針對這個SoC的開發板的最初配置肯定是三星的工程師去做的。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章