linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,来日再战!)

linux 3.4.103 内核移植到 S3C6410 开发板

这个星期几乎就搭在这里面了,一开始感觉很不值得,移植这种浪费时间的事情,想立马搞定,然后安安静静看书 & coding.

坑爹的事情就是一个多星期的时间搭进去了,还是没成功。我把我的移植失败的经验留下来做为笔记,为下次做准备,也让和我一起做移植的道友少走弯路.大家一起共同分享经验,营造更好的开发环境。

查了很多资料,在此谢谢那些bloger, thanks for your spirit of sharing.

一. 从官网获得干净的内核

https://www.kernel.org/

我这里选择的是3.4.103,(其实已经试过很多版本的kernle了,都是失败啊,心塞~,其实我在写这篇blog的时候还在尝试再做一次,现在这次我用的3.4.103)

我的开发板是飞凌的s3c6410,开发板供应商提供的kernel是经过他们处理的,所以不要用供应商的kernel source code. 那样基本上啥经验都赚不到

二. patching yaffs2文件系统

在这个过程中我还发现yaffs2最近的版本是有问题的,源码编译过不了,有错误

http://blog.csdn.net/cinmyheart/article/details/38747505

换一个版本就正常了~ (坑爹~source code 错误!)

yaffs2-4e188b0.tar.gz

给内核打yaffs2文件系统的补丁

解压yaffs2源文件压缩包之后,执行yaffs2源代码目录下的一个shell script

./patch-ker.sh c  /Jason_with_ARM/linux-3.4.104/ 

上面命令完成下面三件事情:

(1) 修改内核fs/Kconfig

增加一行:source "fs/yaffs2/Kconfig"

(2) 修改内核fs/Kconfig

增加一行:ojb-$(CONFIG_YAFFS_FS) +=yaffs2/

(3) 在内核fs/目录下创建yaffs2目录

将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie;

将yaffs2 源码目录的Kconfig文件复制到内核fs/yaffs2目录下;

将yaffs2源码目录下的*.c *.h文件复制到内核fs/yaffs2目录下.

三. 配置内核!

干干净净的内核移植到ARM平台还是要各种手动修改,麻烦的说~当然这也让我更熟悉Kconfig Makfile的作用和关系

linux 默认的Kconfig 和.config不是为ARM平台准备的So...

RT,copy arm目录下的Kconfig 并且把s3c6400_defconfig copy成.config (s3c6400和s3c6410的配置差不多,于是内核就只给出了一个config)

运行一次make menuconfig 然后再添加点东东

照着下面这个blog的方法做,补全MTD选项

http://blog.csdn.net/cinmyheart/article/details/38754669

为了增加devfs文件管理器的支持,补全fs/Kconfig

我们所用的文件系统使用的是devfs文件管理器。修改fs/Kconfig,

找到

menu "Pseudo filesystems"

添加如下语句:

config DEVFS_FS
         bool "/dev file system support (OBSOLETE)"
         default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS

对于menuconfig 里没有yaffs2选项的解决办法

下面给出的link,有些细节其实是配置内核的一部分,不完全是为了解决yaffs2选项丢失的问题

http://blog.csdn.net/cinmyheart/article/details/38759549

修改根目录下的Makefile,如图

接着修改MTD分区(这一步不完全正确,很可能这就是我为嘛没有移植成功的原因)

三星的芯片,一个系列都是从前面的型号慢慢改进衍生出来的新产品,所以就会出现s3c6410和s3c2410在一些基础文件配置上共用

修改./arch/arm/mach-s3c64xx/mach-smdk6410.c

添加如下代码:

添加头文件

</pre></p><pre name="code" class="cpp">
#include  <plat/sdhci.h>

#include <linux/mtd/partitions.h>

#include <mtd/mtd-abi.h>

struct s3c_ts_mach_info {
	int             	delay;
	int             	presc;
	int             	oversampling_shift;
	int			resol_bit;
	enum s3c_adc_type	s3c_adc_con;
};

注释掉图中注释的部分,并且添加&s3c_device_nand

在/arch/arm/plat-samsung/devs.c里面修改这个函数

修改注释有added的那句话

添加 .boot_params 选项

修改 /drivers/mtd/nand/s3c2410.c

替换所有的(除了switch的选项外)赋值语句包含的NAND_ECC_SOFT为NAND_ECC_NONE

Kernel Feature配置

最后make zImage

最后的最后:可惜找了很多blog,还是没能搞定这个问题,

有人说是

时间: 2024-10-02 02:58:36

linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,来日再战!)的相关文章

linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)

