平臺:JZ2440開發(fā)板
作者:趙賀
移植linux3.4內核到2440
1. 下載內核源碼
https://www.kernel.org/pub/linux/kernel/
2. 交叉環(huán)境搭建(只要編譯不出錯虑凛,一般都可以使用盼理,如果出現(xiàn)匯編錯誤,升級gcc版本即可)
工具下載
最新版下載
在/usr/local/下建立交叉編譯器的安裝目錄arm
sudo mkdir /usr/local/arm
將下載的交叉編譯器包解壓到/usr/local/arm目錄下
sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/
解壓成功后酌呆,修改PATH環(huán)境變量
sudo vim /etc/profile
export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin
Special for me:(下面是我配置的方法疗锐,由于經常需要更換編譯器版本坊谁,用軟鏈接指向當前的編譯器)
sudo vim /etc/profile
export PATH=$PATH:/usr/local/arm/current_compiler/bin
sudo ln -s 編譯器文件夾 /usr/local/arm/current_compiler/
- 更新一下配置文件/etc/profile
source /etc/profile
3.解壓內核
tar xvf linux-3.4.tar.bz2
make clean
(每次編譯內核前使用 make clean 一種良好的習慣)
4.修改Makefile
vim Makefile
修改
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
為
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
5.make xxx_defconfig(具體使用什么由廠家提供)
make s3c2410_defconfig
(這個目錄下可以找到 配置arm的全部的配置文件/linux-3.4/arch/arm/configs)
ps:執(zhí)行
make s3c2410_defconfig -n
可以現(xiàn)實詳細的信息
如果出現(xiàn)下面的錯誤
make: *** /home/zhaohe/Linux/linux-3.4/arch/arm: Is a directory. Stop.
查看上面的修改在行末是否有多出來的括號
6.make一下查看是否成功
7.支持串口調試
make menuconfig
"System Type--->"
--->"(0)S3C UART to use for low-level messages"
這里我的理解
1,開發(fā)板上使用的COM1 這里之所以設置為0 因為計算機里面是以0開始的
2滑臊,即便這里設置成其他在命令行中 加入命令 set bootargs console=ttySAC0,115200 依然會使用ttySAC0
8.make uImage
make uImage
CHK include/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage //這個目錄下可以找到uImage文件
Image Name: Linux-3.4.0
Created: Tue Nov 22 17:16:07 2016
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2353088 Bytes = 2297.94 kB = 2.24 MB
Load Address: 0x30108000 //這個地址是由鏈接文件指定的
Entry Point: 0x30108000
Image arch/arm/boot/uImage is ready
9. 下載內核到開發(fā)板子中 并啟動
配置環(huán)境變量
set bootcmd 'tftp 30000000 uImage;bootm 30000000'