【Linux驱动】Linux-2.6.20.4内核移植
来源:互联网 发布:我的淘宝已买到的宝贝 编辑:程序博客网 时间:2024/05/23 19:10
最近一段时间一直在学习向TQ2440开发板移植内核、移植驱动。真心觉得这方面的知识有很大的难度。但是从另一角度去看,难度越大,能力提升的空间就越大!!
1、解压源码
从网上下载一个Linux 内核,我是用的是Linux-2.6.20.4。然后用命令解压。建议解压到“/home/用户名”目录下。我的内核源码存放在:
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 2.6 内核驱动移植
- Linux 2.6 内核驱动移植
- linux-2.6.20内核移植 AX88697 驱动
- linux-2.6.32内核LCD驱动移植
- linux-2.6.32内核LCD驱动移植
- linux-2.6.35内核移植—网卡驱动的移植
- Linux驱动移植(四)——Linux内核移植
- 基于S3C2410平台移植Linux 2.6.14内核&驱动指南
- 移植MMC/SD驱动到 linux-2.6.28 内核
- S3C2410 LCD驱动的移植(基于linux-2.6.15.4内核)
- FS2410 开发板linux-2.6.35内核 LCD 驱动移植
- 【转】LINUX-2.6.31内核移植及添加驱动
- Linux-2.6.22.6 内核移植--添加USB设备驱动
- LINUX-2.6.31内核移植及添加驱动
- linux-2.6.35内核移植—网卡驱动的添加
- linux-2.6.35内核移植—网卡驱动的添加
- linux-2.6.35内核移植—LCD驱动的添加
- java基础题
- JavaEE路径配置
- 进程与线程
- 特征提取-SIFT特征源码解析
- Makefile三个有意思的变量
- 【Linux驱动】Linux-2.6.20.4内核移植
- adb:在Android中使用的命令行工具
- linux下的负载均衡,安装及配置详解(例子使用centos系统)
- raw socket使用
- 解决XCode编译错误clang: error: linker command failed with exit code 1
- http缓存
- list和set有什么异同点
- VC控件DateTimePicker使用方法(2014-05-18)
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读