linux 3.4.103 内核移植到 S3C6410 开发板 这个星期差点儿就搭在这里面了,一開始感觉非常不值得,移植这样的浪费时间的事情.想立刻搞定,然后安安静静看书 & coding. 坑爹的事情就是一个多星期的时间搭进去了,还是没成功. 我把我的移植失败的经验留下来做为笔记,为下次做准备.也让和我一起做移植的道友少走弯路.大家一起共同分享经验,营造更好的开发环境. 查了非常多资料,在此谢谢那些bloger, thanks for your spirit of sharing. 一. 从官

向嵌入式linux开发板移植openSSH

向嵌入式linux开发板移植openSSH 晚上没事干,想着能不能把高大上的openSSH移植到我现在开发的嵌入式linux开发板上,前不久刚弄出来dropbear,但遇到一些小问题,一会说,所以把openSSH搞上去还是可以的.开发板端为服务器端,由宿主机客户端访问. 2016-8-16 背景 开发板:freescale i.mx6q 宿主机操作系统:ubuntu 14.04 开发板操作系统:linux 3.0.35 基本情况 使用dropbear后,ssh算是在板子上成功跑起来了,参见我另一

五、搭建S3C6410开发板的测试环境—学习笔记

在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开发了扩展板. 下面对S3C6410开发板进行简单的介绍:三星S3C6410是一款低功耗.高性价比的RISC精简指令集系统的处理器,基于ARM11内核,可用于移动电话和通用处理等领域.它为通信服务提供了优化的硬件性能,内置强大的硬件加速器,有运动视频处理.音频处理.2D加速.显示处理和缩放等,还集成了

第五章 搭建S3C6410开发板的测试环境

在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开发了扩展板. 下面对S3C6410开发板进行简单的介绍:三星S3C6410是一款低功耗.高性价比的RISC精简指令集系统的处理器,基于ARM11内核,可用于移动电话和通用处理等领域.它为通信服务提供了优化的硬件性能,内置强大的硬件加速器,有运动视频处理.音频处理.2D加速.显示处理和缩放等,还集成了

5.6移植Madplay到开发板

实验3-3 移植Madplay到开发板 实验目的: 掌握嵌入式Linux开源项目的移植 ? 实验要求: 1.准备Madplay开源项目需要的源文件: (1).madplay-0.15.2b.tar.gz (2).libmad-0.15.1b.tar.gz (3).libid3tag-0.15.1v.tar.gz (4).zlib-1.1.4.tar.gz ? 实验步骤: 1.解压包配置并编译zlib-1.1.4 (1).解压:tar xzvf zlib-1.1.4.tar.gz (2).配置:将

【原创】车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程

[原创]车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程 所用工具: windows电脑 Ubuntu12.04 Smart210开发板 4g以上SD卡 U盘 步骤: 1.      用SD卡烧写Linux系统到smart210开发板,开机測试烧写过的Linux,确保能够正常执行.(能够參考开发板光盘中带的资料) 2.      在windows系统下安装QT并配置,建立一个简单的QTproject演示样例測试QT.把路况信息接收端源代码拷贝到一个不包括中文字符的路径下,进

u-boot-2010.09移植到fl2440开发板(B)

前面我们的u-boot只是在内存中运行,要想在nandflash中运行,以达到开机自启的目的,还需作如下修改 一.添加DM9000网卡支持 1.修改board/fl2440/fl2440.c中的board_eth_init函数,支持DM9000网卡 #ifdef CONFIG_CMD_NET int board_eth_init(bd_t *bis) { int rc = 0; #ifdef CONFIG_CS8900 rc = cs8900_initialize(0, CONFIG_CS890

移植net-snmp到开发板(mini210)

1.安装交叉编译工具arm-linux-gcc 2.下载net-snmp源码安装包 3.解压安装包 4../configure --build=i686-linux --host=arm-linux  CC=arm-linux-gcc  --with-endianness=little --enable-mini-agent  --with-install-prefix=/usr/local/snmp_arm_install --with-ar=arm-linux-ar LDFLAGS="-st

第五章、搭建S3C6410开发板的测试环境

通过对本章的学习,我对s3c6410开发板的测试环境有了一定的认识,并掌握了如下的知识点:一.对于s3c6410这款开发板,它是一款低功耗.高性价比的处理器,它是基于ARM11的内核.二.不同开发板的区别主要在烧录嵌入式系统的方式上.三.安装串口调试工具的步骤:minicom的步骤1.检测当前环境是否支持usb转串口# lsmod | grep usbserial2.安装minicom# apt-get install minicom3.配置minicom# minicom -s 进入“seri