《嵌入式LINUX系统的构建》PDF课件.pdf

上传人:asd****56 文档编号:70322688 上传时间:2023-01-19 格式:PDF 页数:42 大小:1.26MB
返回 下载 相关 举报
《嵌入式LINUX系统的构建》PDF课件.pdf_第1页
第1页 / 共42页
《嵌入式LINUX系统的构建》PDF课件.pdf_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《《嵌入式LINUX系统的构建》PDF课件.pdf》由会员分享,可在线阅读,更多相关《《嵌入式LINUX系统的构建》PDF课件.pdf(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。什么是嵌入式系统什么是嵌入式系统嵌入式L I N U X 系统的构建P D F 课件机顶盒机顶盒家庭网关家庭网关互联网互联网无线无线手机手机PDAPDA汽车汽车游戏游戏视频视频嵌入式系统的广泛应用嵌入式系统的广泛应用嵌入式L I N U X 系统的构建P D F 课件嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。技术密集、资金密集、高度分散、不断创新的知识集成系统。微机微机原理原理数字数字电路电路程序程序设计设计接

2、口接口技术技术电路电路原理原理编译编译原理原理嵌入式系统特点嵌入式系统特点嵌入式L I N U X 系统的构建P D F 课件嵌入式系统面向特定应用,完成单个或一组联系紧密的功能嵌入式系统产品功能特定,较通用计算机系统封闭,具有较长的生命周期低功耗、体积小、集成度高,有限的存储器嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣嵌入式系统本身不具备自主开发能力需要配套开发工具和环境一般有性能和实时性要求嵌入式系统特点嵌入式系统特点实时系统特点指规定的时限内必须完成规定的操作并非指速度快慢硬实时:超过时限完成任务会导致导致灾难性后果软实时:超过时限完成对任务会带来系统性能的严重下降是否真正需要实

3、时?实时系统特点实时系统特点精简、健壮的内核友好、漂亮的GUI安全、快速的网络通讯接口功耗、性能的矛盾与平衡轻巧、分布式的数据库相关技术嵌入式技术的紧迫需求嵌入式技术的紧迫需求系统需要运行系统需要运行多个任务多个任务系统需要有直系统需要有直观的用户界面观的用户界面系统需要有网系统需要有网络功能络功能系统需要用到系统需要用到微型数据库管微型数据库管理系统理系统系统需要不断系统需要不断地进行升级和地进行升级和二次开发二次开发需要“嵌入式操作系统”?需要“嵌入式操作系统”?嵌入式主控芯片百家争鸣嵌入式主控芯片百家争鸣微内核(Microkernel kernel)MicroC/OS-IIVxWorks

4、ThreadxNucleusFreeRTOS宏内核(Monolithic kernel)Linux/ucLinuxWindows CE Symbian典型嵌入式操作系统典型嵌入式操作系统嵌入式开发与嵌入式开发与PC开发的比较开发的比较PC开发:本地开发本地运行嵌入式开发:PC编译,目标板运行主机(X86)目标板(一般非X86)Self-Host/Self-TargetCross-Target Development网络串口目标机目标机软件软件宿主机宿主机X X开发工具开发工具 X X源代码源代码 调试器调试器 操作系统操作系统 可执行程序可执行程序X X典型嵌入式开发典型嵌入式开发开发主机Re

5、dHat,Ubuntu,Windows(不推荐)典型交叉编译工具ELDKCodeSourcery http:/ toolsEclipseARM LINUX的编译工具的编译工具预备知识BootloaderUboot,RedBoot,VIVI等内核zImage/uImage内核加载地址和入口点(uImage only)内核压缩镜像vmlinuz 内核解压缩代码Ramfs根文件系统可选减少主机文件系统依赖,适合加速开发前期网络协议NFS/DHCP/TFTPARM LINUX系统引导过程系统引导过程Bootloader初始化基本运行环境加载内核到RAM中跳转到内核解压缩代码其他辅助功能ARM LINU

6、X系统引导过程系统引导过程内核解压缩回收bootloader使用资源解压缩Vmlinuz解压缩可选的RAMDISK将控制权交给内核ARM LINUX系统引导过程系统引导过程内核执行内核解压缩代码资源回收挂载根文件系统开发时用NFS(or ramdisk)产品用cramfs/jffs2等执行init执行应用程序ARM LINUX系统引导过程系统引导过程LINUX组成结构图组成结构图ARM LINUX 2.6移植移植步骤准备开发板和相关配件要清楚自己的开发板的配置(有那些外围设备等)下载内核源码、取得相关工具软件Kernel,gcc,jtag选定参考板选择一个内核中已经支持,且和自己的开发部相似的

7、参考板为原型,进修修改修改开发板相关代码完成BSP的修改移植如:如:arch/arm/mach-s3c2410/目录目录添加驱动先添加基本驱动代码(如:网卡)编译、调试、下载内核板级支持相关代码移植相关目录和代码arch/arm/mach-s3c2410arch/arm/plat-s3c24xxarch/arm/tools/mach-types arch/arm/Kconfigarch/arm/Makefilearch/arm/boot/compressedInclude/asm-arm/arch-s3c2410Makefile添加基本驱动闪存驱动(MTD NAND)串口用来打印信息可以在内核

8、启动之前打印信息内核启动后可以通过console打印信息网络支持可以使得开发调试更为方便如挂载网络文件系统nfs移植样例体系结构:ARM920T处理器:Samsung S3C2410开发板:uCdragon FS2410Linux内核版本:2.6.22移植相关相关代码和目录arch/arm/Kconfig arch/arm/Makefilearch/arm/boot/Makefilearch/arm/mach-s3c2410/*arch/arm/plat-s3c24xx/*include/asm-arm/arch-s3c2410/*arch/arm/tools/mach-typesarch/a

9、rm/boot/compressed/head.S arch/arm/boot/compressed/Makefile MakefileSmdk2410基本信息定义arch/arm/mach-s3c2410/mach-smdk2410.c定义开发板描述信息MACHINE_START(SMDK2410,SMDK2410)/*Maintainer:Jonas Dietsche*/.phys_io=S3C2410_PA_UART,.io_pg_offst=(u32)S3C24XX_VA_UART)18)&0 xfffc,.boot_params=S3C2410_SDRAM_PA+0 x100,.ma

10、p_io=smdk2410_map_io,.init_irq=s3c24xx_init_irq,.init_machine=smdk2410_init,.timer=&s3c24xx_timer,MACHINE_ENDMACHINE_START 定义include/asm-arm/mach/arch.hstruct machine_desc“_mach_desc_#_type”is definedSmdk2410静态io空间映射(1)arch/arm/mach-s3c2410/mach-smdk2410.cstatic struct map_desc smdk2410_iodesc _init

11、data=/*nothing here yet*/;static void _init smdk2410_map_io(void)s3c24xx_init_io(smdk2410_iodesc,ARRAY_SIZE(smdk2410_iodesc);s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs,ARRAY_SIZE(smdk2410_uartcfgs);Smdk2410静态io空间映射(2)arch/arm/mach-s3c2410/s3c2410.cstatic struct map_desc s3c2410_iode

12、sc _initdata=IODESC_ENT(CLKPWR),IODESC_ENT(TIMER),IODESC_ENT(WATCHDOG),;void _init s3c2410_map_io(struct map_desc*mach_desc,int mach_size)/*register our io-tables*/iotable_init(s3c2410_iodesc,ARRAY_SIZE(s3c2410_iodesc);iotable_init(mach_desc,mach_size);Smdk2410静态io空间映射(3)arch/arm/plat-s3c24xx/cpu.cs

13、tatic struct map_desc s3c_iodesc _initdata=IODESC_ENT(GPIO),IODESC_ENT(IRQ),IODESC_ENT(MEMCTRL),IODESC_ENT(UART);void _init s3c24xx_init_io(struct map_desc*mach_desc,int size).Nand 平台设备定义arch/arm/plat-s3c24xx/devs.cstatic struct resource s3c_nand_resource=0=.start=S3C2410_PA_NAND,.end =S3C2410_PA_NA

14、ND+S3C24XX_SZ_NAND-1,.flags=IORESOURCE_MEM,;struct platform_device s3c_device_nand=.name=s3c2410-nand,.id=-1,.num_resources=ARRAY_SIZE(s3c_nand_resource),.resource=s3c_nand_resource,;EXPORT_SYMBOL(s3c_device_nand);include/linux/platform_device.h#ifndef _PLATFORM_DEVICE_H_#ifndef _PLATFORM_DEVICE_H_#

15、define _PLATFORM_DEVICE_H_#define _PLATFORM_DEVICE_H_#include#include struct platform_device struct platform_device const charconst char*name;*name;u32u32id;id;struct devicestruct device dev;dev;u32u32num_resources;num_resources;struct resourcestruct resource*resource;*resource;platform_device结构Nand

16、 flash 分区定义(1)arch/arm/plat-s3c24xx/common-smdk.cstatic struct mtd_partition smdk_default_nand_part=0=.name=Boot Agent,.size=SZ_16K,.offset=0,1=.name=S3C2410 flash partition 1,.offset=0,.size=SZ_2M,2=.name=S3C2410 flash partition 2,.offset=SZ_4M,.size=SZ_4M,7=.name=S3C2410 flash partition 7,.offset=

17、SZ_1M*48,.size=SZ_16M,;Nand flash 分区定义(2)static struct s3c2410_nand_set smdk_nand_sets=0=.name=NAND,.nr_chips=1,.nr_partitions=ARRAY_SIZE(smdk_default_nand_part),.partitions=smdk_default_nand_part,;/*choose a set of timings which should suit most 512Mbit*chips and beyond.*/static struct s3c2410_plat

18、form_nand smdk_nand_info=.tacls=20,.twrph0=60,.twrph1=20,.nr_sets=ARRAY_SIZE(smdk_nand_sets),.sets=smdk_nand_sets,;archarmplat-s3c24xxcommon-smdk.cstatic struct platform_device _initdata*smdk_devs=&s3c_device_nand,&smdk_led4,&smdk_led5,&smdk_led6,&smdk_led7,;平台相关代码分析-common-smdk2410.cstatic struct s

19、3c24xx_board smdk2410_board _initdata=.devices =smdk2410_devices,.devices_count=ARRAY_SIZE(smdk2410_devices);平台设备注册arch/arm/plat-s3c24xx/common-smdk.cvoid _init smdk_machine_init(void)/*Configure the LEDs(even if we have no LED support)*/s3c2410_gpio_cfgpin(S3C2410_GPF4,S3C2410_GPF4_OUTP);s3c2410_gp

20、io_cfgpin(S3C2410_GPF5,S3C2410_GPF5_OUTP);s3c2410_gpio_cfgpin(S3C2410_GPF6,S3C2410_GPF6_OUTP);s3c2410_gpio_cfgpin(S3C2410_GPF7,S3C2410_GPF7_OUTP);s3c2410_gpio_setpin(S3C2410_GPF4,1);s3c2410_gpio_setpin(S3C2410_GPF5,1);s3c2410_gpio_setpin(S3C2410_GPF6,1);s3c2410_gpio_setpin(S3C2410_GPF7,1);if(machine

21、_is_smdk2443()smdk_nand_info.twrph0=50;s3c_device_nand.dev.platform_data=&smdk_nand_info;platform_add_devices(smdk_devs,ARRAY_SIZE(smdk_devs);s3c2410_pm_init();Boot options Default kernel command string:console=ttySAC0,115200 noinitrd root=/dev/nfs rw ip=bootp另外一个:console=ttyS0,115200=/dev/mtdblock/

22、2 rw init=/linuxrc ip=192.168.0.118:192.168.0.99:192.168.0.1:255.255.255.0:farsight:eth0:off display=dh240内核启动参数修改Makefile(1)顶层MakefileMakefileARCH=armCROSS_COMPILER=arm-linux-修改Makefile(2)arch/arm/Makefilemachine-$(CONFIG_ARCH_S3C2410):=s3c2410ifneq($(machine-y),)MACHINE :=arch/arm/mach-$(machine-y

23、)/elseMACHINE :=Endiftextofs-y:=0 x00008000TEXT_OFFSET:=$(textofs-y)arch/arm/mach-s3c2410/Makefile.bootzreladdr-y:=0 x30008000params_phys-y:=0 x30000100arch/arm/boot/Makefile ZRELADDR :=$(zreladdr-y)PARAMS_PHYS:=$(params_phys-y)INITRD_PHYS:=$(initrd_phys-y)export ZRELADDR INITRD_PHYS PARAMS_PHYS修改Ma

24、kefile(3)arch/arm/boot/compressed/Makefileifeq($(CONFIG_ZBOOT_ROM),y)ZTEXTADDR:=$(CONFIG_ZBOOT_ROM_TEXT)ZBSSADDR:=$(CONFIG_ZBOOT_ROM_BSS)elseZTEXTADDR:=0ZBSSADDR:=ALIGN(4)endififneq($(INITRD_PHYS),)LDFLAGS_vmlinux+=-defsym initrd_phys=$(INITRD_PHYS)endififneq($(PARAMS_PHYS),)LDFLAGS_vmlinux+=-defsym

25、 params_phys=$(PARAMS_PHYS)endifInclude/asm-arm/memory.h#ifndef PAGE_OFFSET#define PAGE_OFFSETUL(0 xc0000000)#endif关于地址的定义参考Documentation/arm/Porting配置、编译make menuconfig make zImage(or make uImage)make moudles文件系统Linux严重依赖文件系统设备,数据,视频等系统所使用的存储设备决定文件系统的大小和类型为了高可靠性,使用日志文件系统在事件失败时候自动执行文件recovery文件系统(1)

26、文件系统支持(只列出部分特性)CramFSA compressed,read-only file systemFile sizes are limited to less than 16MB,and the maximum file system size is a little over 256MB.Useful for root file systemsApplications and libraries do not change at run timeTypically,better compression and faster performance than you see fro

27、m JFFS2SquashFS A compressed,read-only file systemBetter compression than cramfsBetter runtime performance文件系统(2)文件系统支持(只列出部分特性)JFFS/JFFS2A journaling file system that places itself directly on flash chips with the disk emulationAutomatically performs wear-leveling and garbage collectionThe file sys

28、tem is compressed allowing for more storage in the same amount of flashYet Another Flash File System(YAFFS2)Designed and optimized for NAND Flash chipsLarger Flash sizes and faster erase and write processesJournaling support that automatically provides automatic wear-leveling and power failure recovery更多细节请参考华清远见的“嵌入式系统班”讲义嵌入式Linux开发环境构建(应用层)嵌入式Linux进程及进程间通讯开发嵌入式Linux下的网络开发嵌入式GUI与数据库开发嵌入式Linux应用开发班嵌入式Linux开发环境构建(系统层)开发Linux系统引导程序(bootloader)配置编译Linux内核移植Linux内核源码调试Linux内核方法集成部署Linux系统(rootfs)嵌入式Linux系统开发班ThanksThanks!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