ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1.78MB ,
资源ID:3645840      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3645840.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(有操作系统的嵌入式系统软件开发.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

有操作系统的嵌入式系统软件开发.docx

1、有操作系统的嵌入式系统软件开发 嵌入式系统课程设计题 目 有操作系统的嵌入式系统软件开发学院(部) 电子信息工程学院 专 业 学生姓名 学 号 年级 指导教师 职称 2011 年 6 月 目录第1章 课程设计的任务说明 21.1 课程设计的目的 21.2 课程设计的要求 22.1 有操作系统的软件开发流程 32.1.1 嵌入式系统开发概述 32.1.2 嵌入式软件开发概述 42.2 有操作系统的软件运行模式 6第3章 Linux操作系统简介 9第4章 uClinux操作系统简介 10第5章 开发环境的建立 115.1 建立主机Linux平台 115.1.1 虚拟机VMware软件的安装 115

2、.1.2 安装red hat 145.1.3 安装vMware tool 195.1.4 安装共享目录 205.1.5 安装交叉编译 20第6章 uCLinux裁剪与编译 21第7章 操作系统下多任务应用程序开发 25总 结 27参考文献 28第1章 课程设计的任务说明1.1 课程设计的目的 (1)了解有操作系统的嵌入式系统软件开发流程; (2)了解Linux操作系统的基本知识; (3)熟悉Linux操作系统的常用命令; (4)掌握Linux操作系统的VI编辑器用法; (5)掌握Linux操作系统的gcc编译器用法; (6)了解uCLinux操作系统的基本知识; (7)掌握uCLinux操作系

3、统内核编译环境的建立; (8)熟悉uCLinux内核编译步骤; (9)掌握将编译好的内核下载到系统运行的步骤; (10)掌握uClinux多任务编程与自启动。1.2 课程设计的要求 (1)掌握课程设计所涉及到的相关知识。 (2)拓宽和加深学生对已学过的理论知识的理解,从而掌握比较全面的专业知识。 (3)进一步熟悉嵌入式系统软件开发流程,更深刻地理解嵌入式系统原理和相关接口 电路的实现。 (4)按照要求撰写课程设计报告。第2章 有操作系统的嵌入式系统软件开发概述2.1 有操作系统的软件开发流程2.1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别

4、。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图2.1.1-1所示。图2.1.1-1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成品,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。 由于本书主要讨论嵌入式软件的应用开发,因此对硬

5、件开发不做详细讲解,而主要讨论嵌入式软件开发的流程。2.1.2 嵌入式软件开发概述图2.1.2-1 嵌入式系统软件开发流程图 嵌入式软件开发总体的流程,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单介绍。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面

6、要介绍的ADS的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。1、 交叉编译 嵌入式软件开发所采

7、用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。 这里一般将进行交叉编译的主机称为宿主机,也就是普通的通用PC,而将程序实 际的运行环境称为目标机,也就是嵌入式系统环境。由于一般通用计算机拥有非常丰富 的系统资源、使用方便的集成开发环境和调试工具

8、等,而嵌入式系统的系统资源非常紧 缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用 计算机)来编译出目标机的可执行代码。由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉 编译、交叉链接等过程,通常ARM的交叉编译器为arm-elf-gcc、arm-linux-gcc等, 交叉链接器为arm-elf-ld、arm-linux-ld等,交叉编译过程如图2.1.2-2所示。图2.1.2-2 嵌入式交叉编译过程 2、交叉调试 嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的 一个环节,嵌入式软件开发过程中的交叉调试与通用软件开

9、发过程中的调试方式有很大 的差别。在常见软件开发中,调试器与被调试的程序往往运行在同一台计算机上,调试 器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。而 在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器 仍然运行在宿主机的通用操作系统之上,但被调试的进程却是运行在基于特定硬件平台 的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信,调试器可以控 制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。 嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种。它们一 般都具有如下一些典型特点。 调

10、试器和被调试进程运行在不同的机器上,调试器运行在PC机(宿主机),而被 调试的进程则运行在各种专业调试板上(目标板)。 调试器通过某种通信方式(串口、并口、网络、JTAG等)控制被调试进程。 在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上 运行着的进程的调试。这种调试代理可能是某些支持调试功能的硬件设备,也可能是某 些专门的调试软件(如gdbserver)。 目标机可能是某种形式的系统仿真器,通过在宿主机上运行目标机的仿真软件,整 个调试过程可以在一台计算机上运行。此时物理上虽然只有一台计算机,但逻辑上仍然 存在着宿主机和目标机的区别。2.2 有操作系统的软件运行

