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檔案,這個檔案就是剛剛生成的核心檔案。
核心配置和編譯之後,才可以進行驅動開發,因為在驅動開發的過程中需要用到核心原始碼樹。