独立内核、接口层和应用层结构,每个进程堆栈空间独立,可直接运行在裸机上。
HRTOS更名于2017年11月17日,源自“Hard real-time operating systems”。
系统开发完毕,支持自写内核、多任务调度、中断优先级管理等功能。
基于优先级抢占,支持时间片轮转、动态优先级调整、任务创建与删除。
集中管理最多32个中断源,提高可控性和堆栈安全性,支持优先级继承防止反转。
内存池机制,动态申请和释放内存,保证系统稳定运行,支持多任务安全访问。
| 地址 | 功能 | 描述 |
|---|---|---|
| 0~31 | 四个工作组 | 由状态寄存器(PSW)决定当前使用哪组工作寄存器 |
| 32~33 | 位数据 | 系统定义位变量所在地址区域 |
| 34~38 | 系统堆栈 | HRTOS 内核堆栈 |
| 39~42 | 中断堆栈 | 中断服务程序所用堆栈 |
| 43~106 | 程序堆栈区 | 用户程序堆栈区域 |
| 107~123 | 程序数据区 | 用户自定义 |
| 124~127 | 系统数据区 | 系统变量 |
#include<myos.h>
#include<reg52.h>
u16 my_inter[10]; // 中断地址
void os_slab_ov(){}
volatile void my_os()
{
U8 i;
i = os_inter(); // 中断号
if(i==1) // t0 内核
{
TF0=0;
TH0=0;
TL0=0;
i=os_task_id(); // 运行编号
os_task_protect(i); // 保护任务
i=os_select(i); // 指定任务
os_task_release(i); // 运行任务
}
else
{
if(i){i--;} // 不是INT0减一
os_operate(my_inter[i]);
}
}
void hrtos_main()
{
EA=0;
os_task(my_os,15,9,0);
os_task(my_main,1,1,2);
EA=1;
while(1);
}
#include<hrtos.h>
#include<reg52.h>
#define HRTOS_LED P0
sbit HRTOS_K=P3^2;
sbit HRTOS_K1=P3^3;
sbit HRTOS_K2=P3^4;
extern char os_task_sp(u8 id);
extern unsigned char xdata OS_MEMORY[4];
void os_slab_ov(){}
void task1()
{
while(1);
}
void task2()
{
while(1)P0=0;
}
void task3()
{
while(1);
}
void task5()
{
while(1);
}
void task4()
{
u8 i;
EA=0;
i=os_task_sp(1);
HRTOS_LED=i;
while(HRTOS_K);
os_task_delete(1);
os_task(task1,16,8,1);
os_task(task5,5,2,2);
i=os_task_sp(16);
HRTOS_LED=i;
while(1);
}
void hrtos_main()
{
EA=0;
os_task(task2,1,1,1);
os_task(task4,3,2,2);
os_task(task3,17,8,2);
os_task_hang(17);
os_task_hang(16);
EA=1;
while(1);
}
#include<MYOS.h>
#include<reg52.h>
#define HRTOS_LED P0
sbit k=P3^7;
void task1()
{
while(1)
{
HRTOS_LED=0;
my_hrtos();
}
}
void task2()
{
while(1)
{
HRTOS_LED=1;
my_hrtos();
}
}
void task3()
{
while(1)
{
HRTOS_LED=3;
my_hrtos();
}
}
void task4()
{
while(1)
{
HRTOS_LED=7;
my_hrtos();
}
}
void task5()
{
while(1)
{
HRTOS_LED=15;
my_hrtos();
}
}
void task0()
{
while(1)
{
HRTOS_LED=255;
my_hrtos();
}
}
void task01()
{
HRTOS_LED=0;
while(k);
os_interrupt_exit();
}
void task02()
{
HRTOS_LED=18;
while(k);
os_interrupt_exit();
}
void my_main()
{
EA=0;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
my_task(task1,0);//启动进程
my_task(task2,1);
my_task(task3,2);
my_task(task4,3);
my_task(task5,4);
my_task(task0,5);
my_task(task01,14);
my_task(task02,16);
os_scheduling(0);//手动调度
EA=1;
while(1);
}
HRTOS 已具备完整实时调度能力,可直接应用于嵌入式项目开发
支持快速部署,轻量高效,稳定可靠