11、模式 在运行有操作系统的嵌入式系统中,主要包含了BootLoader引导程序、操作系统和应用程序这三种类型的程序。这三种程序的不同组成方式和运行方式就形成了不同的软件运行模式,他们可以分为如下4种模式:编号模式ABootLoader直接引导操作系统,操作系统与应用程序一起编译,应用程序不自启动BBootLoader直接引导操作系统,操作系统与应用程序一起编译CBootLoader直接引导操作系统,操作系统与应用程序一起编译,应用程 序通过网口等下载至SDRAM中DBootLoader启动后显示菜单,手动引导操作系统 A:BootLoader启动之后直接引导操作系统运行,应用程序编译在操作系统的

12、romfs文件系统中,操作系统启动后并不自动运行应用程序,而是根据需要手动运行或其他程序调用。如图:图2.2-1 有操作系统的运行模式A 在该模式下,BootLoader在完成系统初始化工作后,修改PC指针,直接跳到操作系统image.rom开始的地址处,引导操作系统运行。而应用程序和操作系统是一起编译在image.rom里面,操作系统启动之后,应用程序存放在/BIN目录下,但是应用程序还需要手动运行。 B:BootLoader启动之后直接引导操作系统运行,应用程序编译在操作系统的romfs文件系统中,操作系统启动后自动运行应用程序。如图所示:图2.2-2 有操作系统的运行模式B 在该模式下,

13、BootLoader在完成系统初始化工作后,修改PC指针,直接跳到操作系统image.rom开始的地址处,引导操作系统运行。操作系统启动完毕之后,会自动运行应用程序,主要通过在uClinux-dist/Vendors/Samsung/4510B/rc文件中添加系统启动后自动执行应用程序的命令来实现:./bin/led&./bin/uart&命令后面的&符号表示在后台执行程序。 C:BootLoader启动之后直接引导操作系统运行,应用程序和操作系统单独编译,操作系统启动完毕后,通过网络等通信方式将应用程序下载到操作系统文件夹中,再手动运行应用程序,该方式常用于调试应用程序。如图所示:图2.2-

14、3 有操作系统的运行模式C 在该模式下,BootLoader在完成系统初始化工作后,修改PC指针,直接跳到操作系统image.rom开始的地址处,引导操作系统运行。而image.rom映像文件里面并未包含应用程序,操作系统启动之后,通过网口、串口等方式将单独编译生成的应用程序下载至操作系统的可写目录中,再手动运行。 D:BootLoader初始化完毕后,并不是直接就引导操作系统执行,而是进入到一个命令行界面中,可以输入相应命令对系统进行操作,也可以引导操作系统。如U-Boot在初始化完毕之后,进入命令行界面,用户可通过相应命令,来控制系统通过串口或网口下载文件、烧写Flash存储器、测试存储器

15、等操作。如图所示:图2.2-4 有操作系统的运行模式D 在该模式下,BootLoader的功能已经不再限于系统的初始化程序。目前常用的集中通用BooLoader均提供了复杂的命令接口,可在BootLoader中对硬件进行大量操作,已相当于一个微型操作系统。第3章 Linux操作系统简介 Linux是一种计算机操作系统和它的内核的名字。它也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统(也被称为GNU/Linux)。基于这些组件的Linu

16、x软件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。Linux内核最初是为英特尔386微处理器设计的。现在Linux内核支持从个人电脑到大型主机甚至包括嵌入式系统在内的各种硬件设备。在开始的时候,Linux只是个人狂热爱好的一种产物。但是现在,Linux已经成为了一种受到广泛关注和支持的一种操作系统。包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。很多人认为,和其它的商用Unix系统以及微软

17、Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。绝大多数基于Linux内核的的操作系统使用了大量的GNU软件,包括了一个shell程序、工具、程序库、编译器及工具,还有许多其它程序,例如Emacs。正因为如此,GNU计划的开创者理查德德•马修•斯托曼博士提议将Linux操作系统改名为GNU/Linux。但有些人只把操作系统叫做Linux。大多数系统还包括了像提供GUI(图形用户界面)的XFree86之类的曾经运行于BSD的程序。除了一部分专家之外,大多数人都不自己选择每一样组件或自行设置,而是直接使用Linux套件。Linux内核最初

