1. 程式人生 > >Linux + ARM驅動開發環境配置(核心配置與編譯)

Linux + ARM驅動開發環境配置(核心配置與編譯)

要想編寫驅動,首先是建立核心目錄樹。

**

1、檢視ARM開發板的核心版本

**

uname -a

我的arm開發板的版本是3.4.39

**

2、安裝必要的軟體包

**

sudo  apt-get install build-essential kernel-package  libncurses5-dev
sudo apt-get install ncurses-dev 

**

3、下載一個與ARM開發板的核心版本相同的linux核心

**

最好還是找到 ARM開發板 的核心原始碼

**

4、Linux 核心配置

**
4.1、解壓核心,進入源目錄

sudo
tar vxf linux-3.4.39.tar.gz -C /home/eagle/kernel cd /home/eagle/kernel/linux-3.4.39

4.2、修改核心目錄樹根下的Makefile,指明交叉編譯器

sudo vim Makefile

找到ARCH和CROSS_COMPILE,如下所示

export KBUILD_BUILDHOST := $(SUBARCH)
ARCH  ?= $(SUBARCH)
CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)

修改如下

export KBUILD_BUILDHOST := $(SUBARCH)
ARCH  ?=
arm CROSS_COMPILE ?= /usr/local/arm-2014.05/bin/arm-none-linux-gnueabi-

其中 CROSS_COMPILE 的位置是arm交叉編譯器的位置

4.3、清除核心原有的配置和編譯資訊

sudo make distclean

出現類似資訊

CLEAN   scripts/basic
CLEAN   scripts/kconfig
CLEAN   include/config

4.4、找出與你開發板相近的晶片配置資訊文件

在目錄 arch/arm/configs 下可以找到,如:s5pv210_defconfig

sudo cp arch/arm/configs/s5pv210_defconfig .config

4.5、配置核心

sudo make menuconfig

可能出現以下錯誤:

//Your display is too small to run Menuconfig!

//It must be at least 19 lines by 80 columns.

//make[1]: *** [menuconfig] 錯誤 1

//make: *** [menuconfig] 錯誤 2

原因:終端視窗太小,最大化即可解決。

命令執行成功後,如圖所示:
配置核心的介面

如果是 arm開發板 的核心原始碼,則不需要配置,否則需要進行配置。

配置核心時,有3種選擇,它們代表的含義分別如下。
● Y:將該功能編譯進核心。
● N:不將該功能編譯進核心。
● M:將該功能編譯成可以在需要時動態插入到核心中的模組。

在每一個選項前都有個括號,有的是中括號,有的是尖括號,還有的是圓括號。用空格鍵選擇時可以發現,中括號中要麼是空,要麼是 星號;而尖括號中可以是空、星號和“M”。這表示前者對應的項要麼不要,要麼編譯到核心中;後者則多一樣選擇,可以編譯成模組。而圓括號的內容是要你在所提供的幾個選項中選擇一項。

4.6、儲存核心配置檔案

配置好後,選擇 Exit ,點選 回車鍵,出現如下所示,點選回車鍵,進行確認。
儲存核心的介面

儲存成功後,會出現如下資訊:

scripts/kconfig/mconf Kconfig
#
# configuration written to .config
#


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

配置檔案儲存在核心原始碼根目錄下的.config中,但是執行了make distclean後會刪除上述儲存的config檔案。
所以配置核心結束後,最好將配置資訊儲存。

sudo cp .config s5pv210_defconfig

再次在配置核心之前,再將 s5pv210_defconfig 拷貝給.config

sudo cp s5pv210_defconfig .config 

**

5、編譯核心

**

sudo make zImage

如果按照預設的配置,沒有改動的話,編譯後系統會在arch/arm/boot目錄下生成一個zImage檔案,這個檔案就是剛剛生成的核心檔案。

核心配置和編譯之後,才可以進行驅動開發,因為在驅動開發的過程中需要用到核心原始碼樹。