第八章 uclinux及应用开发ok_第1页
第八章 uclinux及应用开发ok_第2页
第八章 uclinux及应用开发ok_第3页
第八章 uclinux及应用开发ok_第4页
第八章 uclinux及应用开发ok_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章第八章 uclinux及应用开发及应用开发主要内容8.18.1linuxlinux介绍介绍8.28.2ClinuxClinux简介简介8.3 8.3 ClinuxClinux中的应用程序开发中的应用程序开发8.48.4如何如何构造嵌入式构造嵌入式linuxlinux系统系统 8.5 8.5 实验理论部分实验理论部分 8.1linux介绍8.1.1 linux8.1.1 linux简介简介 8.1.2 linux8.1.2 linux特点特点 8.1.3 linux8.1.3 linux作为嵌入式操作系统的优点作为嵌入式操作系统的优点 8.1.4 8.1.4 嵌入式嵌入式linuxlinu

2、x的版本的版本 主要内容8.1.18.1.1简介简介Linux是个和Unix相似、以内核为基础的、完全内存保护、多任务多进程的操作系统。Linux最初是在1991年由一名芬兰学生Linus Torvalds开发的,至今不过14个年头,它是一个年轻的操作系统,最初开发的Linux不成熟、性能较低,但是,由于Linux具有开放性,任何人只要遵守GNU组织的GPL(GNU Public License)标准,都可对其源码进行修改。所以Linux在短短的时间内就成了一个稳定、成熟的操作系统。 8.1.2 linux8.1.2 linux特点特点1.符合POSIX 1003.1标准 POSIX 1003

3、.1标准定义了一个最小的Unix操作系统接口,只有符合这一标准,才可以运行Unix程序。由于Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX 1003.1标准作为实现目标,Linux完全支持POSIX 1003.1标准。另外,Linux还增加了部分System V和BSD的系统接口使得Unix System V和BSD上的程序能直接在 Linux上运行,从而使Linux成为一个完善的Unix程序开发系统。 linuxlinux特点特点2. 支持多用户访问和多任务编程 Linux是一个真正的多用户、多任务操作系统,它允许多个用户同时访问系统且不会造成用户之间的相互干扰。而且,每

4、一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。3. 采用页式存储管理 与大多数操作系统一样,Linux支持页式存储管理。它能使Linux更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。 linuxlinux特点特点4. 支持动态链接 用户程序的执行往往离不开标准库的支持,运行程序前,需要将标准库与程序链接好。按照链接方式的不同有静态与动态两种。一般的系统往往采用静态链接方式,即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储空间的情况;Linux支持动态链接方式,当运行时才进行库链接,如果所需要的

5、库已被其它进程装入内存,则不必再装入,否则才从硬盘中将库调入。这样能保证内存中的库程序代码是唯一的,也节省了内存,提高了程序的运行效率。 linuxlinux特点特点5. 支持多种文件系统 Linux能支持多种文件系统。常见的有:EXT、EXT2、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、JFFS。Linux最常用的文件系统是EXT2/3,它是EXT文件的改进版本。6. 支持TCP/IP、SLIP和PPP 在Linux中,用户可以使用所有的网络服务。 8.1.3linux8.1.3linux作为嵌入式操作系统的优点作为嵌入式操

6、作系统的优点1. 可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对受成本、时间限制的研究与开发项目是很有吸引力的。可以在标准平台上开发然后移植到具体的硬件上,加快了软件与硬件的开发过程并降低了开发成本。2. Linux可以随意地配置而不需要任何的许可证或商家的合作关系。3. 它是免费的,源代码可以得到。这是最吸引人的。毫无疑问,这会节省大量的开发 费用。linuxlinux作为嵌入式操作系统的优点作为嵌入式操作系统的优点4. 它本身内置网络支持,具有公认的强大的网络功能。5. Linux的高度模块化使添加部件非常容易。6. Linux在台式机上的成功,使大家看到了linux在嵌入

7、式系统中的辉煌前景。8.1.48.1.4嵌入式嵌入式linux的版本的版本 Linux应用于嵌入式领域虽然时间不长,但已形成了许多版本,按照其实际应用的场合及特殊的功能需求,基本上可以分为以下3类:1. 将Linux改进以满足实时要求的实时操作系统,应用于一些关键的控制场合,如RTLinux, Hard Hat Linux。2. 尽可能保留Linux的强大功能,尽可能地减少其体积,以满足许多嵌入式系统对体积的要求,如Clinux。3. 针对特定嵌入式领域采用的整合方案,如Lineo,TimeSys,合肥华恒等 8.2Clinux简介简介 8.2.1Clinux特色特色 8.2.2Clinux的

8、设计特征的设计特征 主要内容 Clinux是保留Linux的强大功能,但体积大大减少,是主要针对没有MMU的微处理器开发的一个嵌入式Linux版本。 Clinux是Linux2.0版本的一个分支,被设计用来微型控制应用领域。 Clinux单词中代表微型,C代表控制器, Clinux的含义就是针对微控制领域而设计的Linux系统,通常读作“you see linux” 8.2.1Clinux特色特色通用通用的的LinuxAPICkernel512KBCkernel+工具工具 chmod 777 example_uc/var ./ example_uc8.5.6makefile介绍 程序大型化、复

9、杂化是嵌入式软件发展的必然趋势。如何维护和管理程序就是个突出和紧迫的问题。高级语言编程所形成的模块之间不可避免的存在着相互的联系和制约,而且其关系也非常复杂。这样,如果某个模块需要改动、更换或者删除,那么需要把与该程序相关的所有程序都重新编译、链接。这样不仅需要程序员找出与该程序相关的其它程序,并且需要使用长而复杂的命令对其逐一进行编译、链接。这对程序员来讲不仅费时费力而且易出错。针对以上问题,GNU为我们推出了make项目管理工具。Make项目管理工具能够自动确定需要重新编译的文件,并对它们进行重新编译,然后链接生成执行文件。Make项目管理工具是通过makefile来完成这一工作的,它对大