18、只是由芬兰人林纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。最初的设想中,Linux是一种类似Minix这样的一种操作系统。Linux的第一个版本在1991年9月被发布在Internet上,随后在10月份第二个版本就发布了。传统的Linux用户一般都安装并设置自己的操作系统,他们往往比其它操作系统,例如微软Windows和Mac OS的用户更有经验。这些用户有时被称作“黑客”或是“极客”(geek)。然而随着Linux越来越流行,越来越多的原始设备制造商(OEM)开始在其销售的电脑上预装上Linux,Linux的用户中也有了普通电脑用户,Li

19、nux系统也开始慢慢抢占桌面电脑操作系统市场。同时Linux也是最受欢迎的服务器操作系统之一。Linux也在嵌入式电脑市场上拥有优势,低成本的特性使Linux深受用户欢迎。使用Linux主要的成本为移植、培训和学习的费用,早期由于会使用Linux的人较少,这方面费用较高,但这方面的费用已经随着Linux的日益普及和Linux上的软件越来越多、越来越方便而降低。基于 linux 开放源码的特性,越来越多大中型企业及政府投入更多的资源来开发 linux。现今世界上,很多国家逐渐的把政府机构内部门的计算机转移到 linux 上,这个情况还会一直持续。Linux 的广泛使用为政府机构节省了不少经费,也

20、降低了对封闭源码软件潜在的安全性的忧虑。 第4章 uClinux操作系统简介uclinux表示micro-control linux.即“微控制器领域中的Linux系统”,是Lineo公司的主打产品,同时也是开放源码的嵌入式Linux的典范之作。uCLinux主要是针对目标处理器没有存储管理单元MMU(Memory Management Unit)的嵌入式系统而设计的。它已经被成功地移植到了很多平台上。由于没有MMU,其多任务的实现需要一定技巧uCLinux是一种优秀的嵌入式Linux版本,是micro-Conrol-Linux的缩写。它秉承了标准Linux的优良特性, 经过各方面的小型化改造

21、,形成了一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,却仍然保留了Linux的大多数的优点:稳定、良好的移植性、优秀的网络功能、对各种文件系统完备的支持和标准丰富的API。它专为嵌入式系统做了许多小型化的工作,目前已支持多款CPU。 其编译后目标文件可控制在几百KB数量级,并已经被成功地移植到很多平台上。 uClinux从Linux 2.0/2.4内核派生而来,沿袭了Linux的绝大部分特性。它是专门针对没有MMU(内存管理单元)的CPU,并且为嵌入式系统做了许多小型化的工作。它通常用于具有很少内存或Flash的嵌入式操作系统。在GNU通用许可证的保证下,运行uClinux操作

22、系统的用户可以使用几乎所有的Linux API函数。由于经过了裁剪和优化,它形成了一个高度优化,代码紧凑的嵌入式Linux。它具有体积小、稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持,以及丰富的API函数等优点。uClinux与Linux在兼容性方面表现出色,uClinux除了不能实现fork()外,其余uClinux的API函数与标准Linux完全相同。 全球每年生产的CPU的数量大概在二十亿颗左右,其中大部分是应用于专用性很强的各类嵌入式系统。大部分嵌入式系统为了减少系统复杂程度、降低硬件及开发成本和运行功耗,在硬件设计中取消了内存管理单元(MMU)模块。最初,运行于这类

23、没有MMU的CPU之上的都是一些很简单的单任务操作系统,或者更简单的控制程序,甚至根本就没有操作系统而直接运行应用程序。在这种情况下,系统无法运行复杂的应用程序,或者效率很低,并且所有的应用程序需要重新开发,还要求开发人员十分了解硬件特性。这些都阻碍了不含MMU的嵌入式产品开发的速度和应用水平。 uClinux专门针对没有MMU的CPU,并且为嵌入式系统做了许多小型化的工作。uClinux是一个完全符合GNU/GPL公约的项目,完全开放代码。 最初的uClinux仅仅支持Palm硬件系统,基于Linux 2.0内核。随着系统的日益改进,支持的内核版本从2.0、2.2、2.4一直到现在最新的2.

