【Linux驱动器】Linux-2.6.20.4内核移植
最近一段时间以来一直学习TQ2440内核开发板移植、嫁接驱动器。
真诚地相信这方面的知识有很大的困难,。但有一种观点认为,从看,难度越大,的提升空间的能力更大!
!
1、解压源代码
从Internet下载Linux 内核,我是用的是Linux-2.6.20.4。然后用命令解压。建议解压到“/home/username”文件夹下。
我的内核源代码存放在:
2、加入对ARM的支持
由于所用的是TQ2440开发板。属于ARM9。因此要在系统中加入对ARM的支持。
方法:进入内核源代码文件夹,
改动“Makefile”文件,将193行的“ARCH ?=(SUBARCH)”与194行“CROSS_COMPILE?=”将其改动为(如图)
也能够在第一次使用“make menuconfig”时使用“make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig ”来取代。记得有一次忘记了改动对ARM的支持。结果在配置的时候好多的选项都没有,一開始还以为是内核的原因,于是又一次下载了内核,结果还是一样。愚蠢的错误啊!
!!
。贴出来,刺激一下自己!
改动前的配置菜单:
改动后的配置菜单:
3、交叉编译器环境搭建
4、时钟频率改动
TQ2440使用的是12MHz的外部时钟源,而对应的配置文件里是16.9344MHz,打开以下的文件:
改动以下的函数:
5、改动机器码
在TQ2440使用的uboot中设定的机器码是168,所以内核这里须要改动机器码。否则会出现不能启动的情况。
此參数保存在内核源代码的“arch/arm/tools/mach-tupes”中。
在编译第一个内核的时候,内核能成功下载到开发板上,可是就是无法启动。
刚開始还觉得是内核编译太大的原因,裁剪了非常多的东西之后,还是无法启动。经一个队友提示“是否改了机器码”,我还非常自信的说“已经改过了”,到了最后查看一下文件,机器码木有改啊~~~~~~~~~~~
6、Nand Flash 驱动移植
进入内核源代码“arch/arm/plat-s3c24xx/common-smdk.c”,改动例如以下两个位置的代码(改动后的)
例如以下图:
(1)
(2)
然后打开
改动第752行的代码如图所看到的:
7、加入对yaffs的支持
能够通过命令来获取yaffs的源代码:git clone git://www.alcphl.co.uk/yaffs2
然后进入到yaffs2文件夹下,打补丁到内核中,使用以下的命令:
./patch-ker.sh c m /home/xg/linux_arm/linux-2.6.30.4/(内核所在的文件夹)
版权声明:本文博客原创文章,博客,未经同意,不得转载。
【Linux驱动器】Linux-2.6.20.4内核移植的更多相关文章
- 【转】 linux内核移植和网卡驱动(二)
原文网址:http://blog.chinaunix.net/uid-29589379-id-4708911.html 一,内核移植步骤: 1, 修改顶层目录下的Makefile ARCH ...
- 对Linux新手非常有用的 20个命令
你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳. ...
- 【转】 linux内核移植和驱动添加(三)
原文网址:http://blog.chinaunix.net/uid-29589379-id-4708909.html 原文地址:linux内核移植和驱动添加(三) 作者:genehang 四,LED ...
- 对Linux 专家非常有用的20 个命令
谢谢你你给了我们在这篇文章前两个部分的喜欢,美言和支持.在第一部分文章中我们讨论了那些都只是切换到 Linux 和linux新手所需的必要知识的用户的命令. 对 Linux 新手非常有用的 20 个命 ...
- Linux内核移植
实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核 下面以Linux2.6.30.4内核移植到gec2440为例: 一.准备工作:建立工作目录,下载内核 ...
- Linux内核移植到JZ2440
一.准备工作:1.Linux内核:Linux2.6.22.6,可从www.kernel.org上下载:2.交叉工具编译链:arm-linux-gcc-3.4.5-glibc-2.3.6:3.yaffs ...
- linux内核(二)内核移植(DM365-DM368开发攻略——linux-2.6.32的移植)
一.介绍linux-2.6.32: Linux-2.6.32的网上介绍:增添了虚拟化内存 de-duplicacion.重写了 writeback 代码.改进了 Btrfs 文件系统.添加了 ATI ...
- (转)对 Linux 专家非常有用的 20 个命令
谢谢你你给了我们在这篇文章前两个部分的喜欢,美言和支持.在第一部分文章中我们讨论了那些都只是切换到 Linux 和linux新手所需的必要知识的用户的命令. 对 Linux 新手非常有用的 20 个命 ...
- 对 Linux 专家非常有用的 20 个命令
原文链接:http://www.oschina.net/translate/20-advanced-commands-for-linux-experts?from=20130811 对中级 Linux ...
随机推荐
- java--String常量池问题的几个例子
关于string内存分配不错的博客:http://blog.csdn.net/rj042/article/details/6871030 String常量池问题的几个例子 示例1: Java代码 St ...
- MyReport报表引擎2.6.5.0新功能
新的文本渲染引擎,打印旋转时保持文本高精度矢量输出,打印更清晰. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva29uZ195ZWU=/font/5a6 ...
- 使用LINQ的几个小技巧
这里总结了这些技巧.介绍如何使用LINQ来: 初始化数组 在一个循环中遍历多个数组 生成随机序列 生成字符串 转换序列或集合 把值转换为长度为1的序列 遍历序列的所有子集 如果你在LINQ方面有心得也 ...
- 怎么取消 Windows Server 2012 RDP 限制每个用户只能进行一个会话
在 Windows Server 2008 / 2008 R2 上,如果希望多个远程用户使用同一个账号同时访问服务器的 Remote Desktop(RDP),只需通过管理工具-远程桌面下的“远程桌面 ...
- 安卓入门学习之Hello,world!
第二章 Hello,world! 本文同时发表至简书,不为什么,用他的MarkDown在线编辑爽得要哭. 注意:本章节所使用的开发工具为Eclipse 以Android编程权威指南作为学习书物 第一节 ...
- Jquery调用webService的四种方法 转载-记录
我总结几个关键点 1. 服务必须声明为ScriptService(否则会出现下面的问题) 2.服务的方法不需要任何更改,保持原状 3.客户端用jquery的.ajax方法来调用 3.1 type必须是 ...
- 【c语言】求最大值
一.我个人觉得求最大值比较简单的一种方法(当然同时求最大值和最小值时稍微改改也能行) #include <stdio.h> int main(void) { int f, i, max; ...
- 操作数组的工具类Arrays
Java提供的Arrays类里包含一些static修饰的方法可以直接操作数组. int binarySearch(type[] a, type key)使用二分法查询key元素值在a数组中出现的索引, ...
- border-radius.htc为ie6-8实现圆角
~~圆角是比较常用的css3属性,但是ie6-8并不支持圆角,可用border-radius.htc html组件实现圆角, border-radius.htc内部应用vml进行了重绘 border ...
- JFreeChart画折线图
请见Github博客: http://wuxichen.github.io/Myblog/htmlcss/2014/09/01/JFreechartLinechart.html