您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 是时候发布ucosII在BF533/BF531上的应用教程... 
本帖共有2753个阅读者
发表帖子 发表投票 回复主题
是时候发布ucosII在BF533/BF531上的应用教程详解了!
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
精华主题 精华帖子
是时候发布ucosII在BF533/BF531上的应用教程详解了!

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:25:05
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

1.uCOSII 性能特点

嵌入式实时操作系统uCOSII是由美国工程师Jean J.Labrosse 所创。uCosII通过了美国航天管理局(FAA)的安全认证,可以用于飞机、航天器与人性命攸关的控制系统中。也就是说,用户可以放心将uCOSII用到自己的产品中。

我们在ADSP-EDU-BF53x平台上移植了uCOSII2.86的源码。



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:42:07
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

可移植性:uCOSII源码绝大部分是用移植性很强的ANSI C 写的。与微处理硬件相关的部分是用汇编语言写的。 uCOSII可以在绝大多数8 位、16 位、32 位以及64 位处理器、微控制器及数字信号处理器(DSP)上运行。

可裁剪性:可以通过开关条件编译选项,来定义哪些uCOSII的功能模块用于用户程序,方便控制代码运行所占用的空间及内存。

可剥夺性:uCOSII 是完全可剥夺型的实时内核,它总是运行处于就绪状态下的优先级最高的任务。

多任务:uCOSII 可以管理64 个任务,每个任务对应一个优先级,并且是各不相同。其中8 个任务保留给uCOSII。用户的应用程序可以实际使用56 个任务。

可确定性:绝大多数uCosII 的函数调用和服务的执行时间具有可确定性,也就是说用户总是能知道函数调用与服务执行了多长时间。

任务栈: 每个任务都有自己单独的栈,uCOSII 规定每个任务有不同的栈空间。

系统服务:uCOSII 提供很多系统服务, 例如信号量、互斥信号量、事件标志、消息邮箱、消息队列、内存的申请与释放及时间管理函数等。

中断管理: 中断可以使正在执行的任务暂时挂起,中断嵌套层数可达255 层。





我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:43:56
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

2.uCOSII 应用教程

2.1 嵌入式图形系统μC/GUI 移植与应用

该例子程序在ADSP-EDU-uCOSII/code 文件夹下的bf53x_ucgui_source 文件夹中。代码包含了uCOSII 源码和uC/GUI 源码。

2.1.1 程序功能

  • 领会μC/GUI 图形系统的模块层次化结构,了解液晶驱动模块,内存设备模块,窗口系统模块,窗口控件模块,反锯齿模块和触摸屏及外围模块等;
  • 掌握一些主要控制和功能函数,主要包括文本显示、数值显示、2D 图形库、字体、颜色、存储设备、视窗管理器、窗口对象、对话框、抗锯齿、输入设备、时间函数等;
  • 掌握在μC/OS-Ⅱ系统下μC/GUI 图形系统的移植与应用;
  • 通过图形界面显示实例来讲述如何在μC/OS-Ⅱ系统中构建μC/GUI 图形用户接口。
  • 本程序包含18个μC/GUI的DEMO

2.1.2 实验步骤
1. 将仿真器(ICE)与ADSP-EDU-BF53x 开发板和计算机连接好。
2. 先给ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
3. 运行VisualDSP++ 5.0 软件,选择合适的BF533 的session 将仿真器与软件连接。
4. 加载VisualDSP++ 5.0 工程文件BF53x_UCGUI_SOURCE.dpj,编译并全速运行。
5. 观察液晶屏上的显示。

2.1.3 程序说明

打开BF53x_UCGUI_SOURCE.dpj工程,可以在工程结构栏看到这个例程的工程结构(如下图)

上传的图片
  201341712475705.jpg [ 19.19 KB 326×362 ] (缩略时请点击查看原图)

 

  • APP 组项:主要包含应用层函数
  • BSP 组项:主要包含处理器初始化,硬件模块的驱动函数
  • GUI 组项:主要包含GUI处理函数
  • GUI _APP 组项:主要包含GUI应用函数,本例程包含了18个GUI DEMO
  • UCOS_II 组项:UCOSII源码

