基於OMAPL:Linux3.3內核的編譯
基於OMAPL:Linux3.3內核的編譯
OMAPL對應3個版本的linux源代碼,分別是:Linux-3.3、Linux-2.6.37、Linux2.6.33,這裏的差距在於Linux2,缺少SYSLINK支持組件。
這裏我們選擇Linux-3.3版本進行開發。
開發前準備
- mkimage的工具:
sudo apt-get install u-boot-tools
- menuconfig組件庫安裝:
apt-get install libncurses5-dev
- 正確配置
arm-none-linux-gnueabi
的環境 - 內核源文件:linux-3.3.tar.bz2(一定要用TI提供配套OMAPL的,不是隨便找個Linux3.3就可以的)
內核編譯過程
解壓內核到
~/work
內核路徑為~/work/linux-3.3
進入Linux內核路徑`~/work/linux-3.3
清理內核(一個字兒都不能少)
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean
配置內核
配置內核很關鍵,有些童鞋說,人家的內核編譯了5分鐘就結束了,怎麽我的1個小時還沒編譯完,很有可能就是很多地方對於這個板子沒有用的部件你沒有刪除掉,一般原廠都會有個推薦配置,當然了,TI的OMAPL138也是提供了推薦配置的。
創龍公司給出的配置為,執行命令:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- da850_omapl138_tl_defconfig
我使用的是德州儀器給的配置,則執行命令:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- da850_omapl138_defconfig
當然這不是瞎編的,內核中包含的配置文件在,以下的目錄:
./arch/arm/configs
ls以下會看到很多配置:
我們使用畫橫線的配置信息。
- 使用make menuconfig寫入配置信息
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
直接Exit就可以,然後就會寫入配置信息了。
在這個menu裏面我們配置驅動或者內核其他的組件機制,是否編譯到內核中,這個根據自己需求進行,初學者可能對於這個地方沒有多少概念。可參考韋東山《嵌入式Linux完全開發手冊》的編譯內核章節,上面有目錄規則和解說等。
編譯內核
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -j4
編譯內核一般都會有各種各樣的錯誤,去百度或者google清查。
編譯完成後可以在內核源碼的"arch/arm/boot"目錄下找到 uImage。可以將 uImage 拷貝到正常使用的 SD 系統啟動卡的 FAT32 格式的 boot 分區,方便以後 SD 卡啟動方式時被 U-Boot 加載或者被燒寫到 NAND FLASH 分區。
基於OMAPL:Linux3.3內核的編譯