嵌入式操作系统习题

2025-02-10 版权声明 我要投稿

嵌入式操作系统习题(通用8篇)

嵌入式操作系统习题 篇1

1. GDB中,用来显示源代码的命令是( B )

A.kill

B.list

C.make

D.break

2. 1KB等于( B )

A.1024MB

B.1024B

C.1024GB

D.8bit

3. 以下不是嵌入式系统应用领域的是( A )

A.通用软件

B.工业控制

C.消费类电子产品

D.机器人

4. 十进制数100,用十六进制表达为( C )

A.62

B.63

C.64

D.65

5. ARM采用定长指令格式,所有指令都是32位,Bit[24:21]为( C )

A.目标寄存器编码

B.条件执行

C.指令操作符编码

D.永远是0

6. 80386处理器是( C )

A.8位处理器

B.16位处理器

C.32位处理器

D.64位处理器

7. ARM采用定长指令格式,所有指令都是32位,Bit[24:21]为( B )

A.目标寄存器编码

B.操作符编码

C.第一个操作数寄存器

D.永远是0

8. 80486处理器是( B )

A.64位处理器

B.32位处理器

C.16位处理器

D.8位处理器

9.1024KB等于( C )

A.1TB

B.1B

C.1MB

D.1GB

10. 在做低功耗优化时,以下说法错误的是( A )

A.采用什么算法与降低功耗无关

B.在采集系统中应尽量降低采集速率

C.在通讯模块中应尽量提高传输的波特率

嵌入式操作系统习题 篇2

关键词:构件化,嵌入式,操作系统,异构构件,形式化方法

传统的嵌入式操作系统采用一体化、大内核方式开发,这种设计方法限制了嵌入式操作系统的可移植性、可伸缩性,严重影响了嵌入式操作系统的开发效率及功能的鲁棒性,构件的重用性、灵活性、可维护性、高效性使它成为构建嵌入式系统的一个良好的选择,所以构件化嵌入式操作系统[1]的引入对嵌入式系统有其一定意义。另外,分层的设计模式因为具有使复杂问题简单化,分割处理的特点使得利用它进行嵌入式系统的设计成为一个不错的选择,对此笔者结合构件化与分层结构的设计思想,提出一种灵活的嵌入式操作系统的设计思想。

软件开发中的效率关系到软件的开发成本与机会成本,对构件化嵌入式操作系统异构构件的直接使用无疑会带来开发效率下降的问题,所谓异构构件[2,3],就是对于满足不同构件模型标准定制的构件,考虑到异构构件的使用带来的开发效率下降问题使得开发人员无法使用一些现成的不同构件模型的构件,并且限制跨平台的构件使用,对此笔者提出一种构件的封装方法,用来屏蔽构件间的差异,使得在每层上充分发挥构件的灵活优势。

1 构件机制

构件是自包含的、可编程的、与具体语义无关的代码片段。它由类组成,但与一般意义上的类不同的是它进行了再次的封装,对外它提供一组接口,从而达到了内部具体的实现与定义的分离,将构件本身与接口独立开。

为说明构件间的作用描述一种构件的配置,假设有两个构件,每个构件有若干接口,有的是自身使用的,另外一些是向外部提供的,将对外提供的放在下方,自身使用的接口放于构件上方,每个接口由若干方法组成,比如命令、对事件的处理方法。关于命令是自上而下传递的,对事件的处理方法是自下而上方向传递的。假设构件2是硬件层封装的,那么与之相关的中断处理部分会发出一个事件,用于调用构件1,而构件1接到这个事件时,可能有2种情况发生,一是向上再发出一个事件,调用其他构件;二是向下发送一个命令到构件2,构件2会有一个接口用以实现这条命令。

2 分层结构

在一个系统中不同的功能部件都具有自己不同的上下文环境,但总是存在一些功能构件与另一些功能构件具有相似的上下文环境,分层的思想就是根据这些相似的上下文环境,将具有相似的上下文环境的功能构件纳入同一层次当中,达到对操作系统进行功能集合的划分目的。不同的层次之间的功能模块的上下文环境有较大的差异,因此对于处在不同层次的功能构件,它们的接口、组织和内部的具体实现等方面的差异也是较大的,这样一来,就得到一种较为优良的同层构件构造方式,这种方式类似于面向对象中涉及的父类与子类的关系,从一层中有相似上下文的功能构件中抽象出一种相对统一的功能构件作为一个统一模型,对其赋予不同的通信参数就此得到功能模块的一个特例,这些特例属于同一层的功能模块。

2.1 分层的总体结构

在上面提及的分层结构的基础上将操作系统分层:驱动层主要提供设备驱动包括中断控制及时钟驱动程序,字符设备驱动,块设备驱动等;内核层主要是一些关于信号量、内存管理、消息队列、中断管理、任务管理的模块等,其中还包括对系统中间层提供的编程接口,因为在每层中实现构件接口化方式,所以在某种程度上实现了无内核的形式,内核层也需要实现构件化方式,使得内核配置更为灵活;系统中间层负责为应用程序层提供高效的编程接口。

2.2 分层结构中的构件具体实现

在分层划分的基础上需要将各个层的模型继续划分成为经过对每个抽象模型构件赋予通信参数后就可以实例化的、可独立编程、测试的构件实体。对于实体化的构件来说存在一个界面划分的问题,也就是粒度大小和独立性的取舍问题,在独立性较强的构件中它是完全自包含的,对外部构件的依赖性很低,构件间的组合较为方便,但是这样的大粒度构件是以牺牲灵活性为代价;相反粒度小的构件虽然灵活性较强,但是在组合系统的时候就比较复杂。需要权衡取舍,一般情况负责驱动硬件的构件,因为与底层硬件联系,所以独立性较强,但粒度较大。下面以驱动构件为例说明一般构件的具体实现。

触摸屏驱动见表1,触摸屏构件具有两个接口IGet它包括使用及访问它的具体方法,如获取触摸屏事件及相关硬件参数。ISet是系统对象使用的接口,它用来管理触摸屏驱动对象,使之与硬件绑定,并赋予其资源,如中断请求号等。

通过表1的构件描述,只需要在构件框架的基础上填充相应的代码即可完成整个驱动。实际上,构件驱动模型把驱动看作是一个服务程序,通过系统提供的中间层,驱动构件可以与用户端程序进行交互,而中间层的模式不设计构件驱动与用户程序的内部逻辑实现,也不会对驱动构件与用户程序的接口产生影响,中间层也是相对遵循一定的独立的通信规范,不受驱动构件和用户程序的影响,三者是相对独立的,是构件的重用性、灵活性、可维护性、高效性的所在。

2.3 关于异构构件的处理

提到构件的具体实现就不能不考虑一个问题,即基于不同方法生成的构件之间的交互问题,所谓异构构件是通过不同的构件模型标准实现的构件,不同的构件模型支持不同的构件特征,这种不同的特征主要体现在构件的属性、方法、事件集等几个方面,所以必须提供一种封装形式使得异构构件可以进行交互,使得构件的可重用性得到更大的发挥。

为完成对构件的封装需要一个用于再次封装遵循不同标准构件实例的包装器[4],它用来封装相应构件模型的构件的实现,经过它的包装使得构件对外呈现统一的接口形式,可以屏蔽构件对外部的差异;包装集则提供所有的包装器,其中包括类与接口的集合,通过这里定义的接口使得它可以独立于构件的具体模型,这里也贯穿着构件的编程思想,也就是面向接口的编程,用户可以用统一的方式访问构件,在包装集中还包括包装过的构件对原构件的对应关系;连接器集合中包括对应于不同连接关系的连接器;工作现场负责选择、配置构件最终生成构件的实例。

包装器的内部必须实现一个统一的IBoxing接口定义的方法并提供相关功能,对于包装器支持的所有构件模型,都可以使用这个接口对支持的构件模型的构件以统一的方式进行访问,如果需要添加对新构件的支持包装器需要实现对于新构件模型的IBoxing接口的功能。

IBoxing接口功能Instantiation负责实例化一个构件,此过程通过createInstance实现,或者将一个构件的实例分配到一个包装器,当然这个过程中需要专递特定构件的相关参数;General Information负责将包装好的构件或特定的构件模型的相关信息传递到负责组装构件的功能部分;Feature Access负责抽取特征类及其特征,由于每个构建模型都有其自身支持的特征类,所以为了达到真正意思上的屏蔽需要得到各构件模型支持的特征类及其特征,可以通过getFeatures方法对特征类进行过滤或通过getFeatureInfo方法对所有特征进行检索,构建包装器结构。