在这个例程中我们建立了两个用户任务,一个是UCGUI 界面显示任务,一个是触摸屏任务。再采用一个任务作为初始化时的主任务,用于建立以上的2个用户任务。 根据实时响应的重要程度,将各个任务的优先级经行了设置。

任务名 优先级
APP_TASK_START_PRIO               6               主任务
APP_TASK_USER_IF_PRIO             9               UCGUI 界面显示任务

APP_TASK_KBD_PRIO                    8               是触摸屏任务

为了兼顾实时效率及CPU 的负荷。将ucosII 的时钟节拍设置为1ms, ucosII 需要提供周期性信号源,用于实现时间延时和确认超时,时钟节拍的含义就是任务和任务之间最短切换时间。这个节拍也不能设置的非常短,会造成CPU 负荷过大,会造成任务执行兼顾不周。 某些高优先级任务总是在执行,有些低优先级任务得不到执行。 但节拍也不能设置的非常长,这会造成任务执行的实时性变差。 一般10-100ms 就可以了,ucosII 的时钟节拍是由内核定时器定时来完成的。

CoreTimerInit(79, 5000); // 1 mS tick.. Callback is O/S tick function

上传的图片
  20134171250705.jpg [ 46.01 KB 855×348 ] (缩略时请点击查看原图)

 

例程所用到uCosII 中的任务介绍

任务通常是一个无限的循环, 返回参数必须定义为void。 当任务开始执行时,会有一个参数传递给用户任务代码。 uCosII 可以管理64 个任务, 其中系统保留了8 个任务。开放给用户的有56 个任务,每
个任务的优先级都不同, 任务的优先级号越低,任务的优先级越高,在这个版本的uCosII 中,任务的优先级号就是任务编号。

任务的状态一定是以下5 种之一:

  • 睡眠态:就是任务没有交给ucosII 调度的,也就是没用经过建立的任务。 只保存在存储器空间里。
  • 就绪态:任务一旦建立,任务就进入就绪态。任务可以通过调用OSTasjDel()返回到睡眠态。
  • 运行态:任何时刻只能有一个任务处于运行态。
  • 等待状态:正在运行的任务可以通过调用以下2 个函数之一,将自身延迟一段时间。 这2 个函数是OSTimeDly()或OSTimeDlyHMSM()。这个任务于是进入等待状态,一直到函数中定义的延迟时间到。
    正在运行的任务可能在等待某一事件的发生,可以通过调用以下函数之一实现: OSFlagPend() ,OSSemPend(),OSMutexPend(), OSMboxPend()或OSQPend()。如果某事件并未发生,调用上述函数的任务就进入了等待状态,直到等待的事件发生了。当任务因等待事件被挂起时,下一个优先级最高的就绪任务就得到了CPU 的使用权。当时间发生了或等待延时超时时,被挂起的任务就进入就绪态。
  • 中断服务态:正在运行的任务是可以被中断的,被中断的任务于是进入了中断服务态,响应中断时,正在执行的任务被挂起,中断服务程序控制了CPU 的使用权。从中断服务程序返回前,uCosII 要判定被中断的任务是否是目前就绪任务里优先级最高的,如果不是,就执行优先级最高的那个任务。 如果是,就执行被中断的这个任务。
  • 消息邮箱:这是uCosII 中的一种通信机制,可以使一个任务或者中断服务程序向另一个任务发送一个指针型的变量,通常该指针指向了一个包含了消息的特定数据结构。 在例程中需要建立邮箱,用到了函数OSMboxCreate(), 串口1 中断服务程序用到了向邮箱发送一则消息的函数OSMboxPost(), 串口接收任务用到了等待邮箱中消息的函数OSMboxPend()。

上传的图片
  201341712535705.jpg [ 78.57 KB 874×555 ] (缩略时请点击查看原图)

 

上传的图片
  201341712541305.jpg [ 38.44 KB 514×420 ] (缩略时请点击查看原图)

 


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:54:34
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

