文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式操作系统实验报告

嵌入式操作系统实验报告

嵌入式操作系统实验报告
嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告

姓名:安磊

班级:计科0901 学号: 0909090310

指导老师:宋虹

目录

课程设计内容 ----------------------------------- 3

uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6

文件系统设计的原则 ------------------------------6

文件系统的层次结构和功能模块 ---------------------6

文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容

在uC/OS操作系统中增加一个简单的文件系统。

要求如下:

(1)熟悉并分析uc/os操作系统

(2)设计并实现一个简单的文件系统

(3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统

(4)编写测试代码,测试对文件的相关操作:建立,读写等

课程设计目的

操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。

本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。

I.uC/OS操作系统简介

μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。

μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。

严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全

可以由用户自己根据需要分别实现。

uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。

uC/OS操作系统的组成

μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

每个部分具体作用

1) 核心部分(OSCore.c)

是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。

2) 任务处理部分(OSTask.c)

任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS -II 是以任务为基本单位调度的,所以这部分内容也相当重要。

3) 时钟部分(OSTime.c)

μC/OS -II 中的最小时钟单位是timetick (时钟节拍)。任务延时等操作是在这里完成的。

4) 任务同步和通信部分

为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。

5) 与CPU 的接口部分

是指μC/OS -II

针对所使用的CPU 的移植部分。由于μC/OS -II 是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU 的具体内容和要求作相应的移植。这部分内容由于牵涉到SP 等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。

uC/OS 操作系统功能作用

uc/os

核心

任务处理

时间管理

任务通信和同步

cpu 的移植

uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。

uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。

系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,该任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,该任务负责统计当前cpu

的利用率。

时间管理

uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时间频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。

uC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间函数。

内存管理

在ANSI C中是使用malloc和free两个函数来动态分配和释放内存。但在嵌入式实时系统中,多次这样的操作会导致内存碎片,且由于内存管理算法的原因,malloc和free的执行时间也是不确定。

uC/OS-II中把连续的大块内存按分区管理。每个分区中包含整数个大小相同的内存块,但不同分区之间的内存块大小可以不同。用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。释放内存时将该块放回它以前所属的分区,这样能有效解决碎片问题,同时执行时间也是固定的。

任务间通信与同步

对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。uC/OS-II中提供了4种同步对象,分别是信号量,邮箱,消息队列和事件。所有这些同步对象都有创建,等待,发送,查询的接口用于实现进程间的通信和同步。

任务调度

uC/OS-II 采用的是可剥夺型实时多任务内核。可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。

uC/os-II的任务调度是完全基于任务优先级的抢占式调度,也就是最高优先级的任务,一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。为了简化系统设计,uC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标志了该任务本身

II.uC/OS文件系统的建立

uC/OS操作系统本身是没有自带文件系统的。但可由用户自行设计。

文件系统设计的原则:

1.简洁性

现有的比较完善的文件系统功能齐全、对系统资源要求较高,而我们所需要的这个嵌入式文件系统是嵌入式平台的一个中间件,要求简洁高效可靠。为此我们在设计过程中借鉴了MS-DOS的FAT16文件系统格式的目录形式进行文件管理,打开文件数据结构则采用了类似于UNIX系统文件表的方式,为每一个打开文件设置了一个数据结构指针FS_FILE,使得用户接口简洁明了。

2.多设备驱动支持

考虑到应用的广泛性和存储介质的多样性,要求我们在进行设计文件系统时必须考虑对多种存储介质的兼容性。整个系统采用模块化分层设计的原则和面向对象的实现方法,使得用户可以通过统一的顶层应用程序接口方便地对各种存储介质进行文件操作。利用本文件系统可以管理不同的存储介质,可以同时访问不同的硬件。

3.多操作系统支持

文件系统的开发是基于ucos ii,在设计开发过程中,考虑到以后对多操作系统的支持,OS 接口模块设计为动态可变,当文件系统应用于其它操作系统时,只需将OS 接口模块中的操作系统信息变为新的操作系统即可。

4.可靠性

由于嵌入式系统的数据资源的重要性,要求存储数据的物理介质必须具有很高的稳定性,可是我们知道一些人为或外在的因素可能会导致介质的损坏,从而造成数据的缺失,所以我们要尽可能提高文件系统可靠性。

文件系统的层次结构和功能模块

API层

中间转换层

介质驱动层

嵌入式文件系统由于功能和作用与普通桌面操作系统的文件系统不同,导致了二者在体系结构上具有很大的差异性。在普通桌面操作系统中,文件系统不仅要管理文件,提供文件系统调用API ,还要管理各种设备,支持对设备和文件操作的一致性。在嵌入式文件系统中,这种规则发生了很大的变化。在某些情况下,嵌入式系统可以针对特殊的目的来进行定制,对嵌入式操作系统的系统功能规整性、可伸缩性及其灵活性提出了更高的要求。

基于以上的考虑,我们采用了如上图所示的嵌入式文件系统体系结构,该结构定义的文件系统从上到下有三个层次:第一层为API 层、第二层为中间转换层、下层为介质驱动层。 API 层

API 层是文件系统和用户应用程序之间的接口,它有一个标准C 函数库,其中包含有诸如打开文件(FS_FOPEN )、写文件(FS_FWRITE

)等函数。本层的功能是将用户调用传送给中间转换层。这是整个系统设计的核心,也是嵌入式文件系统中用户唯一可见的部分—— POSIX 中文件系统的标准系统调用全部在该部分中得以实现。

中间转换层

中间转换层要为文件系统的实现提供与硬件无关的统一接口,是文件系统结构规整性的基础。中间转换层包含有文件系统子层及逻辑块子层,其中文件系统子层将文件操作解释到逻辑块子层,然后文件系统调用逻辑块子层并根据不同的设备定义出相应的设备驱动程序;逻辑块子层主要是同步对设备驱动程序的访问,向上提供友好界面。 介质驱动层

介质驱动层是访问硬件的最低端的程序,该程序的结构要能够便于实现对硬件的访问。本层的功能主要是完成对介质的访问。本层的重要任务就是提供统一的设备驱动程序接口。

