04_Linux

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单击此处编辑母版副标题样式单击此处编辑母版标题样式Linux内核移植黄倩hq_uptech@126.com博创科技嵌入互动嵌入式Linux特点Tiny一个功能完备的linux内核要求大约1MB的内存Linux系统甚至可以仅用256KBROM和512KBRAM进行工作OpenSource博创科技嵌入互动嵌入式Linux应用博创科技嵌入互动Linux介绍桌面版本:面向PC用户的桌面发行版本,常见的如redhat、fedora、debian、Ubuntu、SUSE、红旗等。Linux内核内核是所有linux系统的中心软件组件。嵌入式领域所说的linux,一般是指linux内核。移植也是指的是移植linux内核到目标平台。博创科技嵌入互动Linux内核的版本号2.6.24其中,2是主版本号,6是次版本号,24是修订版本号。如果次版本号是偶数,说明是稳定版本。如果次版本号是奇数,则是开发版本。我们一般使用稳定版本。博创科技嵌入互动Linux操作系统的发展博创科技嵌入互动Linux之父:李纳斯·托沃兹(LinusTorvalds)博创科技嵌入互动Linux的起源From:torvalds@klaava.Helsinki.FI(LinusBenedictTorvalds)Newsgroups:comp.os.minixSubject:Whatwouldyouliketoseemostinminix?Summary:smallpollformynewoperatingsystemMessage-ID:Date:25Aug9120:57:08GMTOrganization:UniversityofHelsinkiHelloeverybodyoutthereusingminix-Idoinga(free)operatingsystem(justahobby,won'tbebigandprofessionallikegnu)for386(486)ATclones.ThishasbeenbrewingsinceApril,andisstartingtogetready.Ilikeanyfeedbackonthingspeoplelike/dislikeinminix,asmyOSresemblespracticalreasonsamongotherthings.Ihavecurrentlyportedbash(1.08)andgcc(1.40),andthingsseemtowork.ThisimpliesthatI'llgetsomethingpracticalwithinafewmonths,andIliketoknowwhatfeathersmostpeoplewouldwant.Anysuggestionsarewelcome,butIwon'tpromiseIlimplementthem:-)Linus(torvalds@kruuna.helsinki.fi)Ps.Yes-it'sfreeofanyminixcode,andithasamulti-threadedfs.ItisNOTportable(uses386taskswitchingetc).anditprobablyneverwillsupportanythingotherthanAT-hard-disks,asthat'sallIhave:-(博创科技嵌入互动Linux基本体系结构博创科技嵌入互动Linux内核结构博创科技嵌入互动Linux内核源代码目录结构●arch包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如arm、avr32、blackfin、mips等。●block块设备驱动程序的IO调度。●crypto常用的加密和离散算法,还有一些压缩和CRC校验算法博创科技嵌入互动Linux内核源代码目录结构●Documentation内核的说明文档。●drivers设备驱动程序,其下细分为不同种类的设备。如block、char、mtd、net、usb、video等等。●fs内核支持的文件系统的实现,如ext2、ext3、cramfs、jffs2、nfs等。博创科技嵌入互动Linux内核源代码目录结构●include头文件。与系统相关的头文件放在include/linux下,与ARM体系结构相关的头文件放在include/asm-arm下。●init内核初始化代码。●ipc进程间通信代码。博创科技嵌入互动Linux内核源代码目录结构●kernel内核的核心代码,包括进程调度、定时器等。和arm平台相关的核心代码在arch/arm/kernel目录下。●lib库文件代码●mm内存管理代码,和arm平台相关的内核管理代码在arch/arm/mm目录下。博创科技嵌入互动Linux内核源代码目录结构●net网络相关的代码,实现了各种常见的网络协议。●scripts包含用于配置内核的各种脚本文件。只在配置时是有意义的。●sound音频设备驱动的通用代码和硬件驱动代码都在这个文件件下面。博创科技嵌入互动Linux内核的配置(1/6).config文件这是linux编译时所依赖的文件。我们在配置内核时所做的任何修改,最终都会在这个文件中体现出来。它是Makefile对内核进行处理的重要依据。一般来说,内核提供了芯片公司demo板的.config文件,我们一般找一个近似的进行修改。如S3C2410平台上可以选择s3c2410_deconfig这个文件。博创科技嵌入互动Linux内核的配置(2/6)三种配置方式●makeconfig基于文本对话的配置方式,比较细致,但是浪费时间。对专业的内核开发人员比较合适。●makexconfig基于图形界面的配置方式。非常直观,但是需要特殊的软件支持,一般不推荐。●makemenuconfig推荐的内核配置方式,采用目录的方式,直观,容易使用。博创科技嵌入互动Linux内核的配置(3/6)关于Kconfig在进行makemenuconfig时,目录的生成依赖于Kconfig文件。一般来说,每个源代码目录下都有一个Kconfig文件。configDM9000tristateDM9000supportdependsonARM||BLACKFIN||MIPSselectCRC32selectMII---help---SupportforDM9000chipset.Tocompilethisdriverasamodule,chooseMhere.Themodulewillbecalleddm9000.博创科技嵌入互动Linux内核的配置(4/6)Kconfig对.config文件的影响:……………………………………………CONFIG_DM9000=y……………………………………………makemenuconfig对内核配置所做的修改最终反应在.config文件中。如上所示,在.config文件中CONFIG_DM9000=y被定义为y。博创科技嵌入互动Linux内核的配置(5/6)Kconfig对Makefile的影响:………………………………………………………………..obj-$(CONFIG_DM9000)+=dm9000.o…………………………………………………………………CONFIG_DM9000是tristate类型,有三个可能取值:y:编译进内核m:编译成模块n:不进行编译若是bool类型,则只有两种可能,y或者n。博创科技嵌入互动Linux内核的配置(6/6)关于MakefileLinux内核源码的每个目录下都有一个Makefile,由该Makefile对源代码的编译、链接等操作进行控制。编译完成后,每个源代码目录下都会生成一个名叫built-in.o的文件。这个文件由源代码目录下的所以源文件编译后的目标文件链接而成;而不同的built-in.o又被上层目录中的Makefile链接成更大的builtin.o,直到最后链接成为一个内核vmlinux.o。博创科技嵌入互动Linux内核移植——交叉编译关于交叉编译由于我们的目标平台是ARM,而在x86平台上进行开发,故必须进行交叉编译。修改内核的顶层Makefile:…………………………………………………..ARCH?=armCROSS_COMPILE?=arm-linux-……………………………………………………表示我们的目标平台是ARM构架的,而使用的交叉编译器的前缀是arm-linux博创科技嵌入互动Linux内核移植——.config获得.config文件前面提到,.config是内核编译时所依赖的重要文件,与具体的硬件构架和开发板类型相关。我们选择内核提供的s3c2410_defconfig进行修改。cparch/arm/configs/s3c2410_defconfig.config博创科技嵌入互动Linux内核移植——demo板选择选择相近的demo板三星公司针对s3c2410芯片推出了smdk2410demo板,Linux内核对该开发板的支持非常完善。为了移植方便,并最大可能地实现代码重用,我们选择该开发板作为原始目标板,在它的基础上进行必要的修改。在include/asm-arm/mach-types.h中#defineMACH_TYPE_SMDK2410193与我们的Bootloader中使用的machineID是一致的。博创科技嵌入互动Linux内核移植——NAND经典2410的NANDFlash经典2410平台上配置一片K9F2808UNANDFlash,容量大小为64M。为了使内核能正常使用NANDFlash,需要在内核中正确地配置NANDFlash驱动支持。博创科技嵌入互动Linux内核移植——NAND添加NANDFlash支持在arch/arm/plat-s3c24xx/common-smdk.c中:staticstructmtd_partitionsmdk_default_nand_part[]={[0]={.name=Bootloader,.size=0x80000,//512KB.offset=0,},[1]={.name=LinuxKernel,.offset=0x80000,.size=0x200000,//2MB},[2]={.name=RootFileSystem,.offset=0x280000,.size=0x400000,//4MB},[3]={.name=UserSpace,.offset=0x680000,.size=0x3980000,//57.5MB},};博创科技嵌入互动Linux内核移植——NAND将NAND驱动加入初始化列表structplatform_devices3c_device_nand={.name=s3c2410-nand,.id=-1,.num_resources=ARRAY_SIZE(s3c_nand_resource),.resource=s3c_nand_resource,};staticstructplatform_device__initdata*smdk_devs[]={&s3c_device_nand,};void__initsmdk_machine_init(void){s3c_device_nand.dev.platform_data=&smdk_nand_info;platform_add_devices(smdk_devs,ARRAY_SIZE(smdk_devs));s3c2410_pm_init();}博创科技嵌入互动Linux内核移植——LCD添加LCD支持经典2410平台上配置了一个640*480的lcd,需要在内核中对LCD进行正确的配置,才能使用LCD。配置LCD需要涉及到2410的lcd控制器、IO引脚功能配置,根据LCD的具体参数对lcd控制器进行配置。博创科技嵌入互动Linux内核移植——LCD填充display结构体:staticstructs3c2410fb

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功