Ubuntu下移植内核到OK6410开发板

发布者:心想的45号最新更新时间:2024-10-17 来源: cnblogs关键字:Ubuntu  移植内核  OK6410开发板 手机看文章 扫描二维码
随时随地手机看文章

环境: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嵌入式的学习


关键字:Ubuntu  移植内核  OK6410开发板 引用地址:Ubuntu下移植内核到OK6410开发板

上一篇:移植u-boot-2010.03 --- 内核烧写到NandFlash
下一篇:移植u-boot-2010.03问题 --- 支持dnw

推荐阅读最新更新时间:2026-03-20 11:09

Linux-4.9.2内核在mini2440上的移植(二)Ubuntu编译环境搭建(下)
2.1安装arm-linux-编译器 编译器在ubuntu环境下可以使用apt命令自动安装,也可以下载独立的安装包手动安装,这两种安装方式都可以实现内核编译,不同版本的arm-linux-gcc可以在系统中共存。本文会介绍这两种安装方法。任一种编译器都能编译内核,推荐使用第一种方法。 这里我们规定一下,所有的命令前的“#”表示使用root权限执行,登录系统后使用sudo -i切换为root权限,#后面的内容是实际指令,复制粘贴到putty中执行即可。 (1)自动安装编译器 ~# apt-get install gcc-arm-linux-gnueabihf 安装完成后,查看是否安装成功 ~#arm-linux-
[单片机]
Linux-4.9.2<font color='red'>内核</font>在mini2440上的<font color='red'>移植</font>(二)<font color='red'>Ubuntu</font>编译环境搭建(下)
JLink+GDBServer调试S3C6410裸板的初始化代码 For OK6410开发板
要调试裸板,有两种初始化方法,一个是用烧好的uboot初始化,再有就是直接用JLink+GDBServer初始化。代码参考了网上的资料,根据手头的OK6410开发板做了修改。整体代码如下: # Connect to the J-Link GDBServer target remote localhost:2331 # Set JTAG speed to 30 kHz monitor endian little monitor speed 30 # Reset the target monitor reset monitor sleep 10 # # CPU core initialization # # Set the pr
[单片机]
飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2
Part0 准备知识 0.1 关键参数说明 0.1.1 开发板说明 OK6410是飞凌公司发布的一款开发板,当前有2个版本,OK6410-A和OK6410-B,我当前使用的是前者;前者也经历过升级,所以有128M ram的和较新的256内存的版本,nand flash大小也有区别,当前新的为4G,内存大小会影响到编译时smdk6410.c文件中mmu部分代码,后续会提到,可以参考飞凌提供的u-boot的该文件内容; 0.1.2 处理器说明 该开发板使用的是三星的s3c6410处理器, cup采用的指令集为: arm1176jzf-s, 属于armv6zk(使用gcc时,可通过-march=armv6zk来指定), 更多的对应关
[单片机]
ok6410开发板交叉编译器的安装
1.上篇文章中我们说了已经在虚拟机里面的ubuntu12根目录下建立了 forlinx文件夹,现将arm-linux-gcc.4.3.2.tgz拷贝到forlinx中,我用的是上次建立好的xftp,相当爽啊 2. cd ../../ ls cd forlinx mkdir /usr/local/arm tar zxvf arm-linux-gcc-4.3.2.tgz -C /,注意这里的斜杠不要丢掉 这样解压到了 /usr/local/arm 然后运行这个命令 gedit /etc/profile 再把以下四行加入文件的头部(尾部我试了反正我的不管用,不知道为啥)
[单片机]
<font color='red'>ok6410</font><font color='red'>开发板</font>交叉编译器的安装
OK6410开发板uboot烧写
uboot的移植完成以后,满以为很快能烧写到板子上并安装linux,结果uboot烧写了三天才终于成功,这其中碰到了不少的问题,在此做个总结。 首先,飞凌的OK6410开发板并不支持JLink烧写uboot,只能通过SD卡来烧写,这一点我事先并不知道,他们网店介绍里并未说明,而且销售人员也没有做出任何提示,结果我花了整整一天时间尝试所有通过JLink烧写uboot的可能方法,结合网上个别人反映,最终意识到通过JLink完成uboot烧写是不可能成功的了,后来在销售人员那里确认了这一点,对飞凌表示不满。 当时买板的时候没有买SD卡,因为感觉没什么用,就想给老板省点钱,现在没SD卡不行了,但在寻找JLink烧写uboot方法的过程中
[单片机]
基于Tiny 6410的内核移植 (NAND FLASH 、UBIFS篇)
一、环境 1、开发板 Tiny6410 NAND: 2G RAM: 256M MLC 2、操作系统 Ubuntu10 3、交叉工具编译链 arm-linux-gcc-4.5.1 二、下载内核源码包 linux-2.6.38 三、解压内核 tar –jxvf linux-2.6.38.tar.bz2 我解压的的路径是: 四、NAND FLASH移植 1、修改Makefile vim Makefile 将约191行改为: ARCH ? = arm CROSS_COMPILE ? = arm-linux- 2、cp arch/arm/configs/s3c6400_defconfig .config
[单片机]
浅析OpenHarmony内核SoC层级的移植适配流程
OpenHarmony 系统移植最核心的步骤是内核的移植,内核的稳定是一切子系统稳定的基础,上一篇我们讲述了内核启动原理,以及 vendor、board 的开发配置,本文将介绍 SoC 层级的移植适配流程。 SoC 适配 SoC 配置芯片层级编译依赖库,包括 CMSIS、HAL(硬件抽象层)等,这里包含操作总线、串口、时钟、寄存等库函数。 ①创建对应的文件目录结构 目录名称按照芯片厂家、芯片型号来创建,比如 st 公司下的 stm32f4xx 系列芯片。 配置文件内容如下: device/soc/st/stm32f4xx/Kconfig.liteos_m.defconfig.series if SOC_SERIES_S
[单片机]
浅析OpenHarmony<font color='red'>内核</font>SoC层级的<font color='red'>移植</font>适配流程
内核移植(4)移植yaffs文件系统
yaffs这种文件系统专门为 NAND Flash 设计的嵌入式文件系统, 虽减少了一些功能,但比 JFFS 速度更快,占用内存更少。 一般而言,在 Nor Flash 上使用 JFFS2 文件系统,在 NAND Flash 上使用 YAFFS 文件系统。 我在 JFFS2 与 YAFFS 的性能比较表格上看到, YAFFS 适用的操作系统很多,容易移植。 (1) 将 yaffs2 代码加入内核 通过yaffs目录下的脚本文件patch-ker.sh 来给内核打补丁,操作如下: cd /work/system/Development/yaffs2 ./patch-ker.sh c /work/linux-2.6.22.6
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved