《linux 操作系统的移植及应用》由会员分享,可在线阅读,更多相关《linux 操作系统的移植及应用(68页珍藏版)》请在金锄头文库上搜索。
1、1,linux 操作系统的移植及应用,培训中心 2010,2,主要内容,嵌入式操作系统linux概述建立开发环境linux内核配置与编译linux移植系统引导程序Boot Loaderlinux的文件系统linux内核程序linux应用程序开发,3,操作系统概述,为什么需要操作系统 早期的8位/16位系统中大多没有操作系统 进入32位时代- 系统中的软件越来越复杂,完全驾奴的能力不够- 维护成本太高、系统升级困难使用嵌入式操作系统- 稳定性好、性能高、功能完善- 遵循标准,便于移植、升级,4,嵌入式操作系统的特点,提供内核管理 多任务管理 外围资源管理 要更稳定 可裁剪、可配置 实时性需求 针
2、对应用的优化与功能增强,5,典型的嵌入式操作系统,uC/OS-II操作系统 简单高效、免费、支持64个任务、支持多种CPU、无设备驱动程序、缺乏足够的应用模块。 eCOS操作系统 免费使用、支持多种CPU、 使用GNU工具链开发、有完备的设备驱动程序和应用模块、支持 POSIX标准、需要较多的系统资源。 VxWorks嵌入式实时操作系统 销售额最大,价格昂贵;通常只提供二进制码内核;支持多种CPU;完整的开发工具和测试 工具;完备的设备驱动和应用模块;支持POSIX标准;性能好,功能齐全。 WinCE操作系统 Microsoft出品、需购买许可、支持多线程、有优先级、虚拟内存、提供类似PC机的
3、操作系统 界面等。 Linux操作系统 类似UNIX;免费;源代码开放;符合POSIX标准;支持TCP/IP;支持绝大多数32位和64位 CPU;抢先式多任务处理;内存保护;虚拟内存等。 ,6,主要内容,嵌入式操作系统 linux概述建立开发环境linux内核配置与编译linux移植系统引导程序Boot Loaderlinux的文件系统linux内核程序linux应用程序开发,7,Linux操作系统,最初设计为桌面系统,现广泛应用于服务器。Linux的特点:支持多种体系结构,支持大量外设,网络功能完善开放源代码,软件资源丰富,内核稳定而高效,大小及功能均可定制。满足嵌入式操作系统的要求,目前在
4、嵌入式领域高速发展,催生了一些嵌入式Linux,如uClinux、RTLinux,1969年,Bell实验室,发明UNIX 1991年,芬兰Linus Torvalds,设计了Linux,8,Linux内核版本号约定,x.y.zz- x:主版本号- y:次版本号,奇数=开发版,偶数=稳定版- zz:子版本号,当前版本的修订次数例如:2.4.18表示对核心2.4版本的第18次修订,该版本为可以使用的稳定版本。,9,linux应用特征,广泛的处理器结构和硬件平台支持程序代码的质量与可靠度高 提供广泛的通信协议和软件标准支持丰富的应用软件和广泛的社群支持低廉的成本开源软件可靠的系统安全,10,lin
5、ux设计特征,linux的内存管理linux的多进程处理linux针对实时性的解决方案执行程序的格式文件系统标准C函数库,11,linux系统组成,一个基于linux 的完整的嵌入式系统由三个部分组成:系统引导程序、linux 操作系统内核和文件系统。系统引导程序通常称作Boot Loader,平台上执行的第一段代码,类似BIOS、BSP。 内核比较精简,压缩后一般小于1M。 文件系统主要存储用户应用程序,同时包括系统配置文件、系统程序和必需的驱动程序,根据用户所加入应用程序的大小,文件系统所占空间也存在比较大的差异。 采用分区存放,12,linux内核结构,Linux内核与大部分UNIX内核
6、一样是单内核体系结构的,即它是由几个逻辑功能上不同的部分组合而成的大程序。 单内核结构可以动态加载和卸载模块(module),能够根据需要定制内核映像的尺寸; 具有很大灵活性,不需要重新编译内核且引导就能检验新的内核组件,方便用户构筑自己的个人内核。 Linux内核由5个主要的子系统组成,分别为:进程调度(SCHED)、内存管理(MM)、虚拟文件系统(Virtul File System,VFS)、网络接口(NET)和进程间通信(IPC)。,13,内核结构示意图,14,linux文件目录结构,linux 发布版文件目录结构和功能如下图所示:,15,主要内容,嵌入式操作系统linux概述 建立开
7、发环境编译运行linuxlinux移植系统引导程序Boot Loaderlinux的文件系统linux内核程序linux应用程序开发,16,建立交叉编译环境,宿主机,目标机,Linux,Windows-Cygwin,安装环境,Linux环境下GNU工具(编译、链接),安装工具,17,Cygwin介绍,Cygwin软件是一个运行于windows下的Linux模拟环境。它包括: 动态链接库Cygwin.dll 一组Linux工具集Cygwin提供的一组功能强大的工具,包括大多数GNU软件(如gcc,gdb,xfree86,bash,tetex,opengl,perl,python等),可以帮助开发
8、人员将应用程序从Linux移植到Windows平台。Cygwin对于学习掌握Linux操作环境,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。,18,Cygwin的安装和设置(一),下载网址:http:/ 运行Cygwin安装程序setup.exe,然后选择“Install from Local Directory“,选择“下一步”,如图所示。,19,Cygwin的安装和设置(二),选择Cygwin的安装目录。选择DOS文本文件类型(DOS与UNIX文本类型的区别在于前者的换行为ASCLL的0x0D和0x0A组合,后者是0x0D)。选择“下一
9、步”,如图所示。,NTFS,20,Cygwin的安装和设置(三),选择安装项目。点击在安装项目左边的“default”,可以调整该项目的安装设置。开发Linux必须选择全部安装以下项目:Admin - 包括启动服务cygrunsrv等工具,NFS启动必备Archive - 压缩解压工具集Base - 基本的Linux工具集Devel - 开发工具集,包括gcc、make等开发工具Libs - 函数库Net - 网络工具集Shells - 常用Shell工具集Utils - 包括bzip2等实用工具集,21,交叉编译链接工具介绍(一),编译、汇编、链接工具 :arm-linux-g+、arm-l
10、inux-c+ C+编译器。arm-linux-c+filt C+语言支持函数重载,可以使用相同的函数名称和不同的函数参数,连接器使用本工具来过滤 C+和Java 符号,防止重载函数冲突。arm-linux-gcc 编译器。 arm-linux-as 汇编器。arm-linux-ld 连接器。arm-linux-protoize、arm-linux-unprotoize gcc的可选部分,protoize在程序中增加函数原型,转换程序符合标准C规范。Unprotoize则清除所找到的的函数原型的参数。,22,交叉编译链接工具介绍(二),实用工具集 :arm-linux-addr2line ar
11、m-linux-ararm-linux-nm arm-linux-objcopy arm-linux-objdump arm-linux-ranlib arm-linux-readelf,23,交叉编译链接工具介绍(三),文件系统工具:cramfsck CRAMFS文件系统的释放工具。mkcramfs CRAMFS文件系统的生成工具。,24,将Linux系统下的工具链安装解压包:cross-armtools-linux-edukit2410.tar.bz2在控制台使用以下命令安装:将cross-armtools-linux-edukit2410.tar.bz2拷贝到/tmp/目录下。cd /t
12、mptar -P -xvjf cross-armtools-linux-edukit2410.tar.bz2 source armtools-linux/cross-install.sh 软件自动将工具链安装到/usr/arm-linux目录。,开发工具链安装,25,主要内容,嵌入式操作系统linux概述建立开发环境 linux内核配置与编译linux移植系统引导程序Boot Loaderlinux的文件系统linux内核程序调试linux应用程序开发,26,安装linux源代码,linux官方网站linux源代码最新版本的下载地址为: http:/www.arm.linux.org.uk/d
13、eveloper/ 源代码包名称为linux-2.4.18-rmk7-pxa1-mz5.tar.bz2 。解压linux源代码包,执行命令: cd /usr/local/src/ tar -xvjf linux-2.4.18-rmk7-pxa1-mz5.tar.bz2,27,配置linux内核,linux提供三个不同的命令进行 linux的配置,效果完全一样。make menuconfigmake configmake xconfig一般我们选择make xconfig,它提供一个图形界面,比较直观。,28,内核配置选项,内核编译以前首先应该对内核进行配置,裁剪不必要的内容,在完全实现硬件功能
14、的前提下尽量节约空间。,29,编译linux内核,cd /usr/local/src/kernel make dep -搜索linux编译输出与源代码之间的依赖关系,并以此生成依赖文件 make clean -清除以前构造内核时生成的所有目标文件、模块文件和临时文件。 make zImage -编译Linux内核,生成压缩的内核映像文件,30,运行linux,通过编译最终在arch/arm/boot目录下生成1个文件: zImage linux 内核2.4.x的压缩方式可执行映像文件。 烧写映像文件:通过Flash烧写工具,分别将Bootloader(启动)、zImage以及root.cram
15、fs三个映像文件固化到Flash中。配置超级终端:启动PC上超级终端软件并设置超级终端为115200 波特率,无校验, 1 位停止位,无数据流控制。 运行linux:复位EduKit4 2410开发板,通过超级终端观察linux的启动运行。,31,主要内容,嵌入式操作系统linux概述建立开发环境编译运行linux linux移植系统引导程序Boot Loaderlinux的文件系统linux内核程序linux应用程序开发,32,linux的移植,处理器结构层次移植,33,处理器结构层次移植(1),处理器结构的源文件在kernel/arch目录下; 包含所有已支持的处理器,以子目录形式提供,如
16、arm、armnommu、m68k、mips64等; linux使用的是arm; 处理器结构文件目录主要由以下这些子目录组成: kernel - 内核源代码 mm - 内存管理源代码 lib - 处理器特定的内部库函数 boot - 包含压缩内核的代码,也是内核文件最后编译生成的地方 tools - 包含自动产生文件的脚本,34,处理器结构层次移植(2),linux内核代码大部分独立于处理器与其体系结构,但其最底层的代码是由各处理器结构特定的。 中断处理上下文、内存映射的维护、任务上下文和初始化过程等,这部分代码都在kernel/arch/目录下; 处理器结构的头文件在kernel/include目录下; 设备驱动文件通常是在kernel/drivers目录下; 分区类型和网络相关的部分则分别在kernel/fs和kernel/net目录下; 对一个新型的处理器结构,在移植中可参照其他的处理器结构,模仿与其相似的处理器体系结构程序编写,在某个处理器结构目录下修改文件使其达到待移植的处理器结构的要求。,