根据文件系统的层次结构,可以将该文件系统分成四大功能块:API 接口模块、中间转换模块、磁盘分区模块、设备驱动模块。如上图:

API 接口模块

主要完成文件的基本操作,包含有文件的生成、删除、打开、关闭、文件读、文件写等。 中间转换模块

主要完成对存取权限的检查、介质的选择、逻辑到物理的转换。 磁盘分区模块

主要完成对几个主要数据结构的初始化,设置文件系统的总体分区信息以及每个分区的几部分:空闲块管理、引导区、FAT 区、文件存储区等。 设备驱动模块

完成存储介质的驱动程序,包含有一个驱动程序函数表和介质读、介质写、检查状态、执行特定命令等驱动程序。

文件系统的详细设计

文件系统组织方式

文件系统逻辑组织为流式文件,物理组织为连续文件。用户对于流式文件的访问是以字节为单位的。每个文件的内部有一个读写指针,通过系统调用可以将该指针固定到文件的某一个位置处,以后的读写系统调用将从该指针所确定的位置处开始。而用于保存文件的物理设备是划分为块页的,文件的物理结构就是要确定如何将字节保存在存储介质中。所以说文件的物理组织形式对于文件系统的性能有着较为直接的影响,所以我们在进行文件的物理组织选择时比较慎重。结合我们系统的实际应用情况,我们决定文件的物理组织方式采用顺序结构,这是因为我们的嵌入式应用环境要求实时性高,采集到的数据一旦以文件的方式存储在介质上很少进行改动,也即文件的长度变化不大,所以我们将逻辑文件的信息存放在外存的连续编号的物理块中。

文件和文件控制块FCB

为了实现对于文件的管理,系统需要掌握一组有关文件的描述信息,例如文件的名称、文件的地址、文件的建立曰期等等,这些信息组合在一起构成一个数据结构,在这里我们称之为文件控制块FCB(File Control Block)。FCB是文件存在的标志,其中记录着系统对于文件进行管理所需要的全部信息,FCB所包含内容如图2所示。每一个文件都有一个文件控制块,它们被保存于外存空间,当系统欲访问一个文件时,应当能够根据文件名字找到它所对应的文件控制块,然后根据文件控制块中的文件位置信息找到该文件具体所存放的区域。

文件描述符

文件描述符由基本文件名和扩展文件名两部分构成,二者以圆点分开。文件名由1-8个字符构成,扩展名由1-3个字符构成。分别占据FCB中的00H- 07H和08H-0AH两部分。在FCB 中,文件名和扩展名是左对齐放置的,剩余部分填入空格码。当进行文件删除时,在文件目录记录项的第一字节中放入 E5H,表示该记录项是空项。从公平没有使用过的记录项的第一字节中写入的是00H,刚刚格式化的根文件目录或刚刚生成的子文件目录的未使用文件目录记录项的开头写入的均是00H。这个00H在文件进行检索时特别有用,主要是用来确定搜索到文件目录的什么区域就可以不用再继续搜索了。例如,当文件检索中没有00H时,必须对全文件目录区进行检索,而一旦遇到有00H的场合,检索便宣告结束,这样可以大大缩短检索文件的时间,提高了文件检索的效率。

对文件的主要操作

文件系统的功能是通过一系列对文件的操作实现的。为此,系统提供给用户一整套系统调用,用以完成创建、打开、读、写、关闭、删除文件等项工作。对应的函数分别为:FS_FOPEN ()、FS_REMOVE()、FS_FCLOSE()、FS_FREAD()和FS_FWRITE(),各函数均通过驱动模块来实现,具体的代码此处不在罗列。

文件的保护机制

由于文件系统保存着用户非常重要的信息,因而如何保护信息、防止未授权使用就是所有文件系统必须要解决的重要问题之一。但系统中的全部信息又不能完全成为私有,还必须进行文件共享,以提高资源的利用率和方便用户使用。

文件共享和保密是一个问题的两个方面。对文件的保护保密是由对文件的共享要求起的。在非共享环境中,不需要再做什么保护,实际上它已经是极端的完全保护情况;相反,另一种极端情况则是完成共享,而不做任何保护。这两种情况都缺乏实用意义,一般用法是有控制

的进行文件共享。保护机制通过限制文件的存取类型来实现受控制共享。允许或禁止对文件的存取受多种因素的限制,如用户的身份、文件本身的性质、对文件所要进行的存取类型等。常用的保护机制有命名、口令、存取控制、密码等,对文件的保护必须要根据实际需要和实现的可能性来选择合适的方法。由于本文件系统主要是以FAT文件系统为基础来进行设计的,所以在对文件进行保护和共享方面同样也有FAT文件系统所具有的不足,没有一套完整的文件保护机制来完成对文件的保护,安全特性只能通过共享权限来加以实现。

文件系统核心代码截图

各部分代码文件功能解释

api_dir.c

Purpose: 对文件系统的目录的各种操作,包括显示目录建立,删除等操作的函数

api_in.c

Purpose: FS_FRead()函数,从文件中读取数据

api_misc.c

Purpose: 对文件的各种的操作函数,打开文件,关闭文件,删除文件,文件系统初

始化

api.out_.c

Purpose: 向一个文件写入数据,FS_FWrite()函数

app.c:

Purpose:...主函数...1.向系统申请一段内存空间2.fs.c

app_cfg.c

Porpose:定义申请空间的程序的优先级(pid)

定义程序开始时的栈的大小

clibmisc.c

Purpose:由于该文件系统所用的c库文件并非c的运行库函数,而是自己的库函数包括字符串的复制,比较,测量长度,二进制与字符串的相互转化,

由src所指内存区域复制count个字节到dest所指内存区域.大小写转换函数等fs.c

Purpose:....文件操作测试函数.....

包括函数:向某个文件(*name)写(write_file)数据(*txt)

_dump_file(const char *name)利用文件系统读取一个文件

fs_api.h

Purpose:声明file_system的全局函数,定义各种宏

fs_cong.h

Propose:此文件包含该文件系统的所有设置

fs_dev.h

Purpose: 定义驱动器驱动的结构FS__device_type(名称,读取参数(id,块,缓冲区),

写入参数(id,块,缓冲区),设备控制函数)

