单片机
返回首页

Ubuntu下移植内核到OK6410开发板

2024-10-17 来源:cnblogs

环境:Win7+virsualBox+ubuntu12.04+ok6410开发板


一,下载源码:我这里下载的版本是--linux-3.12.7

 http://www.kernel.org/

 

二,解压内核:

tar -xvf linux-3.12.7-tar.xz

 

三,更改权限(最好赋予全部权限)

sudo chmod -R 777 linux-3.12.7/*

 

四,修改源码(针对基于smdk6410架构的ok6410开发板)

 

1,在arch/arm/mach-s3c64xx/目录下的mach-smdk6410.c 复制一份在当前文件下命名为mach-ok6410.c

wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ cp smdk6410.c ok6410.c

 

2,修改当前目录下的Kconfig文件,添加ok6410的配置

wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit Kconfig 

找到:MACH_SMDK6410,复制一份smdk6410的配置信息粘贴到下面


config MACH_SMDK6410

    bool 'SMDK6410'

    select CPU_S3C6410

    select HAVE_S3C2410_WATCHDOG if WATCHDOG

    select S3C64XX_SETUP_FB_24BPP

    select S3C64XX_SETUP_I2C1

    select S3C64XX_SETUP_IDE

    select S3C64XX_SETUP_KEYPAD

    select S3C64XX_SETUP_SDHCI

    select S3C64XX_SETUP_USB_PHY

    select S3C_DEV_FB

    select S3C_DEV_HSMMC

    select S3C_DEV_HSMMC1

    select S3C_DEV_I2C1

    select S3C_DEV_RTC

    select S3C_DEV_USB_HOST

    select S3C_DEV_USB_HSOTG

    select S3C_DEV_WDT

    select SAMSUNG_DEV_ADC

    select SAMSUNG_DEV_BACKLIGHT

    select SAMSUNG_DEV_IDE

    select SAMSUNG_DEV_KEYPAD

    select SAMSUNG_DEV_PWM

    select SAMSUNG_DEV_TS

    help

      Machine support for the Samsung SMDK6410


config MACH_OK6410

    bool 'OK6410'

    select CPU_S3C6410

    select HAVE_S3C2410_WATCHDOG if WATCHDOG

    select S3C64XX_SETUP_FB_24BPP

    select S3C64XX_SETUP_I2C1

    select S3C64XX_SETUP_IDE

    select S3C64XX_SETUP_KEYPAD

    select S3C64XX_SETUP_SDHCI

    select S3C64XX_SETUP_USB_PHY

    select S3C_DEV_FB

    select S3C_DEV_HSMMC

    select S3C_DEV_HSMMC1

    select S3C_DEV_I2C1

    select S3C_DEV_RTC

    select S3C_DEV_USB_HOST

    select S3C_DEV_USB_HSOTG

    select S3C_DEV_WDT

    select SAMSUNG_DEV_ADC

    select SAMSUNG_DEV_BACKLIGHT

    select SAMSUNG_DEV_IDE

    select SAMSUNG_DEV_KEYPAD

    select SAMSUNG_DEV_PWM

    select SAMSUNG_DEV_TS

    help

    Machine support for the Forlinux OK6410


3,修改mach-ok6410.c

wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit mach-ok6410.c

把文件中所有的smdk6410改成ok6410,然后找到:MACHINE_START,修改成下面,注意大小写。


MACHINE_START(OK6410, 'OK6410')

 

4,修改当前目录下的Makefile文件:

wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/mach-s3c64xx$ gedit Makefile

添加如下配置:


# Machine support

obj-$(CONFIG_MACH_OK6410)        += mach-ok6410.o

 

5,修改机器码ID,必须和uboot的ID一致,所修改arch/arm/tools/mach-types文件:

wu@wu-VirtualBox:/opt/linux-3.12.7/arch/arm/tools$ gedit mach-types 

找到smdk6410,修改为:(注意大小写)


//smdk6410        MACH_SMDK6410       SMDK6410        1626

ok6410            MACH_OK6410        OK6410            1626

 

6,修改源码根目录下的Makefile文件:

wu@wu-VirtualBox:/opt/linux-3.12.7$ gedit Makefile 

找到这行:


//ARCH        ?= $(SUBARCH)

//CROSS_COMPILE    ?= $(CONFIG_CROSS_COMPILE:'%'=%)


ARCH        ?= arm

CROSS_COMPILE    ?= arm-linux-

也可以不修改,在运行make命令的时候加上后缀如:make ARCH=arm CROSS_COMPILE=arm-linux-


7,拷贝一份和smdk6410最接近的配置文件,最为编译的默认配置文件

wu@wu-VirtualBox:/opt/linux-3.12.7$ cp arch/arm/configs/s3c6400_defconfig .config  


8,执行make menuconfig对内核进行配置

a) Kernel Features---->确保Use the ARM EABI to compile the Kernel和Allow old ABI binaries to run with this Kernel (EXPERIMENTAL) 这两项选中。

b) 选择自己刚才的配置ok6410开发板

c) 点击enter输入自己交叉编译器的路径,(我这里没有输入,是在编译命令后面加入了后缀,没什么问题)

d)选择图中蓝色一行,点击enter

 

 e) 选择串口0:

 

 9,开始编译(我这里是添加的后缀 make uImage ARCH=arm CROSS_COMPILE=arm-linux-),如果你在刚才源码根目录Makefile里面指定了就不用加这个后缀了,比较省事。

make uImage

 

10,通过dnw或者tftp把uImage下载到开发板内存中,可以运行成功。(飞凌提供的u-boot1.1.6网卡驱动不对,可以用dnw下载后写入nandflash中启动)

其他问题:

为什么是uImage ,uboot只支持uImage格式的内核镜像,貌似飞凌提供的uboot也可以启动zImage,感兴趣可以试试,可以查看  http://kmoving.blog.163.com/blog/static/20504919720123151533819/ 里面的介绍。

还有一点必须使用uboot自带的工具mkimage给zImge加头信息,否则写入到nandflash中无法启动内核,这个可能是我用自己移植的uboot原因,在这篇文章中提到--http://www.cnblogs.com/lucky-tom/p/3531487.html ,彻底弄明白的朋友请给我留言哇。

分类: Ubuntu 下arm嵌入式的学习


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章