24、6。系统的开发人员从两人增加到了目前的12人,支持的硬件系统也从一种增加到了目前的十余种(支持的硬件平台如Motorola公司的M68328、M68EN322、MC68360、DragonBall系列如68EZ328、68VZ328,ColdFire系列的如5272、5307,ARM 7TDMI、MC68EN302、ETRAX、Intel i960、PRISMA、Atari 68k等等。)第5章 开发环境的建立5.1 建立主机Linux平台5.1.1 虚拟机VMware软件的安装 (1)在上安装并运行VMware,选择New Vitual Macthine 命令新建虚拟机,选择Custom 自

25、定义选项,如图5.1.1-1所示图5.1.1-1 构建一个虚拟系统 (2)单击“先一步”按钮,选择Linux版本为Red Hat Linux,为操作系统选择名字 和安装路径,如图5.1.1-2和5.1.1-3所示:图5.1.1-2 选择linux系统图5.1.1-3 默认选择典型(3)为系统选择内存,一般为256MB,网络连接类型选择第一种,如图5.1.1-4和 5.1.1-5所示:图5.1.1-4 根据自己的硬盘空间大小灵活选择 (4)IO adaptor 类型选择Buslogic,选择Create a new virtul disk,如图5.1.1-5 所示:图5.1.1-5 选择使用桥接

26、网络图5.1.1-6 将要安装的虚拟系统放在自己喜欢的目录下即可5.1.2 安装red hat (1)先将ISO文件装载进Linux的光驱,在图5.1.2-1中选择CDROM选项双击后, 选择硬盘中的iso安装文件。图5.1.2-1 进行系统的正式安装 (2)在虚拟机软件中执行Start this virtul machine,系统启动Linux安装程序。图5.1.2-2 选择系统ISO文件目录图5.1.2-3 从虚拟光驱中启动系统安装程序图5.1.2-4 载入驱动图5.1.2-5 是否进行ISO文件的检查/自定义即可图5.1.2-6 进入了redhat安装图5.1.2-6 选择系统使用的语言

27、图5.1.2-7 选择鼠标的配置信息图5.1.2-8 硬盘设置图5.1.2-9 时间设置图5.1.2-10 设置更口令 5.1.3 安装vMware tool由于光驱文件是不可写的,因此需要将VMwareTool-5.5.1-19175.tar.gz复制到可写目录里,再输入命令#tar xzvf VMware Tool-5.5.1-19175.tar.gz解压到当前目录,下的VMware-Tool-distrib文件夹中,运行VMware-install.pl文件开始安装。图5.1.3-1 相应工具安装5.1.4 安装共享目录由于Linux与windows采用不同的文件系统,一般在Linux下

28、无法直接访问windows 的硬盘分区,而以后的实验需要在Linux和windows质检进行文件交换,因此必要在Linux虚拟机和windows主机之间建立一个共享文件。图5.1.4-1 设置共享文件目录5.1.5 安装交叉编译 交叉编译工具的安装 首先将arm-elf-tools-20030314.sh复制到共享文件夹。 然后在Linux系统中通过共享文件夹将其复制到Linux文件夹中 在终端运行命令: #sh ARM-elf-tools-20030314.sh 交叉编译环境安装完毕!第6章 uCLinux裁剪与编译步骤:(1)输入make menuconfig配置命令(2)厂商产品选择(v

29、endor/product)Samsung/s3c4510B(3)Linux内核选择(vendor/product)Linux-2.4.x(4)库函数选择uc-libc,如图6.6.1和6.6.2所示(5)内核设置,如图6.6.3所示(6)厂商/用户设置(7)编译uClinux图6-1 进行配置文件的设置图6-2 进行各种配置图6-3 内核设置图6-4 厂商/用户设置图6-5 是否保存设置生成imaga.rom文件图6-6 生成可烧写flash的rom程序第7章 操作系统下多任务应用程序开发步骤:(1)编写程序源码 (2)添加应用程序到内核 a.添加程序文件至内核源代码目录中 b.为程序文件建

30、立Mackfile文件 c.修改内核Mackfile文件 d.修改内核配置文件config.in e.修改内核rc文件设置程序为自动启动 (3)编译内核 (4)下载内核至flash存储器图7-1 进入应用程序的设置图7-2 配置用户程序图7-3 是否要保存设置/选择【yes】总 结 参考文献132位ARM嵌入式系统开发技术流程、技巧与实现 赵刚 电子工业出版社 20082Linux操作系统及实验教程 李善平 机械工业版社 19993 ARM嵌入式Linux系统构建与驱动开发范例 周立功 北京航空航天大学出版社 20054嵌入式系统中BootLoader的编译与移植 赵刚 四川大学出版社 2007

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1