fs_fsl.h

Purpose:定义文件系统层的结构FS__fsl_type

fs_info.c

Purpose:定义文件系统层功能表,设备驱动程序函数表,逻辑块层缓存,其中的_Fs_devinfo结构可以简述该文件系统是建立在何种设备之上的

fs_int.h

Purpose:定义内部参数,这些参数是在整个文件系统层的不同层均有使用

fs_os.h

Purpose:定义文件系统的系统层的函数声明(头文件)

fs_port.h

Purpose:体系结构定义了文件系统的依赖

这个头文件定义了几乎所有的基本的数据类型(INT8U等)和宏,该参数可以根据你的编译器

和cpu的种类而改变

fs_x_ucos_ii.c

Purpose:对文件句柄的上锁和解锁操作,对文件option的上锁和解锁操作对目录的句柄的上锁和解锁操作

/*filehandle是一个数字,在文件打开的时候由操作系统分配给一个文件。当访问文件的时候

操作系统使用内部的文件句柄,。一块特殊的区域的内存被预留给文件句柄,这个区域的大小决定了有多少

文件可以同时打开。在DOS和Windows,你可以设置最大数量的打开的文件*/

ide_x_hw.h

Purpose:Segger SED137XE 板的硬件层

是一个CF卡,在IDE模式P8.P9.P10.P7

os_cfg.h

Purpose:对系统的宏定义

*name:指向文件名的指针

myfile:文件的物理地址.myfile=FS_FOpen(name,"r");

