1. 程式人生 > >linux 核心模組程式設計之環境搭建(一)

linux 核心模組程式設計之環境搭建(一)

這裡介紹些關於Tiny6410開發板核心的編譯,為後期驅動開發做前期的準備。

開發環境:64位的Ubuntu 14.01虛擬機器

目標機:友善之臂Tiny6410開發板

核心:linux-2.6.38-20110325.tar.gz

核心原始碼下載地址 https://www.kernel.org/pub/linux/kernel/v2.6/ ;

Tiny6410核心下載地址 http://pan.baidu.com/s/1qX2ZBNu


核心結構: 

arch

核心所支援的每種CPU體系,在該目錄下都有對應的子目錄,每種CPU的子目錄又進一步分解為

bootmmkernel等子目錄,分別包含控制系統,記憶體管理,系統呼叫。

mach開頭的目錄都代表著一種開發板,其他目錄為arm系列所共有的。

|--x86  英特爾CPU及與之相容體系結構的子目錄

||--boot 載入程式

|||--compressed 核心解壓縮

||--tools 生成壓縮核心映像的程式

||--kernel 相關核心特性實現方式,如訊號處理、時鐘處理

||--lib 硬體相關工具函式

block

部分塊裝置驅動程式

crypto 

加密、壓縮、CRC

校驗演算法 

Documentation

核心的文件

drivers

裝置驅動程式

fs 

存放各種檔案系統的實現程式碼。每個子目錄都對應一種檔案系統的實現,公用的源程式用於實現虛擬檔案系統VFS

||--devpts /dev/pts虛擬檔案系統

||--ext2 第二擴充套件檔案系統

||--fat MSfat32檔案系統

||--isofs ISO9660光碟cd-rom上的檔案系統

include

核心所需要的標頭檔案。與平臺無關的標頭檔案在include/linux子目錄下,與平臺相關的標頭檔案則放在相應的子目錄下。

lib 

庫檔案程式碼

mm

用於實現記憶體管理中與體系結構無關的部分,與體系結構相關的程式碼在arch目錄下

net

網路協議的實現程式碼

||--802 802無線通訊協議核心支援程式碼

||--appletalk 與蘋果系統連網的協議

||--ax25 AX25無線internet協議

||--bridge 橋接裝置

||--ipv4 IP協議族V432位定址模式

||--ipv6 IP協議族V6

Samples

一些核心程式設計的範例

Scripts

配置核心的指令碼

Security

SElinux的模組

Sound

音訊裝置的驅動程式

Usr

CPIO命令實現

Virt

核心虛擬機器


我使用的開發板如下:

 

 

第一步:搭建交叉編譯環境

我使用的是4.5.1的交叉編譯器,下載地址如下

arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz

連結:http://pan.baidu.com/s/1hrd2uX2 密碼:x7wi

 

下載完之後使用root使用者將壓縮包解壓到/opt目錄下,如下:

 

解壓完之後,修改/etc/environment,在末尾新增交叉編譯器的路徑,如下:

 

然後就可以驗證交叉編譯器是否安裝成功了,執行如下命令:

 

看到這樣的結果,說明gcc安裝成功了,由於我是64的作業系統,所以在這之前需要安裝如下外掛:
$sudo apt-get install lsb-core 

這樣才能正常使用交叉編譯器

 

第二步:編譯核心

編譯Tiny的核心會稍微簡單一點,我也忘記我這個核心是從哪裡的了,可能是廠家給的,也可能是網上下的,反正就這麼放在硬盤裡。

解壓linux-2.6.38-20110325.tar.gz,如下:

 

 我的板子螢幕尺寸是640x480,所以我應該使用config_mini6410_vga640x480 配置檔案。

執行1:$cp config_mini6410_vga640x480 .config

執行2:$make menuconfig

執行3:$make V=s

執行完成後,就可以看到檔案arch/arm/boot/zImage了。

 

 這裡要說明下,網上很多教程都說要修改Makefile,還有要從arch/arm/路徑下拷貝生產.config檔案,如下。

 

其實這都是針對編譯純淨版核心而言,那麼核心就不能使用廠家提供的核心了,因為廠家提供的核心裡面集成了很多廠家自己根據板子外圍裝置編寫的驅動程式,這對於學習驅動還是有幫助的,可以先學著如何改驅動。

 

第三步:燒錄新編譯的核心

這個如何燒錄的話,看廠家提供的刷機指南,就好了,這裡不多說了!