small rtos51使用手册
1. small rtos(51)文件列表
根目录:
list.txt :本文件
readme.txt :一些说明
license.txt :许可协议
manual.txt :用户手册
.\ex1:
这是第1个例子的目录
readme.txt :本例子的一些说明
ext1.c :本例子的程序文件
os_cfg.h :本例子的small rtos(51)配置文件
config.h :本例子的配置文件
os_cpu.h :本例子的与cpu相关的配置文件
test.uv2 :keil c51工程文件
test.plg :keil c51工程附属文件
test.opt :keil c51工程附属文件
.\ex2:
这是第2个例子的目录
readme.txt :本例子的一些说明
ext2.c :本例子的程序文件
os_cfg.h :本例子的small rtos(51)配置文件
config.h :本例子的配置文件
os_cpu.h :本例子的与cpu相关的配置文件
display.c :对仿真dll的一些操作函数
display.h :display.c的头文件
test.uv2 :keil c51工程文件
test.opt :keil c51工程附属文件
test.plg :keil c51工程附属文件
.\ex3:
这是第3个例子的目录
readme.txt :本例子的一些说明
ext3.c :本例子的程序文件
os_cfg.h :本例子的small rtos(51)配置文件
config.h :本例子的配置文件
os_cpu.h :本例子的与cpu相关的配置文件
display.c :对仿真dll的一些操作函数
display.h :display.c的头文件
test.uv2 :keil c51工程文件
test.opt :keil c51工程附属文件
test.plg :keil c51工程附属文件
.\ex4:
这是第4个例子的目录
ext4.c :本例子的一些说明
readme.txt :本例子的程序文件
os_cfg.h :本例子的small rtos(51)配置文件
config.h :本例子的配置文件
os_cpu.h :本例子的与cpu相关的配置文件
display.c :对仿真dll的一些操作函数
display.h :display.c的头文件
test.uv2 :keil c51工程文件
test.opt :keil c51工程附属文件
test.plg :keil c51工程附属文件
.\keilc51
这是与cpu(8051系列)相关的移植代码
os_cpu_c.c :移植代码c语言部分
os_cpu_a.asm :8任务版的移植代码汇编语言部分
os_cpu_a_task16.asm :16任务版的移植代码汇编语言部分
.\os
这是small rtos(51)与cpu无关部分
os_core.c :small rtos(51)核心
os.h :small rtos(51)头文件
1. 概述:
small rtos是一个源代码公开的多任务实时操作系统,small rtos 51是其在8051系列处理器上的移植(使用keil c51)。small rtos可以简化那些复杂而且时间要求严格的工程的软件设计工作.本手册主要讲述small rtos的使用,本说明了在8051系列处理器上使用应该注意的问题。同时讲述了small rtos的移植。
本手册仅针对small rtos(51) 1.00版本
2. small rtos的特点:
(1)公开源代码
只要遵循许可协议,任何人可以免费获得源代码。
(2)可移植
作者尽量使用把与cpu相关部分压缩到最小,与cpu无关部分用ansi c编写。
(3)可固化
small rtos为嵌入系统设计,如果您有固化手段,它可以嵌入到您的产
品中成为产品的一部分。
(4)占先式
small rtos可以管理16个任务,每个任务优先级不同。
(5)中断管理
中断可以使正在执行的任务挂起。如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255层。如果需要,可以禁止中断嵌套管理。
(6)ram需求小
small rtos为小ram系统设计,应而ram需求小,相应的,系统服务也少。
3. small rtos的使用:
(1)系统配置:
os_cfg.h中定义了一些常量可以配置系统,具体定义如下:
#define os_max_tasks 1 /* 最大任务数1~16 */
#define os_ticks_per_sec 10 /* 设置1秒系统系统节拍数 */
#define user_tick_timer_en 0 /* 禁止(0)或允许(1)系统定时中断调用用户函数userticktimer() */
#define en_os_int_enter 1 /* 禁止(0)或允许(1)中断嵌套管理 */
#define en_timer_sharing 1 /* 禁止(0)或允许(1)定时器中断调用ostimetick() */
#define tick_timer_sharing 1 /* 定义进入多少次硬件中断为一次系统定时器软中断 */
//
#if en_timer_sharing == 0
#define time_isr_task_id show_task_id /* 定义系统定时器软中断触发的任务id */
#endif
os_cpu.h中定义了一些常量可以配置一些与cpu相关的部分。
针对small rtos 51,具体定义如下:
#define en_sp2 0 /* 禁止(0)或允许(1)非屏蔽中断 */
#define idata_ram_size 0x100 /* idata大小 */
#define sp2space 4 /* 高级中断(软非屏蔽中断)堆栈大小 en_sp2为0时无效 */
#define os_time_isr 1 /* 系统定时器使用的中断 */
//
set_ea macro ;打开所有允许中断
setb ea
endm
(2)运行small rtos
在main函数中调用osstart()后系统开始运行,osstart()结束后运行优先级为0的任务。
注意:在调用osstart()前不要使能总中断标志,系统会自动使能这个标志,对于8051系列,这个标志为ea。
(3)建立任务:
small rtos使用静态方法建立任务,在config.h中有这样一段代码:
#ifdef in_os_cpu_c
extern void taska(void);
extern void taskb(void);
extern void taskc(void);
void (* const taskfuction[os_max_tasks])(void)={taska,taskb,taskc};
//函数数组taskfuction[]保存了各个任务初始pc指针,其按任务id(既优先级次序)顺序保存
#endif
用户只要定义好os_max_tasks,taskfuction[],任务将自动运行。其中taska等为任务对应函数。
注意:id为0的任务为最高优先级任务,系统运行后首先执行它。
(4)删除任务
small rtos 1.00版不允许删除任务,因此,每个任务必须为无限循环结构。
(5)任务睡眠
任务可以调用oswait()使自己睡眠,其原型如下:
unsigned char oswait (unsigned char typ, unsigned char ticks);
功能描述: 系统等待函数,任务调用此函数可以等待一定时间或信号
输入: typ: 等待事件类型,目前可以取以下值,或是其中任意个值的按位或
k_sig: 等待信号
k_tm 等待超时
ticks : 等待超时时的系统节拍数
输出 : not_ok : 参数错误
tmo_event : 超时到
sig_event : 有信号
如果任务等待信号,另一个任务可以调用ossendsignal()使其进入就
绪状态,其原型如下:
void ossendsignal (unsigned char taskid);
功能描述: 中断中给指定任务发送信号,既使指定任务就绪
输 入: taskid : 任务id
输 出: 无
中断调用osintsendsignal()也可以唤醒睡眠任务,其原型如下:
void osintsendsignal (unsigned char taskid);
功能描述: 任务中给指定任务发送信号,既使指定任务就绪
输 入: taskid : 任务id
输 出: 无
(5)优先级最低的任务
优先级最低的任务必须一直处于就绪状态,不允许调用oswait;
(6)small rtos 51 任务特殊处由于
small rtos51 使用许可协议
复制、发布和修改的条款和条件:
(1)任何人可以免费获取small rtos51 源代码用于非商业目的而无需作者同意。一
旦您得到这些源代码,表示您接受本协议。如果您不同意本协议,请销毁它,或是将其退回
原购买处。
(2)任何人可以分发small rtos51 源代码,条件是要完整分发,不能缺少任何一个
文件,目录结构也不得改变,也不能修改它的任何部分,
(3)如果要将small rtos51 用于您的项目中,而您的项目有商业目的,您也无需支
付任何费用,但您必须将项目的简要介绍、技术特点、应用范围、small rtos51 的使用情
况等说明文字交给作者,联系方法请阅读readme.txt 文件。
(4)法律与本许可协议冲突的地区暂时不允许使用本产品。如果您确实需要,可以与作者
联系。
没有担保
由于small rtos51 只是最终产品的程序的一部分,作者不提供任何类型的担保。不
论是明确的,还是隐含的。包括但不限于合适特定用途的保证。全部的风险,由使用者来承
担。如果程序出现缺陷,使用者承担所有必要的服务、修改和改正的费用。
数字化时代,IT 如何与业务融合
磁敏二极管特性_磁敏二极管的结构
NXPRDLib的收发器软件设计方案
产品力不容小觑,OPPO Reno10系列2499元起售,影像性能更强悍了
基站节电技术主要分类
small rtos51使用手册
非接触式界面对抗病原体的传播
清洁净肤神器,洁面仪什么牌子好
自动驾驶辅助系统性能评估软件MXeval5.0更新:精准泊车
不受控制的电源波形
为什么智能家居不吸引人
MAX3510上行CATV放大器系统的框图
区块链技术会怎样影响可再生能源的发展
人工智能发展出了丰富的应用模式 从而衍生出繁多的“变脸应用”
华为举办5G商业对话沙龙,携手运营商共促5G产业再升级
谁在改变智慧城市的路径
人工智能的发展,将是未来极速变化的核心
广信材料对外发布2019年上半年业绩预告:较上年同期增长50%至80%
华为2018:三十而立正当时 万物互联开新篇
iPhone 12系列在使用双卡时不支持5G网络