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近期的版本号是有问题的,源代码编译过不了,有错误
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,还是没能搞定这个问题。
有人说是
版权声明:本文博客原创文章,博客,未经同意,不得转载。
linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)的更多相关文章
- 第五章 搭建S3C6410开发板的测试环境
在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开 ...
- 第五章——搭建S3C6410开发板的测试环境
搭建S3C6410开发板的测试环境 通过本章的学习学会了如何在开发板上安装Android.开发板是学习和开发嵌入式技术的主要硬件设备,想要顺利的通过linux驱动访问硬件,是不能在PC板上模拟的,需要 ...
- 搭建S3C6410开发板的测试环境
因为ARM架构的开发板可基于X86架构的PC在CPU指令以及二进制上都有所不同,而且如果linux驱动需要访问硬件,这些硬件很难在PC上模拟,所以就需要我们在带有这些硬件的开发板上进行调试和测试. ...
- S3C6410开发板开发环境的搭建
本节主要介绍了S3C6410开发板及OK6410开发板.OK6410开发板是基于ARM11处理器的S3C6410,采用“核心版+底板”结构 主要步骤如下:. OK6410开发板自带一个串口,PC也需要 ...
- 【原创】车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程
[原创]车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程 所用工具: windows电脑 Ubuntu12.04 Smart210开发板 4g以上SD卡 U盘 步骤: 1. ...
- 第五章 搭建S3C6410开发板测试环境
开发板是开发和学习嵌入式技术的主要设备.在这章中介绍了S3C6410开发板,它是三星公司推出的一款低功耗.高性价比的RISC处理器.安装串口调试工具:minicom.它的安装步骤:第1步:检测当前系统 ...
- Opencv2.2 移植到am335x-y开发板
1.虚拟机上运行cmake-gui,报找不到文件,指示安装. 2.下载opencv2.2.0 http://opencv.org/downloads.html 3.cmake-gui,配置参考< ...
- linux-3.0内核移植到fl2440开发板(以MINI2440为模板)
我们的fl2440开发板使用的是s3c2440的芯片,与MINI2440十分相似,因此需要改动的地方不多,移植也比较容易. 1.[weishusheng@localhost kernel]$ sudo ...
- 【linux】内核+文件系统下载到开发板
K开发 欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:htt ...
随机推荐
- cocos2d之Box2D详细说明 鼠标联合实现
cocos2d之Box2D具体解释 鼠标关节实现 DionysosLai2014-5-7 我们常常要移动物理世界中的某个物体,例如说石头.木块等.假设我们直接改变这些物体的位置,让这些物体尾随我们手指 ...
- Directx11学习笔记【十二】 画一个旋转的彩色立方体
上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...
- HPUX在oracle10g安装和卸载缩写
创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/ ...
- Android - 和其他APP交互 - 把用户带到其他app
Android的重要功能之一就是app可以根据要执行的操作让用户启动另外一个app.例如,app有一个商业地址然后想要在地图上显示,并不需要在app中加一个显示地图的activity,可以直接用Int ...
- HDU 1864最大报销额(一维背包)
题目地址:HDU 1864 刚上来看着挺麻烦的..细致看了看原来好简单好简单...仅仅要去掉一些不符合要求的发票,剩下的就是最简单的背包问题了..对于小数问题,仅仅要*100就变成整数了. 代码例如以 ...
- ZipDemo
package swing.zip; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt. ...
- SQL优化策略高级优化经常使用-1(The Return Of The King)
1 经常使用的优化策略 1.1 语句 1.1.1使用实际的列名 当我们查询SQL语句时.你是否觉得使用实际的列名比使用*更快呢?答案是肯定的. 为了证实这一点,感兴趣的朋友能够自己验证一下.我这 ...
- 引用类型之object类型
object类型有两种创建方法,第一种是直接创建法: var person=new Object(); person.name = "Nicholas"; person.age = ...
- NUnit3 Test Adapter vs2015
NUnit的安装 前言:NUnit是什么? NUnit 是一个单元测试框架,专门针对于.NET来写的.NUnit是xUnit家族种的第4个主打产品,完全由C#语言来编写,并且编写时充分利用了许多.NE ...
- php学习之路:WSDL详细解释(两)
3.定义服务使用的逻辑消息 当服务的操作被调用时.服务被定义为消息交换.在wsdl文档中,这些消息被定义message元素. 这些消息由称之为part元素的部分组成. 一个服务的操作,通过指定逻辑消息 ...