第一篇:嵌入式Linux实时操作系统习题总结
第1章
1.嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。
2.嵌入式系统的三要素是嵌入、专用、计算机;即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3.目前国际较为知名的有:VxWorks、NeutrinoRTOS、Nucleus Plus、OS/
9、VRTX、LynuxOS,RTLinux、BlueCat RT等。
4.嵌入式系统一般由硬件层、中间层、软件层和功能层组成。其作用分别如下:
(1)硬件层 :由嵌入式微处理器、外围电路和外设组成。操作系统和应用程序都可以固化在ROM或者Flash中。为方便使用,有的模块在此基础上增加了LCD、键盘、USB接口,以及其他一些功能的扩展电路。
(2)中间层 :硬件层与软件层之间为中间层,其作用将系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关;
(3)软件层 :主要是操作系统,有的还包括文件系统、图形用户接口和网络系统等。操作系统是一个标准的内核,将中断、I/O、定时器等资源都封装起来,以方便用户使用。(4)功能层 :由基于操作系统开发的应用程序组成,用来完成对被控对象的控制功能。5.非占先式调度法也称作合作型多任务(cooperative multitasking),各个任务彼此合作共享一个CPU。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃CPU的使用权时,那个高优先级的任务才能获得CPU的使用权。当系统响应时间很重要时,要使用占先式(preemptive)内核。最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了。6.在实时系统中,如果系统在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,这样的系统被称硬实时系统。在弱实时系统中,超时却不会发生致命的错误。其实时性的要求比硬实时系统要差一些。
7.嵌入式系统的设计步骤及各部分的主要工作如下。(1)需求分析阶段,罗列出用户的需求;
(2)体系结构设计阶段,描述系统的功能如何实现;
(3)详细设计阶段,进行硬件系统与软件系统的分类划分,以决定哪些功能用硬件实现,哪些用软件实现;
(4)系统集成,把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进在设计过程中的错误;
(5)系统测试,对设计好的系统进行测试,看其是否满足给定的要求。8.Linux作为嵌入式操作系统的优势主要有以下几点:
(1)可应用于多种硬件平台。
(2)Linux的高度模块化使添加部件非常容易。
(3)Linux是一个和Unix相似、以内核为基础的、具有完全的内存访问控制,支持大量硬件的一种通用操作系统。
(4)Linux可以随意地配置,不需要任何的许可证或商家的合作关系。
(5)Linux带有Unix用户熟悉的完善的开发工具。其强大的语言编译器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。9. Linux执行进程调度一般是在以下情况发生的:(1)正在执行的进程运行完毕;
(2)正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态;(3)正在执行的进程调用了P原语操作,从而因资源不足而被阻塞;(4)执行中的进程提出I/O请求后被阻塞;(5)系统分配的时间片已经用完;
(6)就绪队列中的某个进程的优先级变得高于当前运行进程的优先级。
第4章
1、Linux 内核的编译菜单有好几个版本,运行:
(1)make config:进入命令行,可以一行一行的配置,但使用不十分方便。
(2)make menuconfig:大多数开发人员使用的Linux 内核编译菜单,使用方便。
(3)make xconfig:在2.4.X 以及以前版本中xconfig 菜单是基于TCL/TK 的图形库的。
2、在完成内核的裁减之后,内核的编译就只要执行以下几条命令: make clean
编译内核之前先把环境给清理干净。make dep
编译相关依赖文件 make zImage
创建内核镜像文件 make modules 创建内核模块。
make install
把相关文件拷贝到默认的目录。
3、此命令是装载压缩映像文件zImage到flash存储器中,地址是kernel分区,并采用xmodem传输协议。
4、此命令是设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0。
5、此命令将nfs服务的共享目录sharedir加载到/mnt/nfs。
6、此命令是装载根文件系统root.cramfs到flash存储器中,地址是根文件系统分区,并采用xmodem传输协议。
7、这个命令的操作同时进行了分区和格式化,0~128K存放vivi,128K~192K存放VIVI控制台指令,192K~1216K存放kernel,1216K~4288K存放root,其余部分存放应用程序。
第6章
1.使用虚拟地址寻址整个系统的主存和辅存的方式在现代操作系统中被称为虚拟内存。虚拟内存的管理方法使系统既可以运行体积比物理内存还要大的应用程序,也可以实现“按需调页”策略,既满足了程序的运行速度,又节约了物理内存空间。2.进程内存区域涉及到5种数据段,即:
①代码段:代码段是用来存放可执行文件的操作指令。
②数据段:数据段用来存放可执行文件中已初始化全局变量。③BSS段:BSS段包含了程序中未初始化的全局变量。④堆(heap):用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。
⑤栈:栈是用户存放程序临时创建的局部变量。3.在Linux系统中,内核在最高级执行,也称为“系统态”,在这一级任何操作都可以执行。而应用程序则执行在最低级,即所谓的“用户态”。在这一级处理器禁止对硬件的直接访问和对内存的未授权访问。模块是在所谓的“内核空间”中运行的,而应用程序则是在“用户空间”中运行的。它们分别引用不同的内存映射,也就是程序代码使用不同的“地址空间”。4.共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。5.内存管理利用虚拟文件系统支持交换,交换进程(swapd)定期由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。当一个进程存取的内存映射被换出时,内存管理向文件系统发出请求,同时,挂起当前正在运行的进程。
第9章
1.参考答案:
Mutex互斥量,用于操作某个临界资源时对该资源上锁,以实现互斥地对独占资源的使用。Semophore信号灯,信号灯内有一计数器,可以用于对多个同类资源的分配。
Condition条件变量,条件变量用于等待信号。当一个线程需要等待某个信号时,就可到条件变量上等待,当信号具备时,系统会唤醒该线程继续运行。2.参考答案:
本地:共享内存+信号量,适合于大量数据传输。Linux支持系统V和POSIX的共享内存和信号量。(5分)
远程:Socket+应用协议。适合于跨网络的(大量)数据传输。Linux支持BSD的socket。应用层协议需要自行设计。(5分)
3.答案要点:程序是编译后形成的可执行代码,是静止的。进程是程序的一次执行,是活动的。线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。4.两种实现方法,一种是继承Thread,另外一种是实现接口Runnable。
同步的实现方法有两种,分别是synchronized, wait与notify。用synchronized可以对一段代码、一个对象及一个方法进行加锁。用wait与notify可以使对象处于等待及唤醒方式导致同步,因为每个对象都直接或间接的继承了Object类。
5、什么是BootLoader?主要有几种工作模式及主要功能是什么? 答:
Bootloader就是操作系统内核运行的一段小程序,完成进行初始化系统硬件设置的任务,(2分)
分为启动加载模式和下载模式。(1启动加载模式
启动加载(Boot laoding)模式是指 Bootloader 从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。(2分)(2)下载模式
在下载模式下,目标机上的 Bootloader 将先通过串口连接或网络连接等通信手段从宿主机下载文件。(2分)
6、简述Bootloader有何作用?
答案要点:(1)首先,bootloader是在特定硬件平台运行的程序,严重依赖于硬件平台,需要移植;(2)是系统上电之后,第一个运行的程序,系统在上电或复位时通常都从地址 0x0 处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序;(3)bootloader程序的设计目标是启动嵌入式操作系统,嵌入式操作系统的启动需要一定的条件,这些条件由bootloader来满足;(4)Bootloader一般具有对存储器和网络接口操作的功能;如擦除、读写Flash,通过USB、串口下载文件等
第二篇:嵌入式实时操作系统 项目开发总结报告
项目开发总结报告
分 类:软件项目计划 使用者:E-fanciers
Version: 1.0
项 目 承 担 队伍:烟台大学
计算机学院 E-fanciers小组撰 写 人(签名): 许超 于歌
完 成 日 期: 2009-7-16 本文档使用小组: E-fanciers小组
评审负责人(签名): 孝瑞
评 审 日 期: 2009-7-19
目 录
一、引言.............................................3
1.1编写目的.......................................3 1.2项目背景.......................................3 1.3定义...........................................3 1.4参考资料:.....................................3
二、开发结果........................错误!未定义书签。
2.1产品..........................错误!未定义书签。2.2主要功能......................错误!未定义书签。2.3所用工时.......................................4 2.3所用机时.......................................4 2.3进度...........................................4
三、评价............................................4
3.1生产率评价.....................................4 3.2技术方案评价...................................4 3.3产品质量评价...................................4
四、经验与教训.......................................4
一.引言
1.编写目的(阐明编写总结报告的目的,指明读者对象。)
详细陈述项目开发过程,对项目开发做最后的总结完善,说明项目开发过程中遇到的难题及解决方案。
2.项目背景(说明项目的来源、委托单位、开发单位及主管部门。)
随着微电子技术、计算机技术和网络通信技术的发展,嵌入式系统已广泛应用在各个领域,包括消费电子、汽车电子、网络通信、工业设备、航空航天和国防军事等。随着嵌入式技术的发展,工业领域也一改过去传统的单片机应用模式,逐渐将一些新嵌入式技术引入到系统中。特别是作为软件基础的嵌入式操作系统已广泛为业界所接受,借以提高系统的开发效率和运行效率。是否采用嵌入式操作系统,已成为工业设备品质优劣的标志之一。
当今的嵌入式操作系统领域呈现百家争鸣的状态。据最近的调查数据显示,嵌入式操作系统有数十种之多的。这种多样性存在是必然的,是由嵌入式系统的定制性所决定的,是针对各个领域和行业的不同需求的应对。也就是说,各个嵌入式操作系统都有自己的应用领域,针对不同的应用没有绝对的优劣之分,不会出现一种操作系统垄断的局面。自主开发嵌入式操作系统绝对不是多余的,也是是对这种多样性的自然顺应,应该可拥有自己的用武之地。有些国内嵌入式厂商将希望寄托在Linux之上,以为它可以帮助解决所面临的版税和安全等问题。但事实并非完全如此,至少在嵌入式系统领域。首先,Linux还是泊来货,国人并未掌握其核心技术和进程,也并未解决对外依赖的问题。其次,Linux是为桌面系统而设计的,并不能很好地满足嵌入式系统高效性和灵活性的要求;再次,Linux的一统也违背了嵌入式系统应用灵活定制的本质特性。
3.定义(列出报告中用到的专门术语定义和缩写词的原意。)
int taskInit(void);
/*创建一个任务, 返回: 返回任务编号tid, >0: 成功, 其他: 失败.*/ /*name: 任务名称, entryPtr : 任务函数入口, stack_size: 任务栈大小, priority: 任务优先级*/ int taskCreate(char *name, void *entryPtr, int stack_size, int priority);/*启动一个任务, 让taskCreat创建的任务参加调度*/ int taskStart(unsigned char tid);/*tid: 任务编号, 由taskCreate返回*/ int taskPriorityGet(unsigned char tid);int taskPrioritySet(unsigned char tid, int newPriority);/*获取和设置任务优先级, 用于动态调整*/ int taskSuspend(unsigned char tid);/*将任务挂起, 该任务退出调度*/ int taskDelete(unsigned char tid);/*将任务删除 该任务退出调度且回收任务分配的资源*/ int semCreate(void);/*互斥信号量创建, 返回信号量标识sid, <0: 失败*/ int semTake(int sid);int semGive(int sid);/*互斥信号量获取和释放*/ int taskSleep(int ticks);/*任务睡眠(非忙等), 由任务自己调用, 主动阻塞一段时间.时间单位为tick, 即10ms*/ 4.参考资料(列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括:(1)项目开发计划;(2)需求规格说明书;(3)概要设计说明书;(4)详细设计说明书;(5)用户操作手册;(6)测试计划;(7)测试分析报告(8)本报告引用的其他资料、采用的开发标准或开发规范。)(1)软件项目计划(2)需求规格说明(3)软件编写向导
(4)国家软件开发文档标准模板
二.开发结果
1.产品(可包括:(1)列出各部分的程序名称、源程序行数(包括注释行)或目标程序字节数及程序总计数量、存储形式;产品文档名称等。)
2.主要功能及性能 基本功能
1.基于参考硬件平台,建立硬件抽象层,完成基本硬件初始化,建立时钟中断; 2.在硬件抽象层基础上,建立多任务操作系统环境; 3.任务调度采用同级时间片轮询机制;
4.实现任务间基本通讯机制:互斥信号量(共享内存); 5.实现基本的时钟管理机制:任务睡眠阻塞;
6.实现一个RS232串口驱动。基于串口驱动实现一个命令行Shell(用一个独立的任务实现),可在超级终端显示信息和执行命令。
扩展功能
7.任务区分优先级,在同级轮询调度基础上添加优先级调度机制; 8.不同优先级任务之间实现抢占调度;
9.在抢占调度的基础上实现优先级逆转保护,避免逻辑死锁问题; 10.将代码移植到另一个硬件平台上运行,验证代码移植性。3.所用工时(按人员的不同层次分别计时。)
编码成员工时:60小时/周,共约400小时;
编写文档成员:共约60小时。
4.所用机时
5小时/天,共约300小时的机时。
5.进度(给出计划进度与实际进度的对比。)
根据敏捷开发方法的指导,每天查漏补缺,实际进度基本和计划进度一致。三.评价
1.生产率评价(如平均每人每周源程序行数、文档的字数等。)
源程序:200行/周
文档:1500字/周
2.技术方案评价
严格遵循开发流程,运用科学开发方法。
3.产品质量评价
按照大赛要求完成了应有功能的基础上有所添加自己小组的特色,譬如,设置相应的出错处理机制,为加强该系统的安全性与稳定性也做了相应的措施,总体来说,我们小组开发的嵌入式实时操作系统功能良好,稳定性强。
四.经验与教训
经过近两个月的对嵌入式实时操作系统的开发,经验学到了不少,当然也得到了很多教训,因为小组的不注意,导致2138开发板没法继续工作,有的时候会很耽误时间,有的时候进度报告拖后一点才写,也因此导致过进度不明了,不过,大多数时候,我们小组成员都认真对待大赛,努力想把自己小组的作品做的更完美,最后终于成功交付任务,完成大赛。
第三篇:嵌入式实时操作系统(dynaLinux),及其开发平台(精)
嵌入式实时操作系统(dynaLinux),及其开发平台
公司简介:
注册时间:2003年3月24日 经济性质:合资 从事领域:电子信息
资产状况:注册资金100万人民币 人员状况:12人 股本结构: 中方:方沛宇 60万元 杨海英 10万元
外方:今村博宣 20万元 日本力扬株式会社 10万元 项目情况:
我们采用独自的技术彻底改造了其Linux内核,使其成为一种完全意义上的实时操作系统。dynaLinux具有以下特点:(1)导入了基于OSPM/ACPI的动态电源管理机构,可以根据CPU的使用状态动态控制耗电量。(2)高速的boot机制。(3)坚固的安定性。(4)支持无MMU的CPU。
应用领域主要是面向:信息家电、PDA、手机、车载终端、GPS 等 国内外市场分析:
Linux操作系统在嵌入式系统中的应用近来成为一种趋势。据有关部门预测到2005年嵌入式系统中Linux的份额将占50%以上。但基于分时系统而架构的Linux存在许多先天的不足,故现有的嵌入式Linux还不能称为完全意义上的实时。我们采用独自的技术彻底改造了其Linux内核,使其成为一种完全意义上的实时操作系统。鉴于dynaLinux的优势,本公司被被富士通指定为支持其FR-V CPU的Linux提供商和全球技术总支持。融资和技术转让方案:
总项目投资:100万人民币 已完成投资状况:50万人民币 项目进展阶段:已完成Dyna-Linux(v 1.0)的开发 融资或转让方式:投资或融资 联系方式:
公司名称:北京华科力扬科技有限公司
通讯地址:北京市海淀区上地信息路2号国际创业园D栋612 邮编:100085 联系人:赵强 电话:82893150 传真:82781836 Email:zhaoq@dyna.cn
第四篇:嵌入式linu学习心得
嵌入式Linux学习心得
1、Linux命令
ls:查看目录-l以列表方式查看;ls –l 与ll的功能一样 pwd: 查看当前的目录
cd:改变当前操作目录cd /直接跳到根目录 cd..回到上一级目录 cat: 打印显示当前文件的内容信息
mkdir:创建目录
fdisk: 查看硬盘分区信息,-l以列表方式查看
->代表是链接文件,类似window下的快捷方式。
cp: 复制命令,例子cp 文件名 /home/dir/
mv: 移动或改名,如mv sonf.confsonf.txt(改名)移动:mv sonf.conf / rm:删除命令,如rm –f test.c;如删除目录rm –fr d
man:查看某个命令的帮助,man 命令
2、各系统目录的功能
drw—r—w--:d代表是目录,drw代表当前用户的权限,r代表组用户的权限,w代表其它用户的权限。x代表有执行权限。
/boot/gruff.conf: 启动引导程序
/dev:brw—rw--:b代表是块设备。Linux设备有三种,块设备(b开头)、字符设备(c开头)、网络设备。had代表第一个硬盘,hdb代表第二个硬盘。Hdb2代表第二块硬盘的第二个分区。3,67代表主设备为3,从设备为67./etc:存放的是系统的配置文件。Inittab文件存放不同启动方式下必须启动的进程。Inittab文件中有6个启动level,wait中对应着6个level的目录,respawn代表当一个进程被意外终止了,但会自动启动的进程,如守护进程。rc.d目录中存放了一个rc.sysinit文件,里面存放系统初始化配置信息。/etc还有一个vsftpd里面存放tcp、ftp的配置。
/home : 用户目录,存放用户的文件,/lib:存放库文件,后缀为so的文件代表动态链接库。
/lost+found:系统意外终止,存放一些可以找回的文件。
/mnt:挂载外部设备,如挂载光驱:mount –t /dev/cdrom/mnt/cdrom,如
果在双系统中,要查看windows中D盘的文件,首先应该将D盘的文件映射过来,mount –t /dev/hda2/mnt/windows/d
/opt:用户安装的应用程序
/proc:是系统运行的映射,比较重要。里面的文件数字代表进程号。每个进程号目录下包含进程的基本信息。还有其他信息,如cpuinfo等,内核支持的文件系统filesystem等。系统支持的中断interrupts,iomen代表内存分配情况。ioport存放IO端口号。还有分区信息,modole信息,状态信息,版本信息
对于Linux的设备驱动程序,有两种加载模式,一种是直接加载进linux内核,一种是以模块的方式加载到内核。
/sbin: 系统管理的一些工具。如poweroff关机工具。
/usr: 安装系统时很多文件放在此目录下面,包含一些更新等,include包含的头文件,lib 是Linux的库文件,src包含Linux2.4的内核源码
/var:存放是临时变量
3、
第五篇:实时操作系统报告
实时操作系统课程实验报告
专业:通信1001 学号:3100601025 姓名:陈治州
完成时间:2013年6月11日
实验 简易电饭煲的模拟
一.实验目的:
掌握在基于嵌入式实时操作系统µC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。
二.实验要求:
1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”;2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择;
3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间;
4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式;
5.按“X”退出系统,时间区域不显示。
6.煮饭时长为30,煮粥时长为50,煮面时长为40.三.实验设计:
1.设计思路:
以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。
本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。2.模块划分图:(1)界面显示:
Main()Taskstart()Taskstartdispinit()在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。(2)按键查询与响应:
Main()Taskstart()在TaskStart()函数中,用if(PC_GetKey(&key)== TRUE)判断是否有按键输入。然后根据key的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。(3)切换功能:
l计数“C”按键的次数M=l%3Switch(m)M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“ ”以“擦出”之前画下的“@”,注意l自增。
四.主要代码:
#include “stdio.h” #include “includes.h” #include “time.h” #include “dos.h” #include “sys/types.h” #include “stdlib.h” #define TASK_STK_SIZE
512
#define N_TASKS
OS_STK
TaskStk[N_TASKS][TASK_STK_SIZE];
OS_STK
TaskStartStk[TASK_STK_SIZE];
INT8U
TaskData[N_TASKS];
void Task0(void *pdata);
void TaskStart(void *pdata);
static void TaskStartDispInit(void);
void main(void){
PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS, OSCtxSw);
OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_STK_SIZE-1], 4);
OSStart();
} void TaskStart(void *pdata){ #if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;#endif
INT8U l,m;
INT16S key;
l=0;
pdata = pdata;
TaskStartDispInit();
OS_ENTER_CRITICAL();
PC_VectSet(0x08, OSTickISR);
PC_SetTickRate(OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
OSStatInit();
for(;;){
if(PC_GetKey(&key)== TRUE)
{
switch(key)
{
case 0x1B:
PC_DOSReturn();
break;
case 0x43:
{ m=(l%3);
switch(m)
{ case 0: {
PC_DispStr(26,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;
case 1: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;case 2: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);}
break;}
l++;} break;
} } OSCtxSwCtr = 0;
OSTimeDlyHMSM(0, 0, 1, 0);
} } static void TaskStartDispInit(void){ PC_DispStr(0, 0, “
uC/OS-II, The Real-Time Kernel
”, DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);PC_DispStr(0, 1, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 2, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 3, “
dianfanbao shiyan
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 4, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 5, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 6, “
kai shi.zhu fan.zhu zhou.zhu mian.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 7, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 8, “
bao wen.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 9, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 10, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 11, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 12, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 13, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 14, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 15, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 16, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 17, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 18, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 19, “ 'S':kai ji.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 20, “ 'C':mo shi qie huan.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 21, “ 'B':kai shi zhi xin.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 22, “ 'Q':qu xiao dang qian gong zuo zhuang tai.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 23, “ 'X':tui chu xi tong.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);
PC_DispStr(0, 24, “
<-PRESS 'ESC' TO QUIT->
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);}
五.运行界面:
(1)主界面:
(2)显示北京时间:
(3)模式切换:
(4)倒计时:
(5)保温执行时间:
六.总结:
本次实验主要以老师所给的实验事例为基础,并结合老师课堂讲的内容,理解编写程序。做实验本实验前,先执行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每个实验的框架和主要部分;接着,将事例程序中的部分思想运用到本次实验中,其中以显示界面的思想运用的最多;除此以外,在模式切换上花了最大的精力,最终的解决方法是以变量l作为一个计数值,并运用switch语句在选择的模式上画上“@”,同时还得注意在未选择的模式上画上空格来“擦除”之前画上的@;在查询按键上,同样运用switch语句......这次实验收获不少,不仅对之前学的C语言有了更进一步的巩固,而且还强化了ucos里面的多任务的一些认识;同时,以前对DOS界面很陌生,但本次实验使用的正是DOS界面,通过几天的经历,对DOS中的编译、“help”等各个方面有了更深入的认识,不再害怕使用DOS了。
对本课程有很大的兴趣,在以后的课余时间里我会不断学习这些知识。