参考文献

[1]Labrisse J.嵌入式系统构件[M].2版.袁勤勇,黄绍金,唐青,译.北京:机械工业出版社,2001:130-143.

[2]Abowd G D,Allen R,Garlan D.Formalizing Style to Under-stand Descriptions of Software Architecture[J].ACM Trans-actions on Software Engineering and Methodology,1995,4(4):319-364.

[3]Sakamura K,Koshizuka N.T-Engine:The Open,Real-TimeEmbedded-Systems Platform[J].IEEEMicro,2002,22(6):48-57.

嵌入式操作系统习题 篇3

设备驱动程序是嵌入式操作系统中一个重要部分,它是外设和应用软件的接口,追随了微软的一贯风格。WinCE的设备驱动程序规范和丰富,需要特别指出的是,WinCE 5.0所有的驱动程序全部是采用动态加载方式,即在操作系统内核启动以后对硬件外设(如usB、LCD)加载,驱动程序依然运行在内核空间。简单来讲,这种驱动程序是在用户态和我们熟悉的Windows系统的DLL方式没有区别,其好处是程序员调试一个驱动的时候会很方便,和应用程序的调试没有差异,可以使用正常的函数调用,把驱动的动作和数据显示在屏幕上;再有,相对用户自己开发的驱动程序,可能有不稳定和可靠的地方,运行在用户态,整个系统将会更稳定些。

但是问题和缺陷也显而易见,就是因为驱动的动态加载和内核的切换代表性能的损失,对于桌面系统这可能没有太大的影响,但是在嵌入式系统,用户对实时性能的要求要严格得多。为了解决这个问题,在新的WinCE6.0里面的驱动程序将分为内核模式和用户模式两种,内核模式侧重效率,用户模式侧重稳健和可靠。微软力求保证驱动程序的主体结构没有大的变化,微软资料显示大约有几天的时间可以完成一个—般规模的驱动的移植过程,微软公司和微软的增值代理都提供了相应的课程。

WinCE开发工具

微软工具新的策略是使用一个标准的vi,sual Studio 2005平台支持全部的微软嵌入式操作系统系列的开发,历史上支持过WinCE和Windows Mobile开发的工具有:

操作系统开发-Platform Builder,它的作用是构建操作系统,设有配置和调试工具,CE6.0以后这个工具就不单独存在,而是合并到Visual Studio作为它的一个插件。

应用程序开发-eMbedded Visual C++.支持本地应用程序开发C,C++,MFC(微软基础类),ATL(COM的目标和Active X控制),这个工具在CE5.0版本以后已经合并到Visual Stu-di02005里面。

Visual Studio 2005-微软全新的开发工具已经包含了Platform Builder,值得特别提到的是Visual Studio 2005支持微软托管的应用代码编写和调试,即,NET Compact Framework,它是NET Framework专门针对WinCE优化后的一个简化版本。在嵌入式设备上可以大幅提高软件开发生产力,对于软件越来越成为嵌入式设备的主要成本之一将会起到积极的作用,是一次编程多次使用的软件重用理想的实现。Visual Studio 2005为了方便嵌入式系统应用软件开发而设计的支持不同硬件平台的“软仿真器”也给用户留下很深的印象。

面向微型设备的.Net Micm Framework

前面提到的.NET Compact Framework虽好,但因为依托WincE平台要求的硬件资源比较大,微软的.NET Micro Framework是微软面向嵌入式系统中微型设备和单片机(MCU)市场的一个新的产品,是WinCE,Windows Mobile和WindowsXP Embedded在嵌入式市场的一个补充。.NETMicro Framework应用可能是小型工业网关、家庭能源管理装置、遥控器,也可以是WindowsVista PC的sideshow(枝节)设备,如笔记本电脑的副屏(可以播放MP3、显示日历、行程等)等,微软,NET Micro Framework目前支持基于32位微处理器ARM7和9的硬件平台,已经移植好的参考硬件平台有飞思卡尔iMXS、DIGi Connet ME和EmbeddedFusion。

.NET Micro Framework把通用的I/O设备,如UI、GPIO、SPI、Comm等做好一个类库,其他和应用相关的硬件设备由合作伙伴(如DIGi)完成,值得注意的是,.NET MicroFramework还可以运行在一个小RTOS(实时操作系统)上,如DIGI平台运行的是ThreadxRTOS,微软认证的合作伙伴使用微软提供的porting kit把这些设备类库移植好,这样使得嵌入式工程师能在不了解单片机硬件的前提下开发单片机的应用。.NET Micro Framework里面有一个重要的部件叫CLR-可以理解为是个运行代理,它的作用是个实时的编译器,负责执行被用户提交的管理代码,CLR还负责内存和线程管理,如图4所示类库以上的应用层都是被管理代码(managed code),下面还是C/C++本地代码(native code),这样整个,NET MicroFramework代码非常的小,大约是250-500K。(WinCE大约是l-12M左右)。需要指出的是,.NET Compact Framework不是一个传统意义的实时多线程操作系统,但是它可以支持多线程的操作,可以满足一定范围上实时要求,如通过设置UI是主线程满足一定的显示面板输入响应的要求,通过看门狗定时器和中断方式满足和实时设备接口数据通讯的要求。.NET Compact Framework的编程方式更接近微软的桌面图形编程界面,如,同样使用delegate、callback处理外部事件。

.NET Micro Framework的SDK是开放给所有用户的,但是要得到porting kit需要得到微软的认证。信息产业部集成电路和软件促进中心(CSIP)是微软授权的,NET Micro Framework在中国的技术培训和合作伙伴。

.NET Micro Framework面向的是一个对于微软来讲全新的市场,可以说这种开发方式是对这个市场久已习惯的嵌入式软件开发方式的一次革命性的改变,从技术发展趋势看,无疑是一个正确的方向。在最近的技术大会上,微软NET Micro Framework产品经理和主要设计者Colin Miller非常有信心的给大家分享了微软,NET Micro Framework下个版本开发计划,比如支持TCP/IP、USB、BT/ZIGBEE、CAN总线和文件系统等等。但是应该看到,由于嵌入式系统的特殊性和多样性,微软目前支持的平台还比较少,合作伙伴的设计和应用还待成熟和完善,.NET Micro Framework在国内的发展还需要一定的时间。

微软产品和其他RTOS比较

嵌入式系统毕竟不是桌面系统,用户需求的差异和环境差异很大,平台的变化也多,用户的选择余地就大。为了方便用户比较和选择

一个合适的嵌入式操作系统,微软官方网站上提供了第三方的评测报告供用户阅读和分析;国内外基于微软的嵌入式成熟应用也可以供参考;微软中国的市场和教育普及工作也对用户了解微软嵌入式操作系统大有帮助。下面仅对目前国内嵌入式系统比较流行的嵌入Linux和VxWorks进行分析,比较他们和微软嵌入式操作系统的差异和各自特色。

嵌入式Linux

最近结束的LinuxWorld China 2007大会上,Linux基金会执行总监Jim Zemlin展望未来时再次强调,嵌入式和移动应用是除标准、虚拟计算和桌面外的一个重要的发展领域。比较微软和其他的嵌入式操作系统,Linux和嵌入式Linux(经过嵌入式优化的Linux商业和非商业版本)的优势在于:1,开放性,Linuxl00%源代码公开;2,广泛性和成功的开发模式,全球化的社区开发和维护方式已经被验证是一种高效率和成功的软件开发模式;3,各种CPU和最新的硬件器件和系统的支持;4,丰富的开源资源和第三方应用软件。

Linux的缺点是,第一,实时性。Linux本身并不是为嵌入式系统而设计的,从操作系统系统结构设计偏重于可靠性和网络的效率,虽然商业嵌入式Linux公司如MontaVista在2.4内核上实现了可抢占的实时调度,开源社区也有了2.6RT补丁,但是比较WinCE和VxWorks实时性都略逊一筹,来自南京大学的文章中有一个可以参考数据表格。

