當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 基于FS4412內(nèi)核移植之第一次編譯
這里選擇的內(nèi)容為比較新的版本Linux-3.14作為我們的移植對象。
這個內(nèi)核版本比較新隊編譯器有一定的要求,如果系統(tǒng)中原因版本編譯時出現(xiàn)問題,可以選擇如下 https://www.kernel.org/pub/tools/crosstool/地址下載,選擇ARM相關(guān)即可,32bit/64bit按自己環(huán)境決定
解壓內(nèi)核
將linux-3.14.tar.xz拷貝到/home/linux下并解壓
$tar xvf linux-3.14.tar.xz
$ cd linux-3.14
修改內(nèi)核頂層目錄下的Makefile
$ vim Makefile
修改:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
為:
ARCH ?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabi-
導(dǎo)入默認(rèn)配置
$ makeexynos_defconfig
配置內(nèi)核
$ make menuconfig
System Type --->
(2) S3C UART to use for low-level messages
該命令執(zhí)行時會彈出一個菜單,我們可以對內(nèi)核進(jìn)行詳細(xì)的配置。這里我們先查看一下,內(nèi)核都提供了那些功能!
編譯內(nèi)核
$ make uImage
通過上述操作我們能夠在arch/arm/boot目錄下生成一個uImage文件,這就是經(jīng)過壓縮的內(nèi)核鏡像。
如果編譯過程中提示缺少mkimage工具,需將第二天編譯的uboot源碼中的tools/mkimage拷貝到ubuntu的/usr/bin目錄下
$ cp u-boot-2013.01/tools/mkimage /usr/bin
修改設(shè)備樹文件
生成設(shè)備樹文件,以參考板origen的設(shè)備數(shù)文件為參考。
$ cparch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts
添加新文件需修改Makefile才能編譯
$ vim arch/arm/boot/dts/Makefile
在
exynos4412-origen.dtb \
下添加如下內(nèi)容
exynos4412-fs4412.dtb \
編譯設(shè)備樹文件
$ make dtbs
目標(biāo)文件
根據(jù)上述操作可以得到如下文件
Linux內(nèi)核鏡像:arm/arm/boot/uImage
設(shè)備樹鏡像:arch/arm/boot/dts/exynos4412-fs4412.dtb
Bootloader參數(shù)設(shè)置
#setenv serverip 192.168.9.120
#setenv ipaddr 192.168.9.233
#setenv bootcmdtftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 – 42000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.9.120:/source/rootfs rw console=ttySAC2,115200 init=/linuxrcip=192.168.9.233
# saveenv
Bootloader需支持設(shè)備樹才可以