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

linux 3.4.103 内核移植到 S3C6410 开发板

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

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

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

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

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

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

二. patching yaffs2文件系统

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

换一个版本就正常了~ (坑爹~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)

25b071da4424a789f487ab0ab36e9c9a.png

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

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

为了增加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选项丢失的问题

修改根目录下的Makefile,如图

f395678a91fde3e3b155e51b861b8a35.png

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

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

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

添加如下代码:

添加头文件

#include  

#include

#include

struct s3c_ts_mach_info {

int delay;

int presc;

int oversampling_shift;

intresol_bit;

enum s3c_adc_types3c_adc_con;

};

0b33847e60977be6ad9be6f7b2db60dd.png

de8646e3d5bf6c873e32c1148abf18e2.png

4d1d99f5dbf29087052e66371bc899b2.png

6956527d1660a04f293f5e351e097ba2.png

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

bf80b761e9676d203b8b12044889b1df.png

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

1a0b49a9259e329a3c49658ef102b070.png

修改注释有added的那句话

a4ae93e85011b583d1dcc4426e42cf9e.png

添加 .boot_params 选项

aa383f9e96b245b9a5bb3dc7047a8d92.png

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

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

Kernel Feature配置

35f9d9f4542613b338863e149c5c7c2f.png

最后make zImage

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

有人说是

d9a82986f0d69454bb29e4365e29504e.png

原文:http://blog.csdn.net/cinmyheart/article/details/38784283

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值