2.1.4 实验结果
全速运行程序后,在液晶屏上不断的循环显示程序的中的18 个UCGUI 例子,可以通过触摸笔控制停止,下一个例程等,下面的图片是在例子中拍了几个图片。

上传的图片
  201341712563005.jpg [ 33.41 KB 565×381 ] (缩略时请点击查看原图)

 

上传的图片
  201341712563705.jpg [ 38.00 KB 556×337 ] (缩略时请点击查看原图)

 

上传的图片
  201341712565105.jpg [ 26.86 KB 575×343 ] (缩略时请点击查看原图)

 

上传的图片
  20134171257205.jpg [ 25.94 KB 571×348 ] (缩略时请点击查看原图)

 

上传的图片
  201341712571105.jpg [ 21.13 KB 536×324 ] (缩略时请点击查看原图)

 



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:57:20
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
下一章预告:2.2 嵌入式图形系统μC/GUI 库的生成

我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 12:59:03
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
广告位出租!哈哈!

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2013/4/17 13:27:05
candylakers(论坛新手)
candylakers
头衔:社区公民
帮派:无帮无派
帖数:8
金钱:134
积分:6
注册时间:2013/2/1
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
学无止境

ADI BF532学习   资源共享 谢谢
等级:论坛新手 参考IP地址:*.*.*.*
2013/4/17 13:38:30
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

2.2 嵌入式图形系统μC/GUI 库的生成

该例子程序在uCOSII/code 文件夹下的bf53x_ucgui_lib 文件夹中。代码为uC/GUI 的源码,编译后生成uC/GUI 库文件。

2.2.1 程序功能:

把UCGUI的源文件生成一个库文件,因为UCGUI文件比较多,在程序中编译比较耗时,生成库之后可以减少编译的时间,方便以后UCGUI的应用。

2.2.2 实验步骤

1. 运行VisualDSP++ 5.0 软件,选择合适的BF533 的session 与软件连接。
2. 加载VisualDSP++ 5.0 工程文件BF53x_UCGUI_LIB.dpj,选择生成库的属性

上传的图片
  201341716382003.jpg [ 17.59 KB 505×133 ] (缩略时请点击查看原图)

 

3. 点击全编译

2.2.3 程序说明

2.2.4 实验结果
在工程路径下的debug 文件夹下会生成个BF53x_UCGUI_LIB.dlb 文件,这个就是GUI 的库文件。



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/17 16:39:14
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
9信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

2.3 嵌入式图形系统μC/GUI 库的应用

该例子程序在uCOSII/code 文件夹下的bf53x_ucgui 文件夹中。代码为uCOSII 的源码和uC/GUI 的库文件。

2.3.1 程序功能:
把UCGUI的库文件应用在μC/GUI的DEMO中

2.3.2 实验步骤
1. 将仿真器(ICE)与ADSP-EDU-BF53x 开发板和计算机连接好。
2. 先给ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
3. 运行VisualDSP++ 5.0 软件,选择合适的BF533 的session 将仿真器与软件连接。
4. 加载VisualDSP++ 5.0 工程文件BF53x_UCGUI.dpj,编译并全速运行。
5. 观察液晶屏上的显示。

2.3.3 程序说明
打开BF53x_UCGUI.dpj工程,可以在工程结构栏看到这个例程的工程结构(如下图)

上传的图片
  201341810385801.jpg [ 22.14 KB 336×379 ] (缩略时请点击查看原图)

 

APP 组项:主要包含应用层函数

BSP 组项:主要包含处理器初始化,硬件模块的驱动函数

GUI _APP 组项:主要包含GUI应用函数,本例程包含了18个GUI DEMO

UCOS_II 组项:UCOSII源码

BF53x_UCGUI_LIB.dlb为调用的GUI库函数

2.3.4 实验结果
结果跟2.1.4 实验结果描述的一样。




我是OP...
等级:管理员 参考IP地址:*.*.*.*
2013/4/18 10:40:03
20
1
1/2
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154539 Call, 1 Queries, Processed in 0.046997 second(s),