嵌入式系统软件结构设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
基于COS-II扩展RTOS的体系结构
用户应用程序
用户界面
任务之间 的通讯
API 函数
绘图函数 Display.h
后台 缓冲区
文件读写函数 OSFile.h
文件管理函数 File.h
双向链表函数 List.h
系统控件函数 Control.h
键盘扫描
系统消息
系统 消息队列 OSMessage.h
主任务
原点坐标设定在液晶屏设备坐标的(170,50),并把绘图 的逻辑坐标的水平值设置成800,垂直范围按照液晶屏 实际的横纵比例缩放。
23
基于Unicode的字库
什么是Unicode 使用Unicode的优点 字符的存储方式 编写Unicode的程序 Unicode字模的提取 Unicode字库的显示及相关函数
top ,int right, int bottom); void Circle(PDC pdc, int x0, int y0, int r);
19
典型的绘图函数(b)
void SetDrawOrg(PDC pdc, int x,int y, int* oldx, int *oldy)
设置绘图设备上下文(DC)的原点
U32 CtrlType; //控件的类型
U32 CtrlID;
//控件的ID
structRECT ListCtrlRect;//控件的位置和大小
U32 FontSize;//控件的字符大小
U32 style;
//控件的的边框风格
U8 bVisible; //是否可见
}OS_Ctrl;
34
本节提要
系统外围设备的硬件部分包括:液晶显示屏(LCD)、USB通信 模块、键盘、海量Flash存储器、系统的时钟和日历。外围设备的 硬件部分是保证系统实现指定任务的最底层的部件。
2、驱动程序模块
驱动程序是连接底层的硬件和上层的API函数的纽带,有了驱动程 序模块,就可以把操作系统的API函数和底层的硬件分离开来。硬 件的改变、删除或者添加,只需要随之改变、删除或者添加提供 给操作系统的相应的驱动程序就可以了。而不会影响到API函数的 功能,更不会影响到用户的应用程序。
17
DC的使用
创建DC CreatDC
设置DC Set…
利用DC绘图
删除DC DestoryDC
18
典型的绘图函数(a)
void initOSDC(); PDC CreateDC(); void DestoryDC(PDC pdc); void MoveTo(PDC pdc, int x, int y); void LineTo(PDC pdc, int x, int y); void DrawRectFrame(PDC pdc, int left,int
7.用户应用程序
用户的应用程序建立在系统的主任务(Main_Task)基础之上。 用户应用程序主要通过调用系统的API函数对系统进行操作,完成 用户的要求。在用户的应用程序中也可以创建用户自己的任务。 任务之间的协调主要依赖于系统的消息队列。
9
用户应用程序的建立
在嵌入式硬件平台的基础上,有了实时多任务操作系统来管理 硬件资源、进行任务协调,在操作系统平台上使用操作系统所 提供的GUI(图形用户接口)及API(应用程序接口)函数来编 制自己相应的用户应用程序了。
一种方式存储的是字符的图形点阵 另一种方式是存储汉字的矢量图形
在嵌入式处理中,因为处理器的性能和嵌入式系统资源 还不如PC机,而且,嵌入式只是针对专一控制而应用 的系统。基本上,没有必要使用矢量字库。
27
编写Unicode的程序
Windows2000及其以后的系统版本,默认的字 符处理方式是Unicode
320个 中文字符(0x4e00-0x9fff)20992个。
29
Unicode字库相关函数
转换函数 void Int2Unicode(int number, U16 str[ ]); int Unicode2Int(U16 str[ ]); void strChar2Unicode(U16 ch2[ ], const char ch1[ ]);
输出函数 void TextOut(PDC pdc, int x, int y, U16 *ch, U8 bunicode, U8 fnt); void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt)
30
3
为什么要扩展uCOS-II
COS-II仅仅一个实时多任务的内核,移植了COS-II 以后,离实际的应用还是有一段距离的。要想实现一个 相对完整、实用的嵌入式的实时多任务操作系统( RTOS),还需要相当多的扩展性的工作。
4
具体的扩展工作
建立文件系统; 外设及驱动程序的实现; 基于Unicode汉字库的实现方法; 基本绘图函数的实现; 其它实用API函数;
15
DC的定义
typedef struct{
int DrawPointx;
int DrawPointy; //绘图所使用的坐标点
int PenWidth; //画笔宽度
U32 PenMode; //画笔模式
U32 PenColor;
//画笔的颜色
int DrawOrgx;//绘图的坐标原点位置
int DrawOrgy;
24
什么是Unicode
Unicode 是 统一编码的紧缩写法
世界上常用的编码系统有数百种之多,但所有的这些 编码系统,没有哪一个能有足够的字符,可以适用于 多种语言文本
由于编码不统一,这些编码系统之间经常相互冲突 Unicode出现改变了这一切 在Unicode的双字节版本中(UTF-16)使用的是16
嵌入式系统 讲基于 C/OS-Ⅱ的软件设计
1
本节提要
1 基于COS-II扩展RTOS 2 图形用户接口设计 3 文件系统的设计 4 系统的消息 5 外设及驱动
6 嵌入式GUI简介
2
基于COS-II扩展RTOS
将COS-II移植到自己的硬件平台以后,接下来的工 作就是对操作系统本身的扩充。
介绍如何对COS-II进行必要的扩展,建立一个简单 实用的实时操作系统(RTOS)
位编码方式,可提供65,000多个字符代码指针
25
使用Unicode的优点
使用Unicode避免了乱码的产生,使得国际间文本 数据交换成为可能
解决了多语言文本同平面共存的问题 实现了软件的全球化,避免了软件产品在贯穿多个
平台、语言和国家时的重建
26
字符的存储方式
在图形操作系统中,字符(包括:中文、英文)通常有 2种存储方式。
主任 任




1
n
用户
……
程序
消息 处理
12
本节提要
1 基于COS-II扩展RTOS 2 图形用户接口设计 3 文件系统的设计 4 系统的消息 5 外设及驱动
6 嵌入式GUI简介
13
图形用户接口函数
基于32位嵌入式处理器的硬件平台,有着较高的运算 速度和大容量的内存。为人机交互建立GUI无疑为最 首选的方式。本小节将建立针对常用的图形界面的应 用建立相应的API函数。主要包括: 基本绘图函数。 基于Unicode的汉字字库 典型的控件
1 基于COS-II扩展RTOS 2 图形用户接口设计 3 文件系统的设计 4 系统的消息 5 外设及驱动
6 嵌入式GUI简介
35
什么是文件系统(File System)
文件系统的定义
——处理文件的操作系统的部分称为文件系统.是操作系统中统一管理 信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠 的共享和保护手段,并且方便用户使用
典型的控件
控件是可视化开发的基础。对于开发应用程序的用户来说, 控件是一个独立的组件,它有着自己的显示方式,自己的动 态内存管理模式,甚至有的控件还可以向系统发送自己的消 息。用户不需要掌握控件的内部到底是如何工作的,用户只 需要通过控件提供的API函数,改变控件相应的属性,从而 改变控件的显示方式。 控件的引入可以方便用户的开发,加速用户应用程序界
Y X
(原点)
20
典型的绘图函数(c)
void SetDrawRange(PDC pdc, int x,int y, int* oldx, int *oldy)
设置绘图设备上下文(DC)的绘图范围 x,y:设定的横向、纵向绘图的范围,如果x(或者y)
为1,则表示x(或者y)方向的比例随着y(或者x)方 向的范围按比例缩放。如果参数为-1,表示方向相反
14
绘图API函数
绘图是操作系统的图形界面的基础,本系统为 图形界面提供了丰富的绘图函数。
在多任务操作系统中,绘图设备上下文(DC) 是绘图的关键。绘图设备上下文(DC)保存了 每一个绘图对象的相关参数(比如:绘图画笔 的宽度、绘图的原点坐标等)。在多任务操作 系统中,通过绘图设备上下文(DC)来绘图, 可以保证在不同的任务绘图的参数是相互独立 的,不会互相影响。
面的编写速度。 为运行在操作系统上的应用程序的界面提供了统一的标
准,方便了使用。
31
系统中的控件
文本框控件 列表框控件 图片框控件 按钮控件 窗体
32
控件的使用流程
创建控件
显示控件
发送消息
改变控件属性
删除控件
33
通用的系统控件
对一个通用的系统控件,包含了如下的数据结构:
typedef struct{
7
3.操作系统的API函数
在操作系统中提供标准的应用程序接口(API)函数,可以加速用 户应用程序的开发,统一应用程序的标准,同时也给操作系统版 本的升级带来了方便。在API函数中,提供了大量的常用模块,可 以大大简化用户应用程序的编写。
4.实时操作系统的多任务管理
C/OS-Ⅱ作为操作系统的内核,主要的任务就是完成多任务之间 的调度和同步。
10
嵌入式系统上运 行的应用程序的结构
以ARM7TDMI结构的处理器为例,它不带有MMU( 内存管理单元)。所以,操作系统和应用程序是编译在 一起运行的。
11
系统的启动和运行过程
பைடு நூலகம்
嵌入式控制器 硬件初始化 操作系统初始 化
LCD初始化
装载字库
启动多任务调 度
初始化用户界 面、时钟
创建任务
调用系统配置 文件
Windows平台上,有大量丰富的字符资源 Windows2000 及 其 以 后 的 系 统 版 本 中 , 提 取
Unicode字符点阵无疑成了最好的选择。
28
Unicode字库分配
本系统中编码采用双字节版本的Unicode格式 收集了ASCII字符(0x0000-0x00ff)256个 特殊图形符号(0x2600-0x267f和0x2700-0x27bf)
int DrawRangex; //绘图的区域范围
int DrawRangey;
U8 bUpdataBuffer; //是否更新后台缓冲区
U32 Fontcolor; //字符颜色
}DC,*PDC;
16
DC的初始化
在绘图设备上下文(DC)中保存了每一个绘图对 象的相关参数。在系统启动的时候,通过调用 initOSDC()函数初始化绘图设备上下文(DC), 为以后创建绘图设备上下文(DC)分配存储空间 。
5.系统的消息队列
这里所说的系统的消息队列是以C/OS-Ⅱ的消息队列派生出来的 系统消息传递机制,用来实现系统的各个任务之间、用户应用程 序的各个任务之间以及用户应用程序和系统的各个任务之间的通 信。
8
6.系统任务
系统任务主要包括液晶显示屏(LCD)的刷新任务、系统键盘扫 描任务。这两个任务是操作系统的基本任务,随着操作系统的启 动而运行。
21
DC创建
PDC pdc; pdc=CreateDC();
22
DC设置举例
PDC pdc; pdc=CreateDC(); SetDrawOrg(pdc,170,50,&oldx,&oldy); SetDrawRange(pdc,800,-1,&oldxrange,
&oldyrange); 上面的程序代码创建一个绘图设备上下文(DC),将
信号量
驱动 程序 drv.h LCD240.h
USB.h
Flash.h
Keyboard16.h
Rtc.h


LCD
USB
键盘
海量 存储器
时钟 日历
信号量
邮箱
消息 队列
LCD刷新 系统任务
任务调 度模块
用户任务n
用户任务2 用户任务1
动态内 基于uCOS-II 存管理 的RTOS内核
6
1.系统外围设备的硬件部分
相关文档
最新文档