第二,开发工具。Linux的开发工具一直是一个软肋,从开源社区分工讲。内核和工具链是两个完全独立的部分,内核的开发和维护人员主要依赖于命令行工具。可喜的是,开源的Eclipse框架已经成为包括嵌入式Linux在内的传统嵌入式操作系统的集成开发环境(IDE),基于Eclipse的商业嵌入式软件如DevRocket、Workbench和Linuxscope也正在成熟。但是相对微软的Visual Studio 2005,应该说中国的用户更加熟悉微软的开发工具。

第三,完整应用软件方案,嵌入式系统要求的是有针对性的应用软件方案,嵌入式Linux虽然已经有完整的操作系统组件,但是缺少针对具体应用的软件方案,举个智能手机的例子,微软的Windows Mobile for SmartPhone基本含有了手机硬件驱动(BSP)、内核、TCP/IP、文件系统基本组件、手机软件和多媒体办公软件等丰富的应用软件,这些基本涵盖了整个智能手机所需要的全部软件。但是相比较而言,嵌入式tanux的方案就显得单薄多,虽然借助于包括Trolltech(奇趣)的qtopia在内的手机应用软件或者Access的整套手机Linux软件方案,Linux手机软件仍缺少完整性和成熟性,这点对于包括中国手机企业在内的2-3线的手机制造和设计公司带来一定的压力。

第四,商业化产品和服务。比较微软,Linux和嵌入式Linux的商业公司规模小而且没有标准化,虽然社区具有丰富的开发和创意的资源,但是社区没有义务提供商业的服务和承诺。

风河的VxWorks

VxWorks是传统嵌入式操作系统中的佼佼者,特别是在通信、国防和工业控制领域具有较强的优势。VxWorks是基于微内核技术的实时内核,从设计和实际的使用情况看,完全可以满足硬实时性的要求,这点较Linux有较强的优势。相较于WinCE,VxWorks的实时性要更好一点,设备管理和驱动要简练和高效些。VxWorks6.1的版本之后还提供基于MMU内存保护和错误管理的机制(目前CE和,NET Micro Framework还不支持),使系统的可靠性更有保证。VxWorks系统的配置灵活,代码尺寸相较于WinCE和Linux要小得多,基本系统甚至比,NET Micro Framework还要小,这样适合更低配置和成本要求的嵌入式设备。

VxWorks的网络功能强大,风河公司和第三方都有大量的网络协议和应用软件支撑,VxWorks的API是POSIX兼容,这样通信行业的标准代码就很容易移植进来了(Linux有相同的特点),这可以说是WinCE的一个弱点。

但是,VxWorks在消费电子和手持移动设备方面应用比较微软操作系统甚至Linux都相对少得多,从技术和商业层面看,笔者认为主要是这样几个原因:1,VxWorks是从内核发展成为一个比较完整的嵌入式OS,但是API和图形系统并不是十分标准和流行,单靠VxWorks自己的产品和松散的第三方资源还很难形成完整和公认的消费电子中间件。2,VxWorks早期是采用开发授权加上版税的方式收取费用,这种方式不能为强调成本控制的OEM/ODM(委托制造,委托设计)厂商所接受,比如在过去的5年里,中国台湾OEM/ODM生产的家用无线网络产品多数都转到Linux平台,手机和GPS转到上市比较快的WinCE和WindowMobile平台。OEM/ODM不能接受为售价只有15-25美元的无线路由器再支付哪怕是1美元(甚至更少)的版税了。

当然,风河公司已经充分意识到这个问题,并在过去几年改变了商业模式,比如以收取年费的方式取代版税模式,同时风河正式采用双OS的策略,进军嵌入式Linux市场,推出风河通信和消费电子用Linux平台,以期和微软抗衡,这是因为它的实质也是一个基于开源的嵌入式Linux版本。

结语

嵌入式操作系统程课程设计报告 篇4

一、实习任务和目的„„„„„„„„„„„„1

二、实习基本要求„„„„„„„„„„„„„1

三、实习题目„„„„„„„„„„„„„„„1

四、实习地点„„„„„„„„„„„„„„„1

五、实习内容„„„„„„„„„„„„„„„3

六、实习总结、心得体会„„„„„„„„„„8

七、参考资料„„„„„„„„„„„„„„„9

0

一、实习的任务和目的:

本次实习的目的是在学生已掌握了嵌入式操作系统的知识、对当前嵌入式操作系统的主要种类和应用领域有较清晰的概念的基础上,以嵌入式LINUX操作系统教学内容为指导,以S3C2410经典实验箱为平台,使学生掌握配置、裁剪、移植和维护嵌入式LINUX操作系统的技能和相关理论知识,具备一个初级嵌入式LINUX系统程序员的综合技能。

本次实习的任务是通过教师对嵌入式LINUX的配置、裁剪、移植以及文件系统的移植等内容的讲解,让学生掌握如何搭建嵌入式开发环境、嵌入式LINUX系统移植、文件系统移植以及简单的驱动程序的开发。

二、实习基本要求:

1、了解嵌入式操作系统技术前沿、应用领域、发展趋势及相关领域研究成果;

2、熟悉嵌入式操作系统的特点、分类、基本概念;

3、熟悉主流实时操作系统。深入了解嵌入式LINUX,包括系统配置、裁剪、移植;

4、熟悉并掌握嵌入式文件系统的建立、移植;

5、以嵌入式处理器器S3C2410为例,掌握嵌入式LINUX驱动程序开发的一般方法。

三、实习题目:

1、复习LINUX系统基本操作,常用命令;

2、嵌入式LINU开发基础知识;

3、嵌入式LINUX开发环境的建立;

4、Bootloader移植;

5、LINUX内核的配置、裁剪;

6、LINUX内核移植与编译;

7、建立根文件系统;

8、模块方式驱动程序设计;

9、中断、LED驱动程序设计。

四、实习地点:

应用技术学院五楼四机房。

五、实习内容:

第一部分 嵌入式LINU开发基础知识: 1.1 嵌入式LINUX简介

嵌入式系统的定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,它的主要特点是潜入、专用。本次实训的平台是在LINUX下的ubuntu系统上进行的。

1.2 嵌入式LINUX开发平台简介

本次实训的需要一台主机及一块开发板,它们需要满足一定的硬件要求,主机的硬件要求是:有一个25针的并口接口,它用来连接JTAG连线,有一个9针的串口接口,支持网络,至少20GB的硬盘,用到的开发板是s3c2410,它有如下的部件:64MB SDRAM,1MB NOR Flash,64MB NAND Flash,两个网卡,5个串口(内置3个,外扩2个),音频输入输出。2.5寸IDE接口,标准SD/MMC卡座,GPIO按键,外接I2C接口的实时时钟(RTC)芯片。1.3 嵌入式LINUX开发流程

(1)在主机上编译Bootloader,然后通过JTAG烧入单板,(2)在主机上编译嵌入式LINUX内核,通过Bootloader烧入单板或直接启动,(3)在主机上编译各类应用程序,单板启动内核后通过NFS运行他们,经过验证后再烧入单板。1.4 嵌入式LINUX开发环境的建立

开发环境的搭建:硬件开发环境的搭建很简单,将主机与目标板通过JTAG、串口线(接单板上的串口0)、网线(接单板上的网卡0)连接起来,将各类设备连接到目标板上即可,软件的搭建环境相对要复杂的多,时间也要得多,首先第一步需要移植U—boot,然后再来烧写LINUX内核,再创建根文件系统,最后才可以来写相应的驱动程序来进行开发的!第二部分 嵌入式LINUX系统构建:

2.1 Bootloader移植

u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, u-boot不仅仅支持嵌入式LINUX系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。u-boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。移植过程:

在主机上创建一个文件夹,把以下四个已下载的文件复制到里面,这四个文件分别为:

u-boot.bin,----LINUX操作系统启动的bootloader;uImage,---LINUX操作系统内核;

root.cramfs,----根文件系统;yaffs.tar.bz2,----应用程序压缩包。运行sjf2410-s命令如下:sjf2410-s /f:u-boot.bin。然后按回车,等待烧写完成后,设置开发板的地址与服务器的地址,命令如下:设置本机服务器IP地址:(根据具体主机环境更改IP)setenv serverip 192.168.1.113,设置ARM设备IP地址:(随意设置成与上面主机同一网段IP即可),setenv ipaddr 192.168.1.199,保存变量设置:saveenv。

