您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > linux 移植手册
1Linux-2.6.31内核移植手册2010-06-17V1.4手册内容简介:本手册是天祥电子推出的TX-2440A开发板的配套手册之一,全面分析了linux操作系统内核在嵌入式开发板上的移植过程,手册中的部分内容都会在配套的视频教程中(第十五讲,第十六讲)进行讲解。在开始进行移植之前,需要了解linux内核和驱动的相关知识,安装基本的开发工具,搭建好开发环境;建议先看视频教程学习,在具备了一定的能力后再来参考本手册来操作。本手册分为16个部分,第1部分,准备移植,要先掌握这一部分的操作方法,包括(修改代码,配置内核选项,编译内核镜像,下载内核镜像到开发板,启动系统),然后再进入后面的部分。第2、3部分是为挂载文件系统做准备,这里容易出现错误(比如:文件系统不能成功挂载),可以先学习文件系统的相关知识(视频教程第十七讲),自己制作文件系统(参考《文件系统制作手册》),在能成功挂载文件系统后,再进入后面的部分。第4-14部分都是针对开发板上的硬件的驱动移植,还介绍硬件驱动的测试方法。第15部分列出了驱动程序在内核源码中的位置及设备名称,方便大家查阅。第16部分是内核更新的内容,对内核的功能和驱动进行优化。说明:由于个人能力有限,手册中难免会出现一些笔误和不足之处,如果发现问题,请及时提出,目前可以发到QQ群上(103105892111874027),或发到我的博客上(blog.163.com/xgc94418297);在学习过程中遇到的问题,可以联系我们,我们会提供技术支持。本手册中的所有内容目前仅适用于TX2440A开发板,如果将其用在其他的开发板上,出现的一切问题,我们一律不提供技术支持。昀好不要从手册中直接复制代码,因为在编写手册时,有些字符可能会自动变成全角格式,在代码中是不允许有全角字符的,所以有可能会导致一些错误。我建议,昀好是手动编写代码。手册中的内容会不定期的更新,以后还会加入更丰富的内容,更新后会放到FTP服务器供大家下载。希望广大的TX2440A开发板用户能多提出宝贵的意见,我会根据大家的意见及时调整手册中的内容。2010-06-17相广超制作哈尔滨祥鹏科技有限公司网址:电话:0451-875723032内核版本:Linux-2.6.31交叉编译器版本:arm-linux-gcc4.1.2操作系统平台:Linux--RedHat9.0开发板平台:Arm--TX2440A手册中字体颜色的约定:修改的代码用红色字体执行的命令用红色字体,前面加#添加的大段代码用蓝色字体在终端上打印出的信息用紫色字体出现的错误信息用绿色字体说明的文字用红色粗体需要修改的文件加灰色底纹版本信息:2009-11-10V1.0初稿2010-03-06V1.11.调整了第1、3、6部分的内容2.修改了第14部分测试背光驱动的错误2010-3-16V1.22010-4-21V1.3加入了内核更新(第十六章)2010-6-17V1.41.加入了7寸LCD和LOGO的支持(第四章)2.加入了串口2驱动(第十六章)3手册目录:一准备移植......................................................................................................................4二支持NandFlash:.......................................................................................................6三支持yaffs2文件系统..................................................................................................8四LCD驱动的移植..........................................................................................................9五DM9000驱动的移植.................................................................................................14六UDA1341声卡驱动的移植:...................................................................................20七SD卡驱动移植:.......................................................................................................23八RTC驱动移植:........................................................................................................24九触摸屏驱动移植:....................................................................................................25十USB设备驱动移植....................................................................................................26十一USB摄像头驱动移植............................................................................................28十二CMOS摄像头驱动移植.......................................................................................29十三其他字符设备驱动移植........................................................................................30十四LCD背光驱动移植和开机LOGO的制作...........................................................32十五驱动程序在内核源码中的位置及设备名称:....................................................35十六内核更新(2010-4-21).......................................................................................364一准备移植获得内核源码:Linux-2.6.31.tar.bz2(在光盘资料/源码包/kernel源码目录下)也可到官方网站获得昀新版本的内核源码解压源码,进入目录:#tarxjvflinux-2.6.31.bz2#cdlinux-2.6.31修改Makefile:183行:ARCH?=armÅ指定系统硬件架构CROSS_COMPILE?=arm-linux-Å指定交叉编译器修改时钟:修改arch/arm/mach-s3c2440/mach-smdk2440.c163行staticvoid__initsmdk2440_map_io(void){s3c24xx_init_io(smdk2440_iodesc,ARRAY_SIZE(smdk2440_iodesc));s3c24xx_init_clocks(12000000);Å输入时钟为12MHzs3c24xx_init_uarts(smdk2440_uartcfgs,ARRAY_SIZE(smdk2440_uartcfgs));}这个一定要设置对,否则会打印出乱码。修改机器码(根据实际情况,这个要和bootloader的匹配):修改:arch/arm/tools/mach-types379行:s3c2440………………………XXX后面那个数就是机器码配置:#makemenuconfigÅ进入图形化配置界面在配置菜单中选择这一项:“LoadanAlternateConfigurationFile”输入2440的默认配置文件:arch/arm/configs/s3c2410_defconfig说明:这个文件就是S3C24XX系列开发板的板级支持包(BSP)然后选择OK,按回车进入“SystemType”选项单,里面的选项保持默认在“S3C24XXMachine”选项中只配置这几项(其他的选项取消):5S3C2410Machine---[*]SMDK2410/A9M2410S3C2440Machine---[*]SMDK2440[*]SMDK2440withS3C2440cpumoudle配置完后,回到主菜单,选择这一项“SaveanAlternateConfigurationFile”输入要保存的配置文件名称:.config(默认)或自己取名:TX2440A_config退出,编译内核:#makezImage说明:以后移植过程中的配置、编译,都是按这个步骤进行,但是只需要保存一次配置文件,以后就不需要再保存配置文件了,配置完后可以直接退出。编译完后,会在arch/arm/boot下生成zImage内核镜像文件可以修改该目录下的Makefile:在第57行下面添加:@cp–farch/arm/boot/zImagezImage@echo`Kernel:$@isready`这样执行makezImage后,就把生成的zImage拷到内核根目录下如果希望在在执行makedistclean时,也同时把zImage删除,可以修改内核源码目录下Makefile的第1247行,在后面加上:-typef–print|xargsrm–frmzImage把zImage镜像烧进NandFlash跑一下,看是否正常打印出信息如果第一步能正常引导内核,那就开始进行第二步,添加驱动注意,系统启动昀后可能会出现这个错误:Kernelpanic-notsyncing:Attemptedtokillinit!然后出打印出一些很乱的东西。因为用4.X.X版本的交叉编译器使用EABI,但内核默认是不支持EABI编译的,所以编译出的系统会报错,但用3.X.X版本的编译器就不会出现这个问题。解决办法是,配置内核支持EABI编译KernelFeatures---[*]UsetheARMEABItocompilethekernel[*]AllowoldABIbinariestorunwiththiskernel(EXPERIMENTA)6二支持NandFlash:修改:arch/arm/plat-s3c24xx/common-smdk.c文件,在第110行:这里我们要使nandflash同时支持64M,256M或更高容量。staticstructmtd_partitionsmdk_default_nand_part[]={#ifdefined(CONFIG_64M_NAND)[0]={.name=boot,.offset=0,.size=SZ_1M,},[1]={.name=kernel,.offset=SZ_1M+SZ_128K,.size=SZ_4M,},[2]={.name=yaffs2,.offset=SZ_1M+SZ_128K+SZ_4M,.
本文标题:linux 移植手册
链接地址:https://www.777doc.com/doc-5393752 .html