int x:对应地址的字符 [x = FS_FRead(mybuffer,1,sizeof(mybuffer)-1,myfile)

FS_FClose(myfile);关闭文件

UCOS-II :ucos的源代码

UCOS-II-PORT:移植系统时需要修改的部分

III.课程设计感想

通过本次课程设计,使我对uC/OS操作系统有了更深入的理解。操作系统是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。

程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。再总体解决大的问题。这样做起来不仅有条理也使问题得到了轻松的解决。

在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!

对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!

通过这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。以后努力学好每门

专业课,让自己拥有更多的知识,才能解决更多的问题!

IV.附录

因为本次课程设计为小组合作完成。我只负责系统到硬件的代码编写。现附上代码如下:fs_dev.h

/*

**********************************************************************

* Micrium, Inc.

* 949 Crestview Circle

* Weston, FL 33327-1848

*

* uC/FS

*

* (c) Copyright 2002, Micrium, Inc.

* All rights reserved.

*

***********************************************************************

----------------------------------------------------------------------

File : fs_dev.h

Purpose : Define structures for Device Drivers

----------------------------------------------------------------------

Known problems or limitations with current version

----------------------------------------------------------------------

None.

---------------------------END-OF-HEADER------------------------------

*/

#ifndef _FS_DEV_H_

#define _FS_DEV_H_

/*********************************************************************

*

* Global data types

*

**********************************************************************

*/

typedefstruct {

FS_FARCHARPTR name;

int (*dev_status)(FS_u32 id);

int (*dev_read)(FS_u32 id, FS_u32 block, void *buffer);

int (*dev_write)(FS_u32 id, FS_u32 block, void *buffer);

int (*dev_ioctl)(FS_u32 id, FS_i32 cmd, FS_i32 aux, void *buffer);

} FS__device_type;

#endif

----------------------------------------------------------------------------------------- fs_info.h

/*

**********************************************************************

* Micrium, Inc.

* 949 Crestview Circle

* Weston, FL 33327-1848

*

* uC/FS

*

* (c) Copyright 2001 - 2003, Micrium, Inc.

* All rights reserved.

*

***********************************************************************

----------------------------------------------------------------------

File : fs_conf.c

Purpose : File system configurable global data

Unless you are going to add own device drivers, or you

would like to modify e.g. order in the device table, you

do not have to modify this file. Usually all configuration

can be made in fs_conf.h.

----------------------------------------------------------------------

Known problems or limitations with current version

----------------------------------------------------------------------

None.

---------------------------END-OF-HEADER------------------------------

*/

/********************************************************************* *

* #include Section

*

********************************************************************** */

#include "fs_port.h"

#include "fs_dev.h"

#include "fs_api.h"

#include "fs_fsl.h"

#include "fs_conf.h"

/********************************************************************* *

* Externals

*

********************************************************************** */

/********************************************************************* *

* File System Layer Function Tables

*/

/* FA T function table */

#ifdef FS_USE_FA T_FSL

externconst FS__fsl_type FS__fat_functable;

#endif /* FS_USE_FA T_FSL */

/********************************************************************* *

* Device Driver Function Tables

*

If you add an own device driver, you will have to add an external

for its function table here.

*/

#if FS_USE_RAMDISK_DRIVER

externconst FS__device_type FS__ramdevice_driver;

#endif /* FS_USE_RAMDISK_DRIVER */

/* WINDRIVE_DRIVER function table */

#if FS_USE_WINDRIVE_DRIVER

externconst FS__device_type FS__windrive_driver;

#endif /* FS_USE_WINDRIVE_DRIVER */

/* SMC_DRIVER function table */

#if FS_USE_SMC_DRIVER

externconst FS__device_type FS__smcdevice_driver;

#endif /* FS_USE_SMC_DRIVER */

/* MMC_DRIVER function table */

#if FS_USE_MMC_DRIVER

externconst FS__device_type FS__mmcdevice_driver;

#endif /* FS_USE_SMC_DRIVER */

//#if FS_USE_IDE_DRIVER

//extern const FS__device_type FS__idedevice_driver;

//#endif /* FS_USE_IDE_DRIVER */

#if FS_USE_FLASH_DRIVER

externconst FS__device_type FS__flashdevice_driver;

#endif /* FS_USE_FLASH_DRIVER */

/*********************************************************************

* Local variables

*

********************************************************************** */

/********************************************************************* *

* Logical Block Layer Cache

*

If FS_USE_LB_READCACHE is enabled, then the buffer definition

for each media is done here according to the settings in

fs_conf.h.

*/

#if FS_USE_LB_READCACHE

/*

RAMDISK cache settings.

There is no cache required for RAM.

*/

#define FS_CACHEINFO_RAMDISK_DRIVER 0,

/*

Windrive cache settings.

The driver does have its own cache. Therefore we never

use LB read cache for it.

*/

#define FS_CACHEINFO_WINDRIVE_DRIVER 0,

/*

There is no read cache required for flash.

*/

#define FS_CACHEINFO_FLASH_DRIVER 0,

/* SmartMedia cache settings */

#ifndef FS_SMC_CACHENUM

#define FS_SMC_CACHENUM 0

#endif

#if ((FS_SMC_CACHENUM) && (FS_USE_SMC_DRIVER))

static FS__CACHE_BUFFER _FS__SMC_Buffers[FS_SMC_MAXUNIT][FS_SMC_CACHENUM];

static FS__LB_CACHE _FS__SMC_Cache[FS_SMC_MAXUNIT] =

#if (FS_SMC_MAXUNIT==1)

{ {FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[0][0]} };

#elif (FS_SMC_MAXUNIT==2)

{ {FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[0][0]},

{FS_SMC_CACHENUM, 0, &_FS__SMC_Buffers[1][0]} };

#else

#error Please define _FS__SMC_Cache for desired number of units

#endif

#define FS_CACHEINFO_SMC_DRIVER &_FS__SMC_Cache[0],

#else

#define FS_CACHEINFO_SMC_DRIVER 0,

#endif

/* MMC/SD cache settings */

#ifndef FS_MMC_CACHENUM

#define FS_MMC_CACHENUM 0

#endif

static FS__CACHE_BUFFER _FS__MMC_Buffers[FS_MMC_MAXUNIT][FS_MMC_CACHENUM];

static FS__LB_CACHE _FS__MMC_Cache[FS_MMC_MAXUNIT] =

#if (FS_MMC_MAXUNIT==1)

{ {FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[0][0]} };

#elif (FS_MMC_MAXUNIT==2)

{ {FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[0][0]},

{FS_MMC_CACHENUM, 0, &_FS__MMC_Buffers[1][0]} };

#else

#error Please define _FS__MMC_Cache for desired number of units

#endif

#define FS_CACHEINFO_MMC_DRIVER &_FS__MMC_Cache[0],

#else

#define FS_CACHEINFO_MMC_DRIVER 0,

#endif

/* IDE cache settings */

#ifndef FS_IDE_CACHENUM

#define FS_IDE_CACHENUM 0

#endif

#if ((FS_IDE_CACHENUM) && (FS_USE_IDE_DRIVER))

static FS__CACHE_BUFFER _FS__IDE_Buffers[FS_IDE_MAXUNIT][FS_IDE_CACHENUM];

static FS__LB_CACHE _FS__IDE_Cache[FS_IDE_MAXUNIT] =

#if (FS_IDE_MAXUNIT==1)

{ {FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[0][0]} };

#elif (FS_IDE_MAXUNIT==2)

{ {FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[0][0]},

{FS_IDE_CACHENUM, 0, &_FS__IDE_Buffers[1][0]} };

嵌入式操作系统实验指导书1

嵌入式操作系统实验 实验一 Linux常用命令 一.实验目的 1. 熟悉VMware Workstation虚拟机的使用。 2. 熟悉ubuntu操作系统。 3. 掌握常用的Linux命令。 二.实验设备 硬件:PC机。 软件:VMware Workstation虚拟机、ubuntu操作系统。 三.实验内容 1.基于虚拟机的Linux操作系统的使用。 2.文件与目录相关命令的使用。 3.磁盘管理与维护命令的使用。 4.系统管理与设置命令的使用。 5.网络相关命令的使用。 6.压缩备份命令的使用。 四.实验步骤 1.基于虚拟机的Linux操作系统的使用 (1)启动VMware Workstation应用程序,启动windows以后,点击开始→程序→VMware→VMware Workstation,出现如图1所示界面。

图1 启动VMware Workstation (2)点击菜单File Open选择安装好的Linux虚拟机文件,或者直接点击Start this virtual machine启动Linux操作系统。 (3)启动系统后需要输入用户名和密码,如图2所示,这里用户名为root,密码为“123456”。 图2输入用户名和密码 (3)启动终端,成功进入系统后,选择应用程序->系统工具->终端,如图3所示。 图3 启动终端 (4)在终端中执行Linux命令,终端运行以后,就可以在这里输入Linux命令,并按回车键执行,如图4所示。

图4运行Linux命令 2.文件与目录相关命令的使用 理解12个常用的文件与目录相关命令的使用,完成如下练习。 (1)查询/bin目录,看一看有哪些常用的命令文件在该目录下:ll /bin (2)进入/tmp目录下,新建目录myshare: cd /tmp mkdir myshare ls -ld myshare/ (3)用pwd命令查看当前所在的目录 pwd (4)新建testfile文件 touch testfile ls -l (5)设置该文件的权限模式 chmod 755 testfile ls -l testfile (6)把该文件备份到/tmp/myshare目录下,并改名为testfile.bak。 cp testfile myshare/testfile.bak ls -l myshare/ (7)在/root目录下为该文件创建1个符号连接。 ln -s /tmp/testfile /root/testfile.ln ls -l /root/testfile.ln (8)搜索inittab文件中含有initdefault字符串的行。 cat /etc/inittab | grep initdefault 3.磁盘管理与维护命令的使用 理解2个磁盘管理与维护命令,完成如下练习。 (1)Linux下使用光盘步骤: ?确认光驱对应的设备文件:ll /dev/cdrom ?挂载光盘:mount -t iso9660 /dev/cdrom testdir ?查询挂载后的目录:ll /media/cdrom ?卸载光盘(umount testdir)umount /dev/cdrom (2)Linux下USB设备的使用 ?挂载U盘,看看系统认出的盘(或者使用#fdisk -l)。cat /proc/partitions

嵌入式习题答案

嵌入式习题答案Last revision on 21 December 2020

第一章习题答案 1.什么是嵌入式系统请列举几个常见的嵌入式系统。 答:根据国际电气和电子工程师协会(IEEE)的定义,嵌入式系统是控制、监视或者辅助设备、机器和生产线运行的装置(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。这主要是从产品的应用角度加以定义的,由此可以看出嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。 目前被我国科学家普遍认同的定义是:嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统。 常见的嵌入式系统:手机,DVD,路由器,核磁共振仪,全自动洗衣机。 2.嵌入式系统与通用计算机有哪些区别 答:(1) 以应用为中心;(2) 以计算机技术为基础(3) 软件和硬件可裁减(4) 对系统性能要求严格(5)软件的固件化(6)需要专用的开发工具 3.嵌入式系统的发展分为哪几个阶段 答:第一阶段:无操作系统的嵌入算法阶段。第二阶段:以嵌入式CPU为基础,以简单操作系统为核心的嵌入式系统。第三阶段:以嵌入式操作系统为标志的嵌入式系统。第四阶段:以基于Internet为标志的嵌入式系统。 4.请列举嵌入式系统的主要应用领域。 答:(1)工业控制领域(2)交通运输领域(3)消费电子产品(4)家电领域(5)通信领域(6)商业和金融领域(7)环境监测领域(8)医疗领域(9)建筑领域(10)军事国防领域(11)航天航空领域

三种常用的嵌入式操作系统分析与比较

三种常用的嵌入式操作系统分析与比较 摘要:提要三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同点及各自的适用范围。 1 嵌入式系统与嵌入式操作系统 1.1 嵌入式系统 嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。 嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。 1.2 嵌入式操作系统 嵌入式操作系统EOS (Embedded Operating System)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、调度作,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而方的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下特点: ①可装卸性。开放性、可伸缩性的体系结构。 ②强实时性。EOS实时性一般较强,可用于各种设备控制当中。 ③统一的接口。提供各种设备驱动接口。

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

ARM的十一种嵌入式操作系统

ARM的十一种嵌入式操作系统 ARM的十一种嵌入式操作系统 嵌入式LINUX 嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。Linux做嵌入式 的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费 的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常 完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提 供了包括十兆、百兆、千兆的以太网络,以及无线网络, TokenRing(令牌环网)、光纤甚至卫星的支持。 移植步骤:1.Bootloader的移植;2.嵌入式Linux操作系统内核 的移植;3.嵌入式Linux操作系统根文件系统的创建;4.电路板上外 设Linux驱动程序的编写。 WinCE WinCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设 备操作系统,它是精简的Windows95,WinCE的图形用户界面相当出色。WinCE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对于从掌上电脑到 专用的工业控制器的用户电子设备进行定制。操作系统的基本内核 需要至少200K的ROM。 一般来说,一个WinCE系统包括四层结构:应用程序、WinCE内 核映像、板级支持包(BSP)、硬件平台。而基本软件平台则主要由

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 :安磊 班级:计科0901 学号: 0909090310 指导老师:宋虹

目录 课程设计容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------ 6 文件系统的层次结构和功能模块 --------------------- 6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录 -------------------------------------------------- 12

课程设计容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统核,它仅仅包含了任务调度,任务管理,时间管理,存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时核,并在这个核之上提供最基本的系统服务,如信号量,,消息队列,存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

嵌入式系统课后答案马维华

第1章嵌入式系统概述 1,什么是嵌入式系统嵌入式系统的特点是什么 嵌入式系统概念: (1) IEEE对嵌入式系统的定义:用于控制,监视或者辅助操作机器和设备的装置. (2)一般定义:以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统. 嵌入式系统的特点: (1) 专用的计算机系统 (2) 必须满足环境要求 (3) 必须能满足对象系统的控制要求 (4) 是集成计算机技术与各行业应用的集成系统 (5) 具有较长的生命周期 (6) 软件固化在非易失性存储器中 (7) 必须能满足实时性要求 (8) 需要专用开发环境和开发工具 2,简单分析几种嵌入式操作系统的主要特点,包括嵌入式Linux,Windows CE,uCOS II 及VxWorks. (1)嵌入式Linux:有多个主流版本,根据应用需求,性能略有差别.μCLinux是Linux小型化后,适合于没有MMU的微处理器芯片而裁剪成的操作系统,μCLinux保持了传统Linux操作系统的主要特性,包括稳定,强大的网络和文件系统的支持,μCLinux裁剪了大量的Linux内核以缩小尺寸,适合像512KB RAM,1MB Flash这样小容量,低成本的嵌入式系统.RT_Linux即能兼容通常的Linux,又能保证强实时性. (2)Windows CE:开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用.WinCE开发难度远低于嵌入式Linux,实时性略低,常用于手机,PDA等手持设备中. (3)uCOS II:结构小巧,抢先式的实时嵌入式操作系统,具有执行效率高,占用空间小,可移植性强,实时性能好和可扩展性能等优点.主要用于小型嵌入式系统. (4) VxWorks: 集成开发环境为Tornado,Vxworks因出现稍早,实时性很强,并且内核可极微(最小8K),可靠性较高等.通常应用在通信设备等实时性要求较高的系统中. 第2章嵌入式处理器体系结构 1,具体说明ARM7TDMI的含义,其中的T,D,M,I分别代表什么 ARM7TDMI是ARM7处理器系列成员之一,采用V4T版本指令.T表示Thumb,该内核可从16位指令集切换到32位ARM指令集;D表示Debug,该内核中放置了用于调试的结构,支持片内Debug调试;M表示Multiplier,支持位乘法;I表示Embedded ICE ,内含嵌入式ICE宏单元,支持片上断点和观察点. 2,ARMV4及以上版本的CPSR的哪一位反映了处理器的状态若CPSR=0x000000090,分析系统状态.CPSR=0x000000090表示当前处理器工作于ARM状态,系统处于用户模式下. CPSR的BIT5(T)反映当前处理器工作于ARM状态或Thumb状态. 3,ARM有哪几个异常类型,为什么FIQ的服务程序地址要位于0x1C 在复位后,ARM处理器处于何种模式,何种状态 ARM的7种异常类型:复位RESET异常,未定义的指令UND异常,软件中断SWI异常,指令预取中止PABT异常,数据访问中止DABT异常,外部中断请求IRQ异常,快速中断请求FIQ 异常.在有快速中断发生时,CPU从0x1C处取出指令执行.ARM复位后处于管理模式,工作于ARM状态. 4,为什么要使用Thumb模式,与ARM代码相比较,Thumb代码的两大优势是什么

嵌入式操作系统精彩试题集61374

第一章嵌入式系统概论 一.填空 1. 嵌入式系统是以嵌入式应用为目的、以计算机技术为基础的计算机系统。 2. 计算机系统按应用可以分为通用计算机系统和嵌入式计算机系统。 3. 嵌入式系统按软件结构可分为嵌入式单线程系统和嵌入式事件驱动系统。 4. 嵌入式系统按是否具有实时性能可分为嵌入式非实时系统和嵌入式实时系统。 5. 嵌入式实时系统除具有嵌入式系统的基本特征外,还具实时性和可靠性的重要特点。 6. 嵌入式系统的硬件架构是以嵌入式处理器为中心,由存储器,I/O设备,通信模块以及电源等必要的辅助接口组成。 7. 嵌入式系统的软件通常固态化存储在ROM、FLASH或NVRAM中。 8. 嵌入式系统的开发由于受到系统资源开销的限制,通常采用交叉开发环境。 9. 嵌入式系统开发采用的交叉开发环境是由宿主机和目标机组成的。 10. 嵌入式系统的设计是使用一组物理硬件和软件来完成所需功能的过程。 二.选择 1. 以下哪一项不属于嵌入式操作系统(C) A.VxWorks B. WinCE C. BSD D. uClinux 2. 以下关于嵌入式系统说确的是(A) A.以开发为中心 B 对实时,成本,功耗要求严格 C.软硬件协同 D 软件可剪裁 3. 以下关于嵌入式系统说确的是(A) A.嵌入的系统中可以共存多个嵌入式系统 B.对高性能要求严格

C.软硬件缺乏协同 D.不要时性 4. 对响应时间有严格要求的嵌入式系统是(A) A.嵌入式实时系统 B.嵌入式多线程系统 C.嵌入式多核系统 D.嵌入式轮转询问系统 5. 以下哪一项属于嵌入式系统不具备的特点(B) A.采用专用处理器 B. 跨平台可移植 C.软硬件协同一体化 D.小型化与有限资源 6. 嵌入式系统硬件的核心是(B) A.存储器 B.嵌入式微处理器 C.嵌入式微控制器 D.BSP 7. 嵌入式系统的软件部分不包括(A) A.DSP B.嵌入式操作系统 C.设备驱动程序D.应用程序 8. 对性能要求高的嵌入式系统是(C) A.嵌入式实时系统 B.嵌入式多线程系统 C.嵌入式多核系统 D.嵌入式轮转询问系统 9. 嵌入式应用软件的开发阶段不包括(D) A.交叉编译和 B.开发环境的建立 C.联机调试 D.应用程序模块加载 10. 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都保存在(A) A.存储器芯片 B.磁盘 C.cache D.CDROM

嵌入式系统综合实验一

嵌入式系统综合实验一

学号: 装 订 线 实验报告 课程名称: 嵌入式系统设计 指导老师:马永昌 成绩:________________ 实验名称:综合实验一dht11和人体感应传感器 实验类型:验证型 同组学生姓名:孙凡原 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求 1.掌握字符设备驱动程序的基本结构和开发方法 2.掌握用户空间调用设备驱动的方法 3.掌握用户和内核的交互 二、实验内容和原理 专业:测控技术与仪器 姓名:颜睿

装订 线1.编写温湿度传感器DHT11驱动,传输打印温湿度信息 2.编写人体感应传感器驱动,控制LED灯亮灭 原理: 温湿度传感器DHT11: 1.引脚图 实际使用传感器没有NC引脚 2.数据采集 a.数据总时序 用户主机发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出40bit 的数据,幵触发一次信采集。

b.主机发送起始信号 连接DHT11的DATA引脚的I/O口输出低电平,且低 电平保持时间不能小于18ms,然后等待DHT11 作出 应答信号。 装 线 订 c.检测从机应答信号 DHT11 的DATA 引脚检测到外部信号有低电平时, 等待外部信号低电平结束,延迟后DHT11 的DATA 引脚处于输出状态,输出80 微秒的低电平作为应答信 号,紧接着输出80 微秒的高电平通知外设准备接收数 据。

装 订线 d.接收数据 (1)数据判定规则 位数据“0”的格式为:50 微秒的低电平和26-28 微秒的高电平,位数据“1”的格式为:50 微秒的低电平加70微秒的高电平。 接收数据时可以先等待低电平过去,即等待数据线拉高,再延时60us,因为60us大于28us且小于70us,再检测此时数据线是否为高,如果为高,则数据判定为1,否则为0。 (2)数据格式 一次传送40 位数据,高位先出 8bit 湿度整数数据+ 8bit 湿度小数数据+8bit 温度整

嵌入式操作系统实验一建立交叉编译环境

嵌入式操作系统实验一建 立交叉编译环境 Last updated on the afternoon of January 3, 2021

嵌入式操作系统实验报告 队友:张圣苗亚 实验内容 1、准备工作工作:安装virtualbox虚拟机工具,并安装系统、增强型工具,实现共享文件夹的自动挂载。 2、利用crosstool提供的脚本安装和相关资源编译面向的ARM的GCC工具。 详细内容1:安装虚拟机软件和虚拟机时要完成的主要步骤有:安装virtualbox,建立一台虚拟机,分配内存和硬盘,指定共享文件夹(主机和虚拟机可共同操作),指定操作系统镜像文件路径(相当于光盘,第一次启动时安装),安装虚拟操作系统,安装增强工具包,实现共享文件夹的自动挂载。有几点需要注意: 1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。 2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。 3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。 详细内容2需要安装与脚本相关的工具,需要修改crosstool中的配置文件以指定编译的目标位arm-linux。需要修改需要的资源 实验步骤 实验准备: 在实验准备中,在安装完增强工具包()并重启之后,需要实现对共享文件夹的自动挂载,只需要修改etc目录中的配置文件,是很多linux系统管理员的偏爱,因为凡是需要随系统自动启动的服务、程序等,都可以放在里面。 $sudomkdir/mnt/share $sudomount-tvboxsfembedded/mnt/shared 上面三句话实现了将共享文件夹embeded挂载到了share上。 gedit/etc/ 将第2句命令添加在exit之前,实现了自动挂载功能。 实验一 一、搭建编译环境 1、安装于脚本运行相关及其他的工具bison、flex、build-essential、patch、libncurses5-dev。

嵌入式操作系统期末考试答案

填空 1、嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适用于应用系统,对(功能)、(可靠性)、(成本)、(体积)、(功耗)严格要求的专用计算机系统。 2、嵌入式系统开发采用的交叉开发环境是由(宿主机)和(目标机)组成的。 3、挂载设备到文件系统的命令是(mount),从文件系统中卸载设备命令是(umounts)。 4、在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面,进入vi之后,是处于 (命令)模式,要切换到(编辑)模式才能够输入文字。 5、GCC的编译流程分为4个步骤,分别为:(预处理),编译,(汇编),链接。 6、Linux系统的设备分为三类:(字符设备)、(块设备)和网络设备。 7、操作系统的功能包(处理机管理)、(存储管理)、(设备管理)、(信息管理)、(作业管理)。 选择 1、下面哪点不是嵌入式操作系统的特点。(C) (A)内核精简(B)专用性强(C)功能强大(D)高实时性 2、嵌入式Linux下常用的文件系统不包括以下哪一项(A) (A)nfs(B)romfs(C)yaffs(D)jffs 3、下面关于Shell的说法,不正确的是:(D) (A)操作系统的外壳(B)用户与Linux内核之间的接口程序(C)一个命令语言解释器(D)一种和C语言类似的程序语言 4、在Bootloader()模式下,目标机可以通过通信手段从主机更新系统。(B) (A)启动加载模式(B)下载模式(C)实时模式(D)保护模式 5、文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列命令正确的是: (A) (A)chmoda+xg+wexer1(B)chmod765exer1(C)chmodo+xexer1(D)chmodg+wexer1 6、在vi编辑环境中,下面()选项不是从命令行模式切换到插入模式。(C) (A)i(B)o(C)ESC(D)a 7、shell变量名命名中不包括()。(D) (A)字母(B)数字(C)下划线(D)括号 8、下列关于字符设备说法不正确的是()。(C) (A)以字节为单位逐个进行I/O操作(B)字符设备中的缓存是可有可无的 (C)支持随机访问(D)字符设备可以通过设备文件节点访问 9、以下哪一项是是硬盘设备文件()。(B) (A)fd0(B)hda(C)eth1(D)ht0 10、共享内存通信机制的缺点是()。(B) (A)需要花费额外的内存空间(B)需要使用额为的同步机制 (C)需要额外硬件支持(D)通信过程中需要反复读取内存,时间开销大 简答题 1.嵌入式操作系统在哪些方面较为突出的特点并请列举出4种目前较常用的手机嵌入 式操作系统。 四个方面:系统实时高效性硬件的相关依赖性软件固态化应用的专用性 四种手机操作系统:Window Mobile SymbianOSAndriod OSE

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统2012-12-11 10:06 459人阅读评论(1) 收藏举报嵌入式操作系统 嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com 的Palm,以及Symbian和Google的Android等。 一、VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是T ornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 二、Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

嵌入式系统实验报告

嵌入式系统实验报告文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

大连理工大学 本科实验报告 课程名称:嵌入式系统实验 学院(系):电子信息与电气工程学部 专业:自动化 班级: 0804 学号: 学生姓名:何韬 2011年 11月 18日 大连理工大学实验报告 学院(系):电信专业:自动化班级: 0804 姓名:何韬学号:组: ___ 实验时间: 2011-11-12 实验室: d108 实验台: 指导教师签字:成绩: 实验二ARM的串行口实验 一、实验目的和要求 见预习报告 二、实验原理和内容 见预习报告 三、主要仪器设备

硬件:ARM嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC机Pentium100 以上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP 、ARM SDT 或集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验步骤 见预习报告 五、核心代码 在主函数中实现将从串口0接收到的数据发送到串口0() int main(void) { char c1[1]; char err; ARMTargetInit(); 通过调用OSTaskCreate()或OSTaskCreateExt()创建至少一个任务; . OSStart(); /ucos-ii/" /* uC/OS interface */ #include "../ucos-ii/add/" #include "../inc/" #include "../inc/sys/" #include "../src/gui/" #include <> #include <>

嵌入式操作系统及编程试题(B)答案

《嵌入式操作系统及编程》考试试卷(B卷)参考答案 一、填空题(每空1分,共10分) 1、嵌入式硬件系统,嵌入式软件系统。 2、Windows CE; uClinux(或Linux)。VxWorks,uC/OSII。 3、C++ 4、tar -zcf mydir.tar.bz2 mydir,tar -zxvf mydir.tar.bz2 5、make 二、选择题(每题2分,共20分) 1、C 2、C 3、B 4、A 5、B 6、A 7、B 8、D 9、B 10、A 三、简答题(每题7分,共49分) 1、以应用为中心,以计算机技术为基础,软件硬件可剪裁,(3分)适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。(4分) 2、 (7分) 3、 (7分) 4、(1)解压:tar –zxvf Linux-2.4.18.tar.gz。 (2)修改Makefile文件,其中:SUBARCH :=arm CROSS_COMPILE = arm-linux- (3分)(3)运行make menuconfig; (4)make; (4分)5、(1)tar –jxvf vivi-2410.tar.bz2 (2)cd vivi-2410; (3分)

(3)make menuconfig; (4)make (4分)6、(1)tar -jxvf busybox-1.12.1.tar.bz2 (2)make menuconfig (3)make install (3分)(4)构建根文件系统:创建顶层目录,创建设备节点,创建inittab,创建sysinit脚本。 (5)创建根文件系统映像文件(4分)7、 (7分) 四、应用题(1题10分,2题11分,共21分) 1、(1)运行source x86QT/export.sh建立LCD和设置开发环境变量; (2)运行x86QT/qt-2.3.2/bin/desinger 建立QT的form窗口; (3)保存form窗口到磁盘,如:rbz/win.ui。 (4) vi main.cpp文件到保存的路径rbz下 (5) cd arm2410QT;运行source export.sh (6)创建win.pro工程文件:/root/arm2410QT/tmake-1.13/bin/progen -t app.t -o win.pro (7)创建Makefile文件:/root/arm2410QT/tmake-1.13/bin/tmake -o Makefile win.pro (8)创建bi文件win: make (5分)(9)挂接/usr/lib库到目标机上:mount –t nfs 192.168.0.21:/usr /mnt/yaffs/nfs (10)设置目标机上运行QT程序的环境变量: export QTDIR=/mnt/yaffs/nfs export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH (11)在目标机上运行:./win –qws (5分)2、(1)main.c程序: int main() { int x=1; int y=2; Printf(“%d”,x*y); } (5分)(2) 1):gcc -E main.c -o outfile1 2):gcc -S main.c 3):gcc -c main.c (6分)

嵌入式系统试题闭卷及答案

《嵌入式系统》试题 闭卷答题时间:30分钟 一、填空题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、一般而言,嵌入式系统的构架可以分为4个部分:分别是()、存储器、输入/输出和软件,一般软件亦分为操作系统相关和()两个主要部分。 2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器,(),()以及片上系统。 3、操作系统是联接硬件与应用程序的系统程序,其基本功能有()、进程间通信、()、I/O资源管理。 4、从嵌入式操作系统特点可以将嵌入式操作系统分为()和分时操作系统,其中实时系统亦可分为()和软实时系统。 5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(),内核的基本服务是()。 6、嵌入式开发一般采用()方式,其中宿主机一般是指()。 7、哈佛体系结构数据空间和地址空间(),ARM7TDMI采用()的内核架构,ARM920T采用()的内核架构。 采用()级流水线结构,ARM920TDMI采用()级流水线。 9.按操作系统的分类可知,Dos操作系统属于顺序执行操作系统,Unix 操作系统属于()操作系统,VxWorks属于()操作系统。 10、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(),M表示内嵌乘法器Multiplier,I表示(),支持在线断点和调试。 二、选择题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。() (A)处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断(C)处理器支持中断,并且能产生定时中断(D)有大量的存储空间 2、下面哪种操作系统最方便移植到嵌入式设备中。() (A)DOS (B)unix (C)Windowsxp (D)linux 3、下面哪个选项不是SUB设备的特点。() (A)串行通信方式(B)不可热拨插 (C)分HOST、DEVICE和HUB (D)通信速率比RS232快 4、下面哪种嵌入式操作系统很少用于手机终端设备上。() (A)Symbian (B)WinCE (C)uc/os (D)linux 5、以下哪项关于SRAM和DRAM的区别是不对。() (A)SRAM比DRAM慢(B)SRAM比DRAM耗电多 (C)DRAM存储密度比SRAM高得多(D)DRM需要周期性刷新 6、uc/os操作系统不包含以下哪几种状态。() (A)运行(B)挂起 (C)退出(D)休眠 7、0x07&0x11的运算结果是。() (A)0x01 (B)0x11 (C)0x17 (D)0x07 8、以下哪种方式不是uc/os操作系统中任务之间通信方式。() (A)信号量(B)消息队列 (C)邮件(D)邮箱 9、以下哪种方式不是文件系统的格式。() (A)FAT (B)DOS (C)NTFS (D)Ext 10、在将uc/os操作系统移植到ARM处理器上时,以下哪些文件不需要修改。() (A) (B) (C) (D)OSTaskInit 三、判断题:共5小题,每小题2分,满分10分。 1、所有的电子设备都属于嵌入式设备。() 2、冯诺依曼体系将被哈佛总线所取代。() 3、嵌入式linux操作系统属于免费的操作系统。() 4、移植操作系统时需要修改操作系统中与处理器直接相关的程序。() 5、的最大通信速率为12M/S。() 简答题:共2小题,每小题10分,满分20分。 1、根据嵌入式系统的特点,写出嵌入式系统的定义。 2、试分析实时操作系统的工作状态特点及相互之间的转换。

LInux嵌入式操作系统期末试题

简答题:请简单概括什么是嵌入式系统、并举出嵌入式系统的特点;(6分) 答: 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统; 其特点如下: (1)嵌入式系统是面向特定系统应用的。 (2)嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各个行业; 是一个技术密集、资金密集、高度分散、不断创新的知识集成系统; (3)嵌入式系统的硬件和软件都必须具有高度可定制性;只有这样才能适应嵌入式系统应用的需要,在产 品价格和性能方面具备竞争力; (4)嵌入式系统的生命周期相当长。 (5)嵌入式系统不具备本地系统开发能力,通常需要有一套专门的开发工具和环境。 嵌入式操作系统的优势:1.低成本开发系统 2.可应用多种硬件平台 3.可定制内核 4.性能优异 5.良好的网络支持 linux文件类型:1.普通文件2.目录文件3.链接文件4.设备文件a.块设备文件(硬盘:/dev/hda1)b.字符设备(串行端口接口设备) linux文件属性:访问权限:r:可读w:可写x:可执行用户级别:u:文件拥有者g:所属用户组o:其他用户第一个字符显示文件类型:- 普通 d 目录 l 链接… 简答题:(6分) linux目录结构:/bin 存放linux常用操作命令的执行文件(二进制文件) /boot 操作系统启动时所需要的程序 /dev Linux系统中使用的外部设备 /etc 系统管理时所需要的各种配置文件和子目录 /etc/rc.d Linux启动和关闭时要用到的脚本 /etc/rc.d/init Linux默认服务的启动脚本 /home 系统中默认用户工作根目录 /lib 存放系统动态链接共享库 /mnt软驱、光驱、硬盘的挂载点 /proc存放系统核心与执行程序所需信息、 /root超级用户登陆时的主目录 /sbin 存放管理员常用系统管理程序 /usr存放用户应用程序和文件 /var存放日志信息(答六点即可) 编写一个shell文件:创建studen01 –student30这30个用户,用户组为class1,之后编写shell文件,删除所有用户 操作步骤:1.打开Terminal(终端): 2.输入vi shell 3.输入i 进入编辑模式 4.输入 #!/bin/bash groupadd class1 for((i=1;i<10;i++)) do username=student0$i

相关文档
相关文档 最新文档