系统概览
HRTOS 是一个基于优先级抢占调度的实时操作系统,支持多任务运行, 同优先级任务采用时间片轮转机制。 系统提供完整的内核能力,包括中断管理、任务同步、定时器管理、 进程通信、文件管理、互斥机制以及内存管理等模块。 在实时性与可靠性方面,HRTOS 支持互斥体优先级继承机制, 有效避免优先级反转问题;同时对中断处理进行了优化设计, 将处理器支持的 32 个中断源进行集中管理,显著提升中断可控性, 并保障任务堆栈安全,同时减少对有限硬件堆栈空间的占用。 系统支持动态优先级调整,任务可灵活进行创建、挂起、就绪与删除, 并通过内存池机制实现高效的动态内存分配。
1. 任务管理
| 函数名 | 功能 | 输入 | 返回 | 嵌套层 | 识别号 |
|---|---|---|---|---|---|
| os_task_ready(unsigned char id) | 挂起→就绪 | 任务编号 | -1/0 | 0 | B007 |
| os_task_hang(unsigned char id) | 就绪→挂起 | 任务编号 | -1/0 | 0 | B002 |
| os_task_function(unsigned char id) | 指定下次运行任务 | 任务编号 | -1/0 | 0 | B005 |
| os_task_delete(unsigned char id) | 删除任务 | 任务编号 | -1/0 | 0 | B104 |
| os_task_exit() | 退出当前任务 | 无 | 无 | 0 | B003 |
| os_task_state(unsigned char id) | 查询任务状态 | 任务编号 | 0~4/-1 | 0 | B101 |
2. 优先级管理
| 函数名 | 功能 | 输入 | 返回 | 嵌套层 |
|---|---|---|---|---|
| os_priority_query(unsigned char id) | 查询任务优先级 | 任务编号 | 0-8/-1 | 0 |
| os_priority_modify(unsigned char id,unsigned char pr) | 修改优先级 | 任务编号,目标优先级 | -1/0/编号 | 0 |
3. 内核相关
| 函数名 | 功能 | 输入 | 返回 | 嵌套层 |
|---|---|---|---|---|
| os_rtos(unsigned char id) | 选择任务模式 | 0/1 | 0/-1 | 0 |
| os_scheduling(unsigned char id) | 选择调度器 | 0/1 | 0/-1 | 0 |
| os_task(unsigned int addr,unsigned char id,unsigned char pr,unsigned char sd) | 注册任务 | 任务地址,编号,优先级,嵌套层 | 0/-1 | 0 |
| os_interrupt_exit() | 中断退出 | 无 | 无 | 0 |
| os_dispatch_id(U8 INTERRUPT_ID) | 选择调度器中断源 | 0~31 | 0/-1 | 0 |
4. 任务同步
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_semaphore(u8 id) | 同步调用 | 0~15 | 0/-1 |
| os_semaphore_control(u8 id,u8 x) | 同步控制 | 0~15,x | 0/-1 |
5. 锁
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_lock_init() | 初始化锁 | 无 | 无 |
| os_lock(unsigned char i) | 取得锁 | 0~7 | 0/-1 |
| os_lock_release(unsigned char id) | 释放锁 | 0~7 | 0/-1 |
6. 时间
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_nop() | 短延时 | 无 | 无 |
| os_timer_length(unsigned char j,unsigned int i) | 定时器管理 | 片数,大小 | 0/-1 |
| os_wait(u8 i,u8 j) | 系统延时 | 类型,次数 | 0/-1 |
| os_wait1(u8 i) | 系统延时子集 | 片数 | 无 |
| os_wait2(u16 j) | 延时 | 时钟数 | 无 |
7. 信号
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_event_out(u8 id) | 发送信号 | 0~15 | 0/-1 |
| os_event_xy(u8 id) | 查询信号 | 0~15 | 0/1/-1 |
| os_event_del(u8 id) | 删除信号 | 0~15 | 0/-1 |
8. 中断
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_inter() | 中断编号查询 | 无 | 编号 |
9. 邮箱
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_news_send(id,oo) | 私有邮箱发送 | 0~15,内容 | 0/-1 |
| os_news_send1(id,oo) | 单字节公共邮箱发送 | 0~7,内容 | 0/-1 |
| os_news_send2(id,oo) | 双字节公共邮箱发送 | 0~7,内容 | 0/-1 |
| os_news_query(id) | 私有邮箱查询 | 0~15 | 0/-1 |
| os_news_delete(id) | 私有邮箱清除 | 0~15 | 0/-1 |
10. MyOS
| 函数名 | 功能 | 输入 | 返回 |
|---|---|---|---|
| os_operate(u16 addr) | 运行指定函数 | 地址 | 无 |
| os_task_id() | 查询当前任务编号 | 无 | 编号 |
| os_task_service(u8 id) | 记录下一个运行任务 | 任务编号 | 无 |
| os_task_release(u8 id) | 运行任务 | 任务编号 | 无 |
| os_task_protect(u8 id) | 保护之前运行任务 | 任务编号 | 无 |
| os_select(u8 id) | 选择下一个任务 | 当前任务编号 | 下一任务编号 |
| os_inter_sp() | 查询中断堆栈地址 | 无 | 堆栈地址 |