一、介绍linux-2.6.32:
Linux-2.6.32的网上介绍:增添了虚拟化内存 de-duplicacion、重写了 writeback 代码、改进了 Btrfs 文件系统、添加了 ATI R600/R700 3D 和 KMS 支持、CFQ 低传输延迟时间模式、perf timechart 工具、内存控制器支持 soft limits、支持 S+Core 架构、支持 Intel Moorestown 及其新的固件接口、支持运行时电源管理、以及新的驱动;这些本人不懂,但是本人只注意到常用的LINUX操作系统RADHAT Enterprise 6,ubuntu-10.04,debian 6.0稳定版本,这些都是使用linux-2.6.32这个版本,智能手机就更多了,android手机(经典版本HTC-G7手机使用linux-2.6.32.15和android 2.2版本结合),因为只有从linux-2.6.32以后,才能发挥android系统的优势;不过单核的 DM368无论是432MHz还是新出的500多MHz,跑android系统非常困难,只能跑QT,这里不讨论;
本人写内核的环境和路径都是基于前两篇文章的基础上进行的,先从dvsdk_dm368_4_02_00_06\下的Rules.make和Makefile开始,见Rules.make第45行,
LINUXKERNEL_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/psp/linux-2.6.32.17
很明显我们把内核名字改成linux-2.6.32.17,原来解压安装出来的名字太长了,所以要在Rules.make第45行改一下;Makefile是编译的脚本,TI把整个DVSDK4.02的开发环境统一整合在一起,体现在这个Makefile,看完这个Makefile,就应该知道如何编译整个DVSDK里所有的软件包,内核编译的命令见143行开始;在dvsdk_dm368_4_02_00_06\目录下使用make linux,make linux_config, make linux_clean等命令编译内核;
二、开始移植:从删除多余的文件夹和文件开始:
1、dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm/configs
只保留davinci_dm365_defconfig
图-1
然后按上图-1,先使用默认的config文件进行内核配置,
cp arch/arm/configs/davinci_dm365_defconfig .config
注意路径;
2、删除非ARM芯片平台的处理器
进入dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch,保留arm,um,x86三个文件夹,其他文件删除掉;
然后进入dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/um文件夹,只保留scripts文件夹,其他删除掉,包括那几个文件Kconfig等文件也删除掉;
继续进入dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/x86文件夹,只保留include和mm文件夹,和几个文件,其他文件夹删除掉见下图-2:
图-2
继续进入dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm文件夹,保留mach-davinci文件夹和保留下图的文件夹和文件,其他带mach-删除吧,占空间,又占备份时压缩的时间,
图-3
上图-3就是dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm目录下删除后的结果显示;
3、修改dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm/Makefile,
从第120行开始,#machine-$(CONFIG_ARCH_AAEC2000) := aaec2000
一直到172行,
#machine-$(CONFIG_ARCH_MXC91231) := mxc91231
只保留machine-$(CONFIG_ARCH_DAVINCI) := davinci,其他全部使用”#”给屏蔽掉,我们只要machine-$(CONFIG_ARCH_DAVINCI) := davinci
第176行到第184统统使用”#”给屏蔽掉,不要这些芯片平台;
4、修改dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm/Kconfig
从第707行开始,一直到793行,这些全部使用“#”给屏蔽掉,保留第795行的source "arch/arm/mach-davinci/Kconfig",然后继续把第797到805行使用“#”给屏蔽掉;
经过上面的删除,使用tar jcf 或 tar zcf压缩的linux-2.6.32.17降到51M,比没有删除的减小近一半的大小;我们追求简洁,思路清晰;其实还有很多地方可以删除的,大家慢慢体会,包括include,driver里边的老掉牙的设备,这里就不啰嗦了;删除后记得把对应的Kconfig和Makefile给屏蔽掉;
三、开始从内核配置
图-4
因为前面已经做了cp arch/arm/configs/davinci_dm365_defconfig .config我们按上图指定的路径使用make linux_config,这样就看到熟悉的内核配置界面,见下图-5:
图-5
我们按顺序一个一个配置,当然,很多配置选项都是使用TI davinci_dm365_defconfig配置好的,我们对它们进行分析、裁剪、修改,
进入“General setup”配置
图-6
上图是我们多选了RAM disk文件系统支持的压缩方式,默认是使用gzip生产RAM DISK文件系统,你也可以使用bzip2和LZMA(压缩率比前面两个高);
图-7
进入“System Type”配置,上面按TI 原来的配置,
图-8
然后直接进入“TI Davinci Implementations”,按上面的选择,最后面的27000000表示你的主芯片晶振是27MHz还是24MHz,本公司的是24MHz晶振,我们就把27000000改成24000000;
图-9
返回图-5,进入“Networking support”,你的系统如果没有WIFI等无线模块,这个无线的“wireless”协议可以不选;
图-10
主要对“Networking options”进行配置,这里基本上就是IPV4和IPV6的协议配置,我们按TI原来的选择,带“M”选项也可以使用“*”编译进内核,而不是模块;
图-11
图-12
返回图-5进入“Device Drivers”,这是配置内核的重点,见图-11和图-12,
图-13
按顺序先对NAND FLASH分区MTD进行配置,直接参考TI 默认的配置;
图-14
图-14 RAM/ROM/FLASH及下面3个使用TI默认的配置,
图-15
进入“NAND device Support”的配置,一定要选择“Support NAND on Davinci SoC”,
图-16
这是2.6.32新的特性,开始支持UBI文件系统,UBI文件系统的出现,可以让JFFS2,YAFFS2退出市场,跑android系统,必须用到,这里我们可以不选,也可以选,根据你的板子要使用什么样的文件系统;