HRTOS

高可靠嵌入式实时操作系统

进入系统文档

系统定位

独立内核、接口层和应用层结构,每个进程堆栈空间独立,可直接运行在裸机上。

发展历程

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 已具备完整实时调度能力,可直接应用于嵌入式项目开发

支持快速部署,轻量高效,稳定可靠

应用示例 下载系统