2.2 内核裁剪与移植

LINUX本次实验目录下存放着已经修改好的博创经典2410平台的内核源码包,将该源码包拷贝到宿主机LINUX系统中,解压至本次实验目录,配置编译生成内核uImage文件烧写到ARM设备中。在内核根目录下,用命令make menuconfig进入配置界面,对系统进行裁剪,如下:

选择硬件系统

配置LCD驱动

网卡驱动

配置NANF Flash驱动

配置文件系统

然后运行 bootm 启动内核即可。2.3 创建根文件系统

解压busybox源码后,进入busybox源代码目录,打开Makefile,修改两个地方,分别是在Makefile文件中的CROSS_COMPILE=后面添加上arm-LINUX-这一行以及ARCH ?=后面改成arm.然后在busybox根目录下使用命令make menuconfig进入配置界面进行配置,如图:

Busybox截图

退出后,使用命令make,make install。用shell脚本创建根文件系统的目录结构,并在想要运行根文件系统的地方运行脚本,需要创建一个文件夹rootfs,里面包括了一些LINUX下的基本的文件。还需要把busybox源码目录下的/etc 的内容拷贝到此处创建的文件夹的etc下,修改拷贝过来的profile文件,修改初始化文件inittab和fstab,修改初始化的脚本文件,init.d/rcS,创建一个空的mdev.conf文件,在挂载根文件系统时用到,再把本机上的passwd,shadow,group文件拷贝过来,把busybox默认安装目中的文件全部复制到这里的rootfs中,会发现多了LINUXrc->bin/busybox,这是挂载文件系统需要执行的,这时,在rootfs目录下,使用命令cp-rvf /rootfs/busybox-1.12.2/_install/*./,,到此,就用busybox创建了一个基本的文件系统。

第三部分 设备驱动程序设计:

3.1 模块方式驱动实验

在这里,需要有两个程序,一个驱动程序,一个用户程序,驱动程序通过用户程序来调用,完成基本的读写以及注册设备号等,在本程序中,用户程序非常简单,驱动程序的核心部分是如下代码所示:

static struct file_operations demo_fops = { owner: THIS_MODULE, write:demo_write, read: demo_read, ioctl: demo_ioctl, open: demo_open, release: };demo_release, 其他的所有程序都是在这个基础上延伸出来的。还有一个注册设备号的函数如示:

register_chrdev(0, DEVICE_NAME, &pxa270_fops);假设本驱动程序的源代码名字是s3c2410_led.c编译驱动程序模块的方法是把驱动程序复制到内核目录下的drivers/char子目录下,在drivers/char/Makefile中增加一行:obl-m +=s3c2410_led.o,然后在内核根目录下执行make modules.就生成drivers/char/s3c2410_led.ko,再把它复制到开发板上,就可以使用insmod s3c2410_led.ko,rmmod s3c2410_led.ko了,此时,就可以执行本用户程序了,结果如下:

3.2 LED驱动实验

本实验的主要目的是写一个驱动程序来点亮开发板上的一颗LED灯。主要的程序核心还是集中在怎么给led灯引脚一个电平以及用户程序中ioctl程序的使用。程序的核心代码如下:

static struct file_operations s3c24xx_leds_fops = {.owner =

THIS_MODULE,.open

=

s3c24xx_leds_open,.ioctl =

s3c24xx_leds_ioctl, };static int s3c24xx_leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){

if(arg > 4){

return-EINVAL;

}

switch(cmd){

case IOCTL_LED_ON:

s3c2410_gpio_setpin(led_table[arg], 0);

return 0;

case IOCTL_LED_OFF:

s3c2410_gpio_setpin(led_table[arg], 1);

return 0;

default:

return-EINVAL;

} } 编译好模块后,复制到开发板目录下即可在开发板下执行,点亮led灯。

命令led_test 1 off/on,如此,就可以关闭或点亮一个led灯了!3.3 中断按键控制LED实验 核心代码如下:

注册中断:request_irq(button_irqs[i].irq, buttons_interrupt, button_irqs[i].flags,button_irqs[i].name,(void *)&press_cnt[i]);注册备:register_chrdev(BUTTON_MAJOR, DEVICE_NAME, &s3c24xx_buttons_fops);中断函数:

static irqreturn_t buttons_interrupt(int irq, void *dev_id){

volatile int *press_cnt =(volatile int *)dev_id;

*press_cnt = *press_cnt + 1;/*

ev_press = 1;

wake_up_interruptible(&button_waitq);

return IRQ_RETVAL(IRQ_HANDLED);} 同理,把它的目标文件放到内核根目录下的drivers/char编译后,把生成的模块文件复制开发板下,即可完成相应的任务,通过按键可以来控制led灯了,同时,可以通过命令cat /proc/devices, cat /proc/interrupt来查看设备及中断的注册情况!

六、实习总结、心得体会:

通过为期将近几周的嵌入式操作系统实习,我收获颇深。这次实习虽然短,可是收获很大,感觉平时上课学到的东西都没有这几天学到的多。正所谓:“实践是检验真理的唯一标准”。这次实习可以形象的概括为:“山重水复疑无路,柳暗花明又一村”。只有自己经历过才会真正的懂,书本知识还远远不够!

此次嵌入式操作系统实习给我最深的体会就是:理论+细心+实践才能在实际 生产中体现所学知识的价值。

在嵌入式行业发展如此快速完善的今天,理论与细心与实际的完美结合才能让自己在专业领域占有一席之地。在实习中,我初步了解了嵌入式处理器S3C2410的工作原理、也加深了对嵌入式处理器S3C2410的认识;也见识了关于嵌入式处理器的一些工作方式等。

几周的嵌入式操作系统实习结束了,做了好几个小实验,有成功也有失败,然而终究还是学会了很多东西。在整个实习期间,我体会到了自己的进步,并且从中也体会到了它的快乐。实习也让我明白了:第一,通过实践真正觉得自己可以做些什么了有点存在的小成就感;第二,通过嵌入式操作系统实习,加强了我们的动手实践能力和设计创新精神。作为信息时代的大学生基本的动手能力是一切工作和创造的基础和必要条件。第三,在嵌入式操作系统实习的这些日子里,大家的团队精神得到了很大的加强,闭门就会造车那是不可能的事情。

在为期两周的实习当中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,运用所学的知识,一步一步的去探索,是完全可以解决遇到的一般问题的。本次实习的目的主要是:使我们嵌入式操作系统及LINUX相关操作有一定的感性和理性认识,培养和锻炼我们的实际动手能力。使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的应用型技术人才,为以后的顺利就业作好准备。此次实习学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。在此,感谢老师及其他老师的细心指导,也同样谢谢其他各组同学的无私帮助!

七、参考资料:

1、雅默著.构建嵌入式LINUX系统[M].北京:中国电力出版社.2004年

2、孙琼著.嵌入式LINUX应用程序开发详解[M].北京:人民邮电出版.2003年 3、2410经典实验指导书3.2 北京博创兴业科技有限公司2410经典实验箱配套教材

4、韦东山著.嵌入式LINUX应用开发完全手册

嵌入式操作系统习题 篇5

基于嵌入式操作系统VxWorks的实时通讯的实现

针对智能化飞机燃油管理系统通讯功能模块,实现了基于嵌入式操作系统VxWorks的.多任务软件设计,基于socket实现了Ethernet通讯,并对通讯网络的重构做了初步研究.

作 者:万凤琴  作者单位:南京机电液压工程研究中心 刊 名:航空科学技术 英文刊名:AERONAUTICAL SCIENCE AND TECHNOLOGY 年,卷(期):2009 “”(4) 分类号:V2 关键词:嵌入式操作系统VxWorks实时通讯   PC104   Ethernet  

嵌入式系统实验报告 篇6

班 级:学 号:姓 名:成 绩:指导教师:

20110612 2011061208 李晓虹 武俊鹏、刘书勇

1.实验一

1.1 实验名称

博创UP-3000实验台基本结构使用方法

1.2 实验目的

1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。3.熟悉ARM JTAG的安装与使用。

1.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发

环境、仿真器驱动程序、超级终端通讯程序。

1.4 实验内容及要求

1.熟悉嵌入式系统开发式流程概述。

2.熟悉UP-net3000实验平台的核心硬件电路和外设。3.熟悉ARM JTAG的安装与使用。

1.5 实验设计与实验步骤

1.新建超级终端

2.选择ARM 开发实验台串口。

完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置 3.保存为一个特定超级终端到桌面上,以备后用。用串口线将PC 机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。4.启动开发板,按住任意键,使开发板进入BIOS设置状态。

5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。操作时,要在PC机上输入小写的字母快捷键,进入到相应的功能中去。6.按照超级终端上的提示信息,进行功能的测试。

1.6 实验过程与分析

本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。进入到BIOS界面后,按照超级终端上的提示信息来进行功能

1.7 实验结果总结

在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快

捷键来测试对应的功能。如

e:测试由ZLG7289 驱动的LED 显示,共分3 步,请看超级终端提示按任意键继续,同 时观察LED 的变化,最后返回主菜单。

b:引导FLASH 中的应用程序system.bin。执行该功能将退出BIOS 状态,把控制交给应 用程序,等。

1.8 心得体会

通过此次实验,我对于实验环境有了初步的了解与认识,对于嵌入式也有了更深一步的认识。同时实验过程中,我学会了第一次接触的超级终端的使用方法,并能够熟练掌握,知道其工作的原理。

2.实验二

2.1 实验名称

ADS1.2软件开发环境使用方法

2.2 实验目的

1.熟悉ADS1.2 开发环境,学会ARM 仿真器的使用。

2.使用ADS 编译、下载、调试并跟踪一段已有的程序,了解嵌入式开发的基本思想和过程。

2.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发

环境、仿真器驱动程序、超级终端通讯程序。

2.4 实验内容及要求

掌握AXD Debugger的使用方法,学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。编程实现ARM 和计算机之间的串行通讯:ARM 监视串行口;将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的);即按PC 键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。

2.5 实验设计与实验步骤

(1)新建工程,选择菜单中的Project | Add Files 把和工程相关的所有文件包括init和startup 子目录加入到工程中。ADS1.2 不能自动按文件类别对这些文件进行分类,需要的话可以执行菜单Project | Create Group 创建文件组,然后分别将不同类的文件加入到不同的组,以方便管理。(另一种办法是,在新建工程时ADS 创建了和工程同名的目录,在该目录下按类别创建子目录并存放工程文件。选中所有目录拖动到任务栏上的ADS 任务条上,不要松

开鼠标当ADS 窗口恢复后再拖动到工程文件窗口,松开鼠标。这样ADS 将以子目录名建立同名文件组并以此对文件分类。)

(2)双击Main.c 打开该文件,可以看到Main()函数的内容如下所示。int main(void){ ARMTargetInit();//开发版初始化 LCD_Init();LCD_ChangeMode(DspTxtMode);//转换LCD 显示模式为文本显示模式 LCD_Cls();//文本模式下清屏命令

LCD_printf(“Hello world!n”);//向液晶屏输出 Uart_Printf(“nHello world!n”);//向串口输出 while(1);}(3)利用上个实验中的通讯软件超级终端来将生成的文件放到嵌入式开发平台中。(4)重启实验台即可看到LCD上显示的“Hello world!” 2.6 实验过程与分析

新建工程,然后将所需的工程文件加载打工程目录下,编译生成system.bin文件,将文件导入到实验台中,然后重启实验台,即可得到实验结果。

2.7 实验结果总结

超级终端输出一些相对应的代码的执行结果。熟悉了ADS1.2 开发环境以及学会了ARM 仿真器的基本使用。使用ADS 编译、下载、调试并跟踪一段已有的程序,并大致了解了嵌入式开发的基本思想和过程。

2.8 心得体会

通过此次实验,我对于嵌入式开发的基本思想有了一定的了解,嵌入式开发采用的是交叉编译环境,所以在一些方面会有所限制。对于初学者来说,通过一两次实验结果的演示就能够对实验台有深入的了解不可能的,所以在后续的实验中,我要好好努力,认真做好课程实验为后续的课程设计实验打下基础。

3.实验三

3.1 实验名称

键盘及LED实验

3.2 实验目的

1.学习键盘及LED 驱动原理。

2.掌握ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驱动17键的键盘和8个共阴极LED。

3.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开

环境、仿真器驱动程序、超级终端通讯程序。

3.4 实验内容及要求

编写出一段程序,要求能在LED上显示出小键盘上按下的4位数字。

3.5 实验设计与实验步骤

1.新建工程,将“Exp3 键盘及LED 驱动实验”中的文件添加到工程。2.定义ZLG7289 寄存器(ZLG7289.h)。3.编写ZLG7289 驱动函数(ZLG7289.c)。4.定义键盘映射表:(Keyboard16.c)。5.定义键值读取函数。

6.编写主函数,将按键值在数码管上显示。

3.6 实验过程与分析

此次实验中,我们根据已有实验,进行调试,查看程序的运行效果。根据效果,我们又回到实验代码中,然后对代码进行深入的研究,查看每部分功能所对应的代码,通过不断的调试编译,我们最终对该实验用到的代码有了更深的认识。从而能够按照要求,完成我们自己实验。

3.7 实验结果总结

通过小键盘的按键,键值可以在LED上显示出来。并学习了键盘及LED 驱动原理以及掌握了ZLG7289芯片串行接口的使用方法,用ZLG7289芯片驱动17键的键盘和8个共阴极LED。

3.8 心得体会

在这次实验中让我对嵌入式的实验箱有了进一步的认识,并且进一步了解的ARM实验的原理和实验情况,能够对源代码进行正确了理解。并且能修改这些源代码能够使其工作在自己的预期的工作状态和输出自己想要的结果

4.实验四

4.1 实验名称

电机转动控制及中断实验

4.2 实验目的

1.熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置。

2.编程实现ARM系统的PWM输出和I/O输出,前者用于控制直流电机,后者用于控制步进电机。

3.了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。

4.了解44B0处理器上中断的应用。

5.学习在44B0处理器上中断的应用。

6.进一步熟悉平台外围硬件及其驱动程序的编写。

4.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

4.4 实验内容及要求

1.编程实现ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其转动方式。

2.编程实现ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。

3.通过键盘控制直流电机与步进电机的切换。4.设置并启动定时器。

5.设置中断,编写定时器中断服务程序,对中断次数进行计数并在LED上显示结果。

4.5 实验设计与实验步骤

1.添加并打开工程。

2.进行直流电机初始化设置和代码编写。3.进行步进电机初始化设置和代码编写。

4.对Timer3编程,编写定时器中断服务程序,完成对中断次数的计数。5.编写LED计数显示函数,使LED能正确计数并显示0-9999。6.编写中断初始化函数和中断响应函数。7.终端下载测试。

4.6 实验过程与分析

1.对直流电机进行编程和测试,掌握转速和旋转方向的设定方法。2.对步进电机进行编程和测试,掌握ARM的四路I/O通道,实现环形脉冲分配用于控制步进电机的转动,通过A/D旋钮控制步进电机的转角。

3.对主函数进行编程,用键盘响应直流电机与步进电机的切换控制。

4.掌握中断相关语句的应用,弄清定义的中断向量、中断向量号,编写中断响应函数,并完成中断响应控制。

4.7 实验结果总结

实现了直流电机与步进电机的基本设置和控制,可以通过键盘控制电机之间的切换。完成了中断的响应和定时中断。

在通过本次实验,我初步了解的实验的目的所在,并且利用所给的源代码能够,调试出所预期的结果,而且能够根据已给的源代码修改得到所需的结果。

4.8 心得体会

通过本次实验,掌握了电机工作原理,了解了中断的意义和实现方法,实现了简单了中

断处理程序,更加了解了中断的意义。

5.实验五

5.1 实验名称

LCD驱动控制实验及触摸屏驱动实验

5.2 实验目的

1.了解触摸屏的基本概念与原理。

2.理解触摸屏与LCD的关系。3.编程实现对触摸屏的控制。

5.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

5.4 实验内容及要求

1.了解触摸屏基本原理,理解对触摸屏进行输出标定、与LCD显示器配合的过程。2.通过编程实现触摸两点自动在两点间划直线。3.通过编程实现在触摸屏上动态画出曲线。

5.5 实验设计与实验步骤

1.添加并打开工程。

2.在头文件中定义宏和常量及驱动函数。3.校准触摸屏坐标,进行坐标转换。4.实现触屏取点并显示功能。5.实现两点间自动划线功能。6.实现触摸屏动态划线功能。

5.6 实验过程与分析

1.在定义触屏响应功能的函数中对点击触屏进行响应函数的修改,在其中添加修改点颜色的函数,修改得到的触摸点的颜色,并显示在LCD上。

2.获取第一个点坐标并储存,获取第二个点坐标并储存,编写划线函数,取得两点间直线上所有点的坐标,并对其改变颜色,显示在LCD上,即完成划直线功能。

3.将划线函数应用到响应触屏移动消息的函数下,即可对连续获得的触摸坐标进行连续的画短直线,连接成曲线,完成动态划线功能。

5.7 实验结果总结

了解了触摸屏响应动作消息的函数的工作原理,通过修改实现了触摸屏响应不同动作进行画点、划线、动态划线的功能。

5.8 心得体会

通过本次实验,使我了解了怎么在一块嵌入式实验箱 通过编程控制实验箱上得硬件,比如在本次实验中的控制LCD屏幕就是,在屏幕上点击,然后得到在LCD屏上点击的位置。本次实验初步完成了实验结果。

6.实验六

6.1 实验名称

UCOS-Ⅱ在ARM微处理器上的裁剪

6.2 实验目的

1.了解UCOS-Ⅱ内核的主要结构。

2.掌握UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法。3.学习如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪。

4.通过对UCOS-Ⅱ配置文件(OS_CFG.H)中相关的配置常量进行设置,实现对UCOS-Ⅱ的裁剪。

6.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

6.4 实验内容及要求

对UCOS-Ⅱ内核进行裁剪并移植到ARM7微处理器上。

6.5 实验设计与实验步骤

编辑OS_CFG.H文件。OS_CFG.H文件中的内容可分为两大类:服务功能的配置和数据结构的配置。

一.服务功能的配置:

根据程序中的实际情况,保留自己要用的系统服务功能,删除自己不需要的服务功能。进行合理配置后,是我们自己系统的目标代码比较紧凑,从而降低了对程序代码存储空间的要求。如果代码存储空间足够大的话,那就将全部系统服务功能全部配置为1。不需要考虑功能裁剪。

二.数据结构功能的配置: 与任务有关的数据结构 1.OS_MAX_TASKS 作用:设置用户程序中可以使用的最多任务数。说明:该值不能超过62.举例: 若程序中用到了三个任务,则该值的最小值 2.OS_LOWEST_PRIO 作用:设置程序中最低任务的优先级。

说明: 设定该值可以节省操作系统使用RAM的空间。任务的最低优先级和最大任务数是没有直接关系的。

6.6 实验过程与分析

按照实验指导书上的步骤进行,得到了要求的系统。

6.7 实验结果总结

按照要求进行了裁剪,得到了满足需要又紧凑的应用软件系统。

6.8 心得体会

了解了UCOS-Ⅱ内核的主要结构,掌握了UCOS-Ⅱ裁剪的基本原理与嵌入式编程实现方法,学会了如何根据具体情况对UCOS-Ⅱ操作系统进行裁剪

7.实验七

7.1 实验名称

ucos-II移植实验

7.2 实验目的

1.了解UCOS-Ⅱ内核的主要结构。

2.掌握将UCOS-Ⅱ内核移植到ARM7处理器上的基本方法。

7.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

7.4 实验内容及要求

1.将UCOS-Ⅱ内核进行移植到ARM7微处理器上。

2.编写两个简单任务,在超级终端上观察两个任务的切换。

7.5 实验设计与实验步骤

1.该实验的文件分为两类,其一是STARTUP 目录下的系统初始化、配置等文件,其二是uCOS-II 的全部源码,arch 目录下的3 个文件是和处理器架构相关的。

2.设置os_cpu.h 中与处理器和编译器相关的代码

3.用C 语言编写6 个操作系统相关的函数(OS_CPU_C.C)4.用汇编语言编写4 个与处理器相关的函数(OS_CPU.ASM)5.编写一个简单的多任务程序来测试一下移植是否成功。

为了使 uCOS-II 可以正常运行,除了上述必须的移植工作外,硬件初始化和配置文件也是必须的。STARTUP 目录下的文件还包括中断处理,时钟,串口通信等基本功能函数。在文件 main.c 中给出了应用程序的基本框架,包括初始化和多任务的创建,启动等。任务

创建方法如下:

①在程序开头定义任务堆栈,任务函数声明和任务优先级 ②在main()函数中调用OSStart()函数之前用下列语句创建任务 ③编写任务函数内容

6.编译并下载移植后的uCOS-II 所有的源代码都准备好后就可以进行编译了。在ADS 环境下需要设置工程的访问路径。从菜单Edit | Debug Settings 进入设置对话框,在Target | Access Paths 中选择User Paths 并选上Always search user paths。然后点Add 按钮添加路径ucos-ii 和arch。这主要是设置编译器处理文件包含时的搜索范围。按照实验一的方法可以对编译后的代码进行调试或下载到平台的电子硬盘中。这个实验从结构上看和其他的实验没有多大区别,同样生成可执行文件system.bin。可以在平台BIOS中激活电子硬盘,然后把system.bin 拷贝进去,重启平台,然后在超级终端上观察结果。

7.6 实验过程与分析

操作系统相关的函数:(1)OSTaskStkInit OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。因此,堆栈看起来就像刚发生过中断并将所有的寄存器保存到堆栈中的情形一样。图12A-2 显示了OSTaskStkInt()放到正被建立的任务堆栈中的东西。这里我们定义了堆栈是从上往下 长的。在用户建立任务的时候,用户传递任务的地址,pdata 指针,任务的堆栈栈顶和任务的优先级给OSTaskCreate()和OSTaskCreateExt()。一旦用户初始化了堆栈,OSTaskStkInit()就需要返回堆栈指针所指的地址。OSTaskCreate()和OSTaskCreateExt()会获得该地址并将它保存到任务控制块(OS_TCB)中。

(2)OSTaskCreateHook 当用OSTaskCreate()和OSTaskCreateExt()建立任务的时候就会调用OSTaskCreateHook()。该函数允许用户或使用移植实例的用户扩展uCOS-II 功能。当uCOS-II 设置完了自己的内部结构后,会在调用任务调度程序之前调用OSTaskCreateHook()。该函数被调用的时候中断是禁止的。因此用户应尽量减少该函数中的代码以缩短中断的响应时间。当 OSTaskCreateHook()被调用的时候,它会收到指向已建立任务的OS_TCB 的指针,这 样它就可以访问所有的结构成员了。函数原型:void OSTaskCreateHook(OS_TCB *ptcb)

(3)OSTaskDelHook 当任务被删除的时候就会调用OSTaskDelHook()。该函数在把任务从uCOS-II 的内部任 务链表中解开之前被调用。当OSTaskDelHook()被调用的时候,它会收到指向正被删除任务 的OS_TCB 的指针,这样它就可以访问所有的结构成员了。OSTaskDelHook()可以来检验TCB扩展是否被建立(一个非空指针)并进行一些清除操作。函数原型:void OSTaskDelHook(OS_TCB *ptcb)(4)OSTaskSwHook 当发生任务切换的时候就会调用OSTaskSwHook()。OSTaskSwHook()可以直接访问 OSTCBCur 和OSTCBHighRdy,因为它们是全局变量。OSTCBCur 指向被切换出去的任务 OS_TCB,而OSTCBHighRdy 指向新任务OS_TCB。注意在调用OSTaskSwHook()期间中断 一直是被禁止的。因此用户应尽量减少该函数中的代码以缩短中断的响应时间。函数原型:void OSTaskSwHook(void)

(5)OSTaskStatHook OSTaskStatHook()每秒钟都会被OSTaskStat()调用一次。用户可以用OSTaskStatHook()

来扩展统计功能。例如,用户可以保持并显示每个任务的执行时间,每个任务所用的CPU 份额,以及每个任务执行的频率等。函数原型:void OSTaskStatHook(void)(6)OSTimeTickHook OSTimeTickHook()在每个时钟节拍都会被OSTaskTick()调用。实际上OSTimeTickHook()是在节拍被uCOS-II 真正处理,并通知用户的移植实例或应用程序之前被调用的。函数原型:void OSTimeTickHook(void)

7.7 实验结果总结

在超级终端上输出轮流交替run task1和run task2,表明系统正在不断交替运行2个任务。

7.8 心得体会

在这个实验中我们初步了解和测试了实验的内容和源代码实验结果基本上符合预期的要求。了解了µC/OS-II 内核的主要结构和ARM7处理器结构,掌握了将µC/OS-II 内核移植到ARM 7 处理器上的基本原理与嵌入式编程实现方法。

8.实验八

8.1 实验名称

各接口模块相互衔接综合实验

8.2 实验目的

利用前7次实验所学的知识,综合设计一个至少含有5个模块的实验。

8.3 实验环境

硬件:ARM 嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentium100 以 上、串口线。

软件:PC 机操作系统win98、Win2000 或WinXP、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。

8.4 实验内容及要求

1.回顾串口、键盘、LED接口、A/D、电机转动、定时器中断、LCD接口及触摸屏驱动控制接口模块驱动设计及开发方法。

2.综合应用以上全部或者部分模块,实现一个嵌入式综合应用系统,要求至少5个模块。

3.尽量使综合应用具有合理功能。

8.5 实验设计与实验步骤

1.新建工程,添加所需的文件。

2.编写计算器的计算程序caculator.c以及caculator.h文件。3.编写音乐播放文件play.c以及play.h文件。

4.修改键盘映射表让键盘上的数字与LCD与LED屏幕上显示的数字相对应。5.对输出在LCD屏幕上的显示结构进行设计

6.进行裁剪和移植功能设计和完成。编译生成system.bin文件,将文件拷贝至实验台内,重启实验台即可看到实验效果

8.6 实验过程与分析

1.完成10以内的加减乘除的计算功能,通过键盘输入,可在LCD屏幕上显示输入的表达式以及得到的输出结果。如“2+3=5”。

2.按任务切换键,实现任务的切换。3.任务被切换到播放音乐的任务中去。

4.任务切换过程将会在串口的超级终端界面有所显示,同时我们设置的将LCD上显示的结果同步到超级终端上。实现串口通信。

5.利用到了直流电机,如果运算范围超出我们规定的运算范围,则电机转动,来提示错误。

6.实现裁剪与移植功能。

8.7 实验结果总结

在这次实验中,我们利用前面所学习的知识,综合利用在此次实验中,我们利用了前面好所学知识中的6个模块,分别是串口通讯,键盘控制,LED与LCD的输出,电机控制,以及裁剪与移植的功能。通过这些功能的结合,我们实现自己所设计的实验的功能。

8.8 心得体会

在此次实验中,我们遇到了一些问题但是过程中遇到了不少问题,说明对实验原理和语句编写还不是很熟悉。总的来说,通过这段时间的训练,我也学会了不少东西,了解了ARM的基本结构,功能等。

9.实验总结与心得体会

通过这次为期一周的嵌入式课程实验,我对于嵌入式有了更加深刻的了解与认识。我是第一次接触嵌入式,以前对于嵌入式的知识了解甚少,但是通过此次实验,我不仅了解了嵌入式,也学会了许多关于嵌入式方面的知识。

通过前面的基础实验,我们对于ARM环境有了更深的了解,掌握了博创平台的使用方法,例如如何使用小键盘,如何使用LCD、LED屏幕,如何控制终端,如何进行多任务之间的切换等等。通过这几次的基础课程实验,我们最后出了计算器,能够实现10以内的加减乘除,在此基础上我们利用多任务,实现播放音乐与计算的切换,还利用点击的转动来提示运算过程中出现的问题。

浅析计算机嵌入式操作系统 篇7

它以计算机技术为基础, 应用为中心, 软硬件都可以剪裁, 适用于各种应用系统。它没有统一的外观, 不以独立的物理形态出现, 它的部件根据主体设备和应用的需要嵌入在设备内部, 完成运算、处理、存储及控制的功能。为了提高执行速度和系统可靠性。

1 嵌入式系统的架构

嵌入式系统通常由嵌入式微处理器、外围硬件设备、嵌入式系统以及用户应用软件等组成。

从体系结构上看, 嵌入式系统的构架一般包括了嵌入式处理器、支撑硬件、嵌入式软件这三部分。

嵌入式处理器和一些外围设备构成硬件平台。嵌入式处理器通常是单片机或微控制器。嵌入式应用程序支撑软件平台。嵌入式软件包括支撑硬件的驱动程序、操作系统、支撑软件等。

一般不同的系统需要设计不同的嵌入式应用程序, 该程序利用操作系统完成特定功能的嵌入式应用, 都运行于操作系统之上。

2 嵌入式的系统的分类

实时嵌入系统是为执行特定功能而设计的, 在实时系统中, 如果系统在指定的时间内未能实现某个确定的任务, 则系统被称为硬实时系统。而在软实时系统中, 虽然响应时间同样重要, 但是超时却不会导致致命错误。当前最常用的嵌入式操作系统可分为:商用系统、专用系统、开放系统。

(1) 商用嵌入式操作系统。

商用嵌入式操作系统功能较强大, 辅助工具较齐全, 可应用的范围较广, 系统资源相对有限, 应用于许多的领域。例:Wircro Soft的Windows CE、中科院的Hopen等。

(2) 专用嵌入式操作系统。

专用嵌入式操作系统一般对用户不公开, 它是一些专业公司针对该公司的产品所特制的嵌入式操作系统。功能相对较弱, 但具有较强的针对性, 比普通的商用嵌入式操作系统更加安全可靠。

(3) 开放嵌入式操作系统。

开放嵌入式操作系统是近年来迅速发展的一类操作系统。但开放嵌入式操作系统的功能简单、技术支持以及系统的稳定性也相对较差, 对实时任务有很强的支持能力, 能完成多任务并且有较短的, 因此对应用系统开发者提出了较高的要求。

3 嵌入式系统的特点

(1) 系统内核小。

嵌入式系统大多数是应用于小型的电子装置, 系统资源是相对有限的, 内核要相对小于传统的操作系统。

(2) 强实时性。

系统和硬件的结合非常紧密, 就必须使用多任务的操作系统。嵌入式系统可以没有操作系统直接在芯片上运行;一般要针对硬件进行系统的移植, 即使在同一品牌产品中也需要根据系统硬件的变化和增减不断进行修改。

(3) 专用性强。

嵌入式系统的个性化很强, 一般没有系统软件和应用软件的明显区分, 不要求其功能设计及实现上过于复杂, 软件系统和硬件的结合非常紧密, 即使在同一系列产品中也需要根据系统硬件的变化不断的进行修改。

(4) 统一的接口。

嵌入式应用软件的设计者提供统一的服务接口, 就必须约定嵌入式系统提供的接口, 软件要求固态存储, 以提高速度;要求高质量和高可靠性。

(5) 操作简便、易学。

嵌入式操作系统所提供的Gu I图形界面, 在这些系统中, 计算机用于总体控制和监视, 而不是对单个设备直接控制。

(6) 网络功能强大。

嵌入式操作系统对TCP/IP等协议都支持, 网络功能很强大为各种移动的计算设备预留接口。

(7) 强稳定性。

嵌入式操作系统运行时就不再要求人进行过多的干预, 在这种情况下, 对系统管理员提出了很高的要求。嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。

(8) 固化代码。

在嵌入式系统和具体应用有机地结合在一起, 所以EOS的文件管理功能也较容易被拆卸。

4 嵌入式系统的发展现状与趋势

嵌入式系统的兴起是从1971年以第一个微处理器4004开始的, 而今微处理器蓬勃发展, 正在逐渐地改善着人们的生活。嵌入式系统正从研究的领域向实际的应用领域的发展, 出现了各种嵌入式的数码产品。

未来的嵌入式系统需要提供更强大的网络服务。要求配备标准的一种或多种网络通信接口, 满足小型化、低成本、低功耗的优点。选用最佳的编程模型和不断的改进算法, 如JAVA编程模式、优化编译器性能等。同时可以满足自然的人机交互界面, 如手写文字输入、短消息语音发布、语音识别、语音拨号上网等功能。随着Internet技术的成熟、带宽的提高, 嵌入式应用的平台也会更加地完善。

5 嵌入式系统的实现

(1) 主机、目标机的体系结构。

主机、目标机体系结构是把开发工具放在主机上, 操作系统的核心模块放在目标机上, 操作系统支持跟踪调试, 在目标机上对操作系统及应用软件进行运行。可扩展的处理器结构, 以能最迅速地开发出满足应用的最高性能的嵌入式微处理器。

(2) 划分模块。

在设计嵌入式操作系统时, 应该充分的考虑到系统的功能和结构的划分, 增加其适用性和灵活性。当前, 增强操作系统的模块是嵌入式操作系统发展的一个总趋势。

(3) 充分利用现有资源。

由于软件技术的高度发达, 为了减少对操作系统开发的工作量和能源的消耗, 可充分利用现有的资源进行设计。嵌入式微处理器必须功耗很低, 是用于便携式的无线及移动的计算和通信设备中靠电池供电嵌入式系统。

(4) 制定API标准。

给用户提供标准的、实用的应用程序接口, 嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。

6 结语

社会经济的迅速发展, 嵌入式信息技术凭借其独特的优点发展迅速, 会得到更多的重视, 随着它的技术进步, 会带来巨大的社会效益, 对加快社会的进步, 加强信息交流有着十分重要的作用, 它也在影响着人类的生活。

摘要:随着社会的不断发展, 计算机和网络的应用正全面渗透到日常生活的各个方面, 嵌入式系统迅速的发展成一门庞大的学科。目前, 对计算机嵌入式实时操作系统的研究及分析, 已成为一种必须解决的重要课题。

关键词:计算机,嵌入式操作系统,嵌入式应用

参考文献

[1]仲姚秀.计算机嵌入式web server平台设计[J].科技促进发展, 2009.

[2]桑楠.嵌入式系统原理及应用开发技术[J].北京航空航天大学出版社, 2002

[3]陈丹桂.嵌入式系统综述[J].科技经济市场, 2007 (4) .

[4]黄昆.细看嵌入式操作系统[J].中国计算机用户, 2006 (36) .

嵌入式系统在温控系统中的应用 篇8

1.前言

温度作为一个基本物理量,它是一个与人们的生活、生产密切相关的重要物理量。生活和工业生产过程中温度作为一种常用的主要被控参数,我们需要对温度参数进行检测并利用该参数进行自动控制。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此单片机对温度的控制问题是一个工业生产中经常会遇到的问题。

2.国内外发展现状

目前国内外的温度控制方式越来越趋向于微型化和智能化,温度测量首先是由温度传感器来实现的。测温仪器由温度传感器和信号处理两部分组成。随着工业生产效率的不断提高,自动化水平与范围也不断扩大,因而对温度检测技术的要求也愈来愈高,一般可以归纳以下几方面。

(1)扩展检测范围 现在工业上通用的温度检测范围为-200-3000℃,而今后要求能测量超高温与超低温。尤其是液化气体的极低温度检测更为迫切,如10K以下的温度检测是当前重点研究课题。

(2)扩大测温对象 温度检测技术将会由点测温发展到线、面,甚至立体的测量。应用范围己经从土业领域延伸到环境保护、家用电器、汽车工业及航天工业领域。

(3)发展新型产品 利用以前的检测技术生产出适应于不同场合、不同工况要求的新型产品,以满足用户需要。同时利用新的检测技术制造出新的产品。

(4)适应特殊环境下的测温 对许多场合中的温度检测器有特殊要求,如防硫、防爆、耐磨等性能要求;又如移动物体和高速旋转物体的测温、钢水的连续测温、火焰温度检测等。

(5)显示数字化 温度仪表向数字化方向发展。其最大优点是直观、无读数误差、分辨率高、测量误差小,因而有广阔的销售市场。

(6)标定自动化 应用计算机技术,快速、准确、自动地标定温度检测器。根据分析,由单片机组成的温控系统,通过在单片机外部添加各种接口电路,可构成单片机最小系统,用以实现对温度控制对象的温度的显示和控制。同时也能根据实际情况实现数据处理、报警,对各个参数以一定的周期进行检查和测量,检测的结果经处理后再进行显示和报警,以提醒操作人员注意或直接用于生产控制。

3.应用情况

嵌入式温控系统现在应用非常广泛,可以说深入到了生活的方方面面,如蔬菜大棚智能温度控制系统、贮液容器温控系统、汽车空调温控系统、电加热炉温度控制系统等。

(1)蔬菜大棚智能温度控制系统 冬季塑料蔬菜大棚最重要的一个管理因素是温度控制。温度过低,蔬菜会冻死或停止生长,所以要控制温度在蔬菜适宜的范围内。如果仅靠人工控制既耗费人力、物力,又容易发生差错。为此设计智能化温控系统,控制蔬菜大棚温度,适应生产需求。蔬菜大棚智能温度控制系统的研制水到渠成。

(2)贮液容器温控系统 贮液容器溫控系统中以贮液容器温度为被控参数,蒸汽流量为控制参数,输入贮液容器冷物料的初温为前馈控制,构成前馈一反馈控制系统,从而达到控制贮液容器温度,满足工艺要求的目的。

(3)汽车空调温控系统 现代化的汽车空调就是能将汽车室内空间的环境调整到对人体最适宜的状态,创造良好的车内环境,以提高司机的工作效率和保护乘员的身体健康。目前高档轿车中用各种微处理器完成各种控制,汽车空调温控系统技术也有了飞速的发展。

(4)电加热炉温度控制系统 电加热炉随着科学技术的发展和工业生产水平的提高,已经在冶金、化工、机械等各类工业控制中得到了广泛应用,并且在国民经济中占有举足轻重的地位。嵌入式电加热炉温度控制系统现在正被广泛地使用。

4.技术情况分析

下面对使用80C51和18B20的系统进行分析:

(1)硬件 硬件主要包括中央处理器80C51、温度传感器18B20、键盘、LED等。

(2)软件 系统软件设计时可以采用模块化的结构和层次设计思想,不仅方便了设计和使用,也有利于以后系统的扩展和升级。系统软件可以包括主程序、数据采集处理模块,可以使用PID算法,可以包括声光报警模块、通讯模块等。

从以上分析不难看出,使用单片机进行温控系统的开发已具有成熟的技术。

5.趋势

随着微电子技术的不断发展,集成了CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器甚至A/D、D/A转换器等电路在一块芯片上的超大规模集成电路芯片出现了。以单片机为主体,将计算机技术与测量控制技术结合在一起,又组成了所谓的“智能化测量控制系统”,也就是智能仪器。

与传统仪器仪表相比,智能仪器具有以下功能特点:

(1)操作自动化 仪器的整个测量过程如键盘扫描、量程选择、开关启动闭合、数据的采集、传输与处理以及显示打印等都用单片机或微控制器来控制操作,实现测量过程的全部自动化。

(2)具有自测功能 包括自动调零、自动故障与状态检验、自动校准、自诊断及量程自动转换等。

(3)具有数据处理功能 具有数据处理功能,这是智能仪器的主要优点之一。智能仪器由于采用了单片机或微控制器,使得许多原来用硬件逻辑难以解决或根本无法解决的问题,现在可以用软件非常灵活地加以解决。

(4)具有友好的人机对话能力 智能仪器使用键盘代替传统仪器中的切换开关,操作人员只需通过键盘输入命令,就能实现某种测量功能。与此同时,智能仪器还通过显示屏将仪器的运行情况、工作状态以及对测量数据的处理结果及时告诉操作人员,使仪器的操作更加方便直观。

(5)具有可程控操作能力 一般智能仪器都配有GPIB、RS232C、RS485等标准的通信接口,可以很方便地与PC机和其他仪器一起组成用户所需要的多种功能的自动测量系统,来完成更复杂的测试任务。

随着嵌入式在温控系统的应用,温控系统也具有了操作自动化功能、自测功能、数据处理、人机对话能力、可程控能力等功能,随着嵌入式技术的不断发展,温控系统应用的领域会越来越大,温控系统也会向微型化、高度集成化、控制简单化等方向发展。

6.结论

嵌入式温控系统具有良好的动态性能,控制精度高,控制效果稳定、良好,可以满足各个行业的不同要求。随着智能温控系统的不断普及和发展,基于高性能处理器的嵌入式温控系统将会有更加广阔的用武之地。

上一篇:关于600字的优秀高中作文下一篇:水泥项目申请报告