您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > DAVINCI DM365-DM368开发攻略――linux-2.6.32的移植
在这里也顺便纪念一下去年故去的C语言之父——丹尼斯·里奇,也是操作系统Unix之父,是他让嵌入式发展如此迅猛,科技发展如此飞速,C语言是如此美丽,简洁,大大提高软件跨主芯片平台的移植,他劳苦功高,本人决定本篇文章不使用“。”,直接使用“;”,和很多网友一样,用“;”代表C语言的一行指令的结束,以表达对他的缅怀;一、介绍linux-2.6.32:Linux-2.6.32的网上介绍:增添了虚拟化内存de-duplicacion、重写了writeback代码、改进了Btrfs文件系统、添加了ATIR600/R7003D和KMS支持、CFQ低传输延迟时间模式、perftimechart工具、内存控制器支持softlimits、支持S+Core架构、支持IntelMoorestown及其新的固件接口、支持运行时电源管理、以及新的驱动;这些本人不懂,但是本人只注意到常用的LINUX操作系统RADHATEnterprise6,ubuntu-10.04,debian6.0稳定版本,这些都是使用linux-2.6.32这个版本,智能手机就更多了,android手机(经典版本HTC-G7手机使用linux-2.6.32.15和android2.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\目录下使用makelinux,makelinux_config,makelinux_clean等命令编译内核;或在dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17目录下使用命令:makeARCH=armCROSS_COMPILE=arm-none-linux-gnueabi-或修改makefile:#ARCH?=$(SUBARCH)ARCH=arm#CROSS_COMPILE?=CROSS_COMPILE=arm-none-linux-gnueabi-二、开始移植:从删除多余的文件夹和文件开始:1、dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/arch/arm/configs只保留davinci_dm365_defconfig图-1然后按上图-1,先使用默认的config文件进行内核配置,cparch/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行的sourcearch/arm/mach-davinci/Kconfig,然后继续把第797到805行使用“#”给屏蔽掉;经过上面的删除,使用tarjcf或tarzcf压缩的linux-2.6.32.17降到51M,比没有删除的减小近一半的大小;我们追求简洁,思路清晰;其实还有很多地方可以删除的,大家慢慢体会,包括include,driver里边的老掉牙的设备,这里就不啰嗦了;删除后记得把对应的Kconfig和Makefile给屏蔽掉;三、开始从内核配置图-4因为前面已经做了cparch/arm/configs/davinci_dm365_defconfig.config我们按上图指定的路径使用makelinux_config,这样就看到熟悉的内核配置界面,见下图-5:图-5我们按顺序一个一个配置,当然,很多配置选项都是使用TIdavinci_dm365_defconfig配置好的,我们对它们进行分析、裁剪、修改,进入“Generalsetup”配置图-6上图是我们多选了RAMdisk文件系统支持的压缩方式,默认是使用gzip生产RAMDISK文件系统,你也可以使用bzip2和LZMA(压缩率比前面两个高);图-7进入“SystemType”配置,上面按TI原来的配置,图-8然后直接进入“TIDavinciImplementations”,按上面的选择,最后面的27000000表示你的主芯片晶振是27MHz还是24MHz,本公司的是24MHz晶振,我们就把27000000改成24000000;图-9返回图-5,进入“Networkingsupport”,你的系统如果没有WIFI等无线模块,这个无线的“wireless”协议可以不选;图-10主要对“Networkingoptions”进行配置,这里基本上就是IPV4和IPV6的协议配置,我们按TI原来的选择,带“M”选项也可以使用“*”编译进内核,而不是模块;图-11图-12返回图-5进入“DeviceDrivers”,这是配置内核的重点,见图-11和图-12,图-13按顺序先对NANDFLASH分区MTD进行配置,直接参考TI默认的配置;图-14图-14RAM/ROM/FLASH及下面3个使用TI默认的配置,图-15进入“NANDdeviceSupport”的配置,一定要选择“SupportNANDonDavinciSoC”,图-16这是2.6.32新的特性,开始支持UBI文件系统,UBI文件系统的出现,可以让JFFS2,YAFFS2退出市场,跑android系统,必须用到,这里我们可以不选,也可以选,根据你的板子要使用什么样的文件系统;图-17返回图-11进入“Blockdevices”配置,我们直接使用TI的配置,图-18返回图-11进入“SCSIdevicesupport”的配置,选择这个来支持U盘,否则你的U盘无法被DM368板子识别,我们一般把DM368USB设置HOST模式;图-19返回图-11进入“Networkdevicesupport”的配置,一般的RJ45网口选择“10Mor100Mbit”,DM368不支持1000Mbit,无线“WirelessLAN”你不需要的话可以不选;“PPP”这个可以不选,而有时要支持3G的模块的时候,PPP协议(见图-10的配置)和设备支持要选择;图-20进入“10Mor100Mbit”,选择“TIDavinciEMACSupport;图-21返回图-11进入“Inputdevicesupport”,这选择是否支持鼠标键盘触摸屏等输入,我们这边用不上,直接不选;图-22返回图-11进入“Chardevice”,一定要选择DM365IPIPE,IMPPreviewer,IMPResizer,这个到时候调试视频采集程序需要用到Previewer、Resizer等DAVINCI技术;图-23在图-22中,选择进入“Serialdriver”,这里就是DM368的串口配置了,DM368支持UART0和UART1,UART1和其他GPIO复用,小心分配使用硬件资源,和DM6446一样,都是8250的驱动,而DM6446可以配置3个UART;图-24返回图-11进入“I2CSupport”,这个没得说,肯定使用选上的,图-25TI开发板使用的I2C扩展芯片,我们不需要,所以External就不要了,只选上“DavinciI2Cdriver”;图-26返回图-11进入“SPISupport”,如果你的板子没有外接SPI接口的芯片,这里可以不选;图-27返回图-11进入“GPIOSupport”,TI使用芯片扩展更多的GPIO脚,我们不需要,可以不选;图-28返回图-11进入“WatchdogTimerSupport”,凡是使用软件看门狗的,都需要选上这个,DM368和DM6446这些芯片都支持软件看门狗,注意选择是“Davinciwatchdog”;图-29返回图-11进入“Multimediasupport”,多媒体支持,这个就是Davinci的重点,图-30按TI默认的选择,MT9P031500万像素的SERSEOR可以选上,你有其他公司的SENSOR,也可以参考MT9P031的方法加入你SENSOR的驱动,然后修改linux-2.6.32.17\drivers\media\video里边的Makefile和Kconfig文件就OK了;图-31然后从图-30的“encoders/decodersandxxxx”进去选择TVP5146,高清Ypbpr输出THS7303,TH7353芯片的选择支持,我们公司使用TVP5158,本人把它加入内核编译,所以这里显示TVP5158,TVP7002我们没有使用,所以不用选;图-32返回图-11进入“GraphicsSuppor”,这个就是选择支持TFT3.5,TFT4.3寸LCD屏的驱动,也就是通过RGB接口支持屏的输出,我板子不支持,可以选择也可以按TI默认的设置;图-33返回图-11进入“SoundcardSuppor”,声卡选择,图-34DM368主芯片上带有音频功能的模块,直接按TI的设置,图-35返回图-11进入“USBSuppor”,我们把DM368跑的LINUX系统当作HOST来使用,“HIDSupport”是支持鼠标键盘之类的东西,可以选也可以不要;基本上采用TI的默认配置图-36这里选择支持U盘,这个和前面说过的SCSISpport是对应的;图-37返回图-11进
本文标题:DAVINCI DM365-DM368开发攻略――linux-2.6.32的移植
链接地址:https://www.777doc.com/doc-5527796 .html