10、型项目软件的开发是很有必要的。Make管理项目把所用的命令行保存到Makefile文件中,简化了编译工作。Make管理项目可以减少重新编译所需要的时间,它可以识别出makefile中哪些文件已经修改,并且在再次编译时只编译这些文件,这样提高了编译的效率。 Make管理项目还在数据库中维护了当前开发工程中各个文件的依赖关系,在编译前就可以确定是否能找到所需文件。 要完成Make管理项目的工作必须编写makefile,makefile是一个文本形式的数据库文件,其中包含一些规则来告诉Make编译哪些文件以及怎样编译这些文件。每条规则包含以下内容: l 一个target,是Make最终要创建的文件l

11、 一个或多个dependencies列表,是编译生成目标文件所需的其他文件l 需要执行的commands,用于从指定的文件处生成目标文件一个简单的makefile规则可以使用如下代码表示:target:dependency file1 dependency file2command1command1注意:每一个命令的第一个字符必须是制表符,仅使用8个空格是不行的。否则make会显示出错信息。 其中:target是要创建的目标文件或者linux系统支持格式的可执行文件。dependency fileN是创建target需要的依赖文件列表。CommandN是创建target时使用的命令组,是包括m

12、ake在内的许多shell命令的集合。此外,除非特别指定,否则make的工作目录就是当前目录。还要注意“#”号以后的文字为注释。 # a simple makefile square: square.o Length.o width.o #gcc o square square.o Length.o width.o square.o:square.c square.h Length.h width.h #gcc c square.c Length.o: Length.c Length.h #gcc c Length.c width.o:width.c #gcc c width.c clean:

13、 rm edito*.o一个简单的makefile实例。makefile文件编写好以后,在makefile所在目录下键入make就可编译square。这个makefile有5条规则。第1条规则用于创建默认的目标square, 它有3个依赖文件:square.o、Length.o和width.o。在编译square时这些文件必须存在。第2行是 make为创建square所要执行的命令,后面的三条规(49行)则告诉make如何逐个生成那些依赖文件。Clean用来清除编译过程中的中间文件。 通常情况下,如果试图在依赖文件不存在的情况下使用第二行所示的命令来编译square,gcc将会出错并退出;而m

14、ake则在生成square前先检查所需要的依赖文件是否存在,如果不存在,则先执行别的规则以生成缺少的依赖文件,最后才编译依赖性最强的目标。如果square.o、Length.o和width.o已经存在,则它不急于再次运行后面的规则,而是比较这些依赖文件与其对应的源文件的生成时间,如果判定有一个或者多个源文件新于这些依赖文件,make才重新编译生成这些文件以反映相关源文件的最新变化,否则使用旧的依赖文件完成目标square的编译。至此,这个小小的makefile显示了它强有力的自动查找、比较、编译等功能,它的用处是显而易见的。 在编写makefile时我们会使用一些常用的诸如clean、inst

15、all、dist、tags、depend、test、check、installtest以及installcheck的目标名。目标名clean一般用来清除编译过程中的中间文件。install目标名常会把最终的二进制文件、所支持的库文件和shell脚本以及相关文档移到文件系统中与它对应的位置,同时设置文件的权限和所有者。Uninstall用来删除install目标安装的文件。Dist常常用于删除编译工作目录中旧的二进制文件和目标文件并且创建归档文件。Tags用来更新或创建程序的标记表。Depend用来设置makefile文件中各个目标所需要的依赖文件列表。installtest和installch

16、eck一般用于验证install目标的安装过程。 5.2.4.7将应用程序添加到文件系统的方法一、 编写Makefile 二、 修改配置相关文件 三、 快速添加应用程序 一、编写Makefile1 1、使用、使用ViVi在在/user/app/user/app/下编写下编写 hello.chello.c文件文件#include int main(void) printf(Hello world!n); return 1; 2 2、编写、编写Makefile EXEC = hello OBJS = hello.o all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(LDF

17、LAGS) -o $ $(OBJS) $(LDLIBS) romfs: $(ROMFSINST) /bin/$(EXEC) clean: -rm -f $(EXEC) *.elf *.gdb *.o 二、 修改配置相关文件1、修改./config/config.in 在最后面增加菜单: # mainmenu_option next_comment commentUser Application bool HelloCONFIG_USER_HELLO comment User Application endmenu #或者在合适的菜单块中增加一行: bool Hello CONFIG_USER_

18、HELLO 二、 修改配置相关文件 CONFIG_USER_HELLO This program print hello on screen. 注意:注意: 描述文本必须缩进两空格,不能包括空行且必须少于70个字符2、修改./config/Configure.help Configure.help包含配置时显示的描述文本,在文件中增加: 修改配置相关文件增加行 dir_$(CONFIG_USER_HELLO) += app 3 3、修改用户程序工程管理文件、修改用户程序工程管理文件 user/Makefile三、快速添加应用程序快速添加应用程序1、编译生成可执行文件 输入以下命令直接编译程序源代码文件,对于复杂一点的工程可以使用上节中的Makefile: 2、复制可执行文件到文件系统 在执行make romfs命令时会生成romfs文件夹,它是生成的文件系统目录,因此如果已经执行过make romfs命令,用户可将生成的可执行文件hello复制到romfs/bin目录,不必重复该命令。注意注意

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论