Linux内核移植(2)

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

config

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
.config

3、尝试编译内核
执行make uImage之后,漫漫的编译长路即将开启,编译需要5、6分钟!!!(依据电脑配置不同)

eric@eric-PC:~/Documents/linux-3.8.3$ make uImage

linux编译

编译成功,且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 315  2013 bootp
drwxrwxr-x 2 eric eric    4096 122 18:06 compressed
drwxrwxr-x 3 eric eric   12288 315  2013 dts
-rwxr-xr-x 1 eric eric 2963104 122 18:06 Image
-rw-rw-r-- 1 eric eric    1274 315  2013 install.sh
-rw-rw-r-- 1 eric eric    3167 315  2013 Makefile
-rw-r--r-- 1 eric eric 1510736 122 19:40 uImage
-rwxr-xr-x 1 eric eric 1510672 122 18:06 zImage

内核移植期间,会遇到各种奇奇怪怪的问题,遇到问题不要着急,度娘在手,一切都有!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值