Linux3.8.3内核移植-添加X6410支持
linux3.8.3已经支持s3c6410 IC,同时国内外的嵌入式发烧友已完善了一些板卡配置
查看Kconfig:
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$ gedit Kconfig
# S3C6410 machine support
config MACH_ANW6410
bool "A&W6410"
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C_DEV_FB
help
Machine support for the A&W6410
config MACH_MINI6410
bool "MINI6410"
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_SDHCI
select S3C_DEV_FB
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_NAND
select S3C_DEV_USB_HOST
select SAMSUNG_DEV_ADC
select SAMSUNG_DEV_TS
help
Machine support for the FriendlyARM MINI6410
config MACH_REAL6410
可以看到6410已经支持的板卡有ANW6410、MINI6410、REAL6410等等。
现在,我们要增加自己板卡支持—X6410!
1、添加x6410配置信息
1、在Kconfig 127行,MACH_MINI6410相关信息之后,加入X6410相关配置。
config MACH_X6410
bool "X6410"
select CPU_S3C6410
select S3C_DEV_FB
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C_DEV_NAND
select S3C_DEV_I2C1
select S3C_DEV_RTC
select S3C_DEV_USB_HOST
#select S3C_DEV_USB_HOSTG
select S3C_DEV_WDT
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_SDHCI
select S3C64XX_SETUP_I2C1
select S3C64XX_SETUP_IDE
select S3C64XX_SETUP_KEYPAD
select SAMSUNG_DEV_ADC
select SAMSUNG_DEV_TS
select SAMSUNG_DEV_IDE
select SAMSUNG_DEV_KEYPAD
select SAMSUNG_DEV_PWM
select HAVE_S3C2410_WATCHDOG if WATCHDOG
help
Machine support for the xARM X6410
2、mach-s3c64xx目录下添加mach-x6410.c
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$ ls
clock.c mach-anw6410.c mach-smartq.h setup-i2c1.c
common.c mach-crag6410.c mach-smdk6400.c setup-ide.c
common.h mach-crag6410-module.c mach-smdk6410.c setup-keypad.c
cpuidle.c mach-hmt.c Makefile setup-sdhci-gpio.c
dev-audio.c mach-mini6410.c Makefile.boot setup-spi.c
dev-uart.c mach-ncp.c pm.c setup-usb-phy.c
dma.c mach-real6410.c s3c6400.c sleep.S
include mach-smartq5.c s3c6410.c
irq-pm.c mach-smartq7.c setup-fb-24bpp.c
Kconfig mach-smartq.c setup-i2c0.c
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$ cp mach-mini6410.c mach-x6410.c
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$ ls mach-x*
mach-x6410.c
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$
同时将mach-x6410.c中的“mini6410”全部修改为“x6410”,“MINI6410”全部修改为“X6410”。
3、同时修改Makefile,将mach-x6410.c编译进去
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/mach-s3c64xx$ gedit Makefile
52行:
obj-$(CONFIG_MACH_MINI6410) += mach-mini6410.o
obj-$(CONFIG_MACH_X6410) += mach-x6410.o #eric++ 2017-12-02
4、linux-3.8.3/arch/arm/tools/mach-types中添加X6410 id
436行,mini6410下,添加x6410的条目,其中 ID 为1626
mini6410 MACH_MINI6410 MINI6410 2520
x6410 MACH_X6410 X6410 1626
和 u-boot中smdk6410.h中的定义一致。
#define CONFIG_MACH_TYPE 1626//1270 eric++
2、配置内核
eric@eric-PC:~/Documents/linux-3.8.3$ make menuconfig
1、加载配置文件
进入倒数第二个选项“Load an Alternate Configuration File”,填写配置文件路径arch/arm/configs/s3c6400_defconfig
2、配置交叉编译工具链
General setup --->
() Cross-compiler tool prefix
填入交叉编译工具路径/usr/local/arm/arm-linux-gcc-4.4.3/bin/arm-linux-
3、选择板卡System Type —>
取消SMDK6400、MINI6410等,只保留X6410,(y选择,n取消)
-*- S3C64XX DMA
[ ] SMDK6400
[ ] A&W6410
[ ] MINI6410
[*] X6410
[ ] REAL6410
[ ] SMDK6410
[ ] NCP
[ ] Airgoo HMT
[ ] SmartQ 5
[ ] SmartQ 7
[ ] Wolfson Cragganmore 6410
4、退出前一定要保存配置信息
最后一个选项:Save an Alternate Configuration File
3、尝试编译内核
执行make uImage之后,漫漫的编译长路即将开启,编译需要5、6分钟!!!(依据电脑配置不同)
eric@eric-PC:~/Documents/linux-3.8.3$ make uImage
编译成功,且arch/arm/boot/uImage已经生成
...
Image Name: Linux-3.8.3
Created: Sat Dec 2 17:43:09 2017
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1510672 Bytes = 1475.27 kB = 1.44 MB
Load Address: 50008000
Entry Point: 50008000
Image arch/arm/boot/uImage is ready
eric@eric-PC:~/Documents/linux-3.8.3$
查看uImage,uImage 和 zImage 正好相差0x40字节
eric@eric-PC:~/Documents/linux-3.8.3/arch/arm/boot$ ls -l
总用量 5876
drwxrwxr-x 2 eric eric 4096 3月 15 2013 bootp
drwxrwxr-x 2 eric eric 4096 12月 2 18:06 compressed
drwxrwxr-x 3 eric eric 12288 3月 15 2013 dts
-rwxr-xr-x 1 eric eric 2963104 12月 2 18:06 Image
-rw-rw-r-- 1 eric eric 1274 3月 15 2013 install.sh
-rw-rw-r-- 1 eric eric 3167 3月 15 2013 Makefile
-rw-r--r-- 1 eric eric 1510736 12月 2 19:40 uImage
-rwxr-xr-x 1 eric eric 1510672 12月 2 18:06 zImage
内核移植期间,会遇到各种奇奇怪怪的问题,遇到问题不要着急,度娘在手,一切都有!