📄 ˵
字号:
感谢各位参与本内核的测试.
由于本人水平有限,C代码暂时还无法实现移植功能,所以暂时未公开原代码,
请见量.
如果各位发现该内核有缺陷,或者不足.请各位直言,我诚恳地接受各位的教诲.
在此本人作出声明:
本内核竟未测试版本,版本号V0.01B
该内核可供各位免费使用,但不得用于商业用途.
如果你想将其用在商业用途,请与本人联系.否则出现的一切后果本人绝不
负责.
内核描述:
该内核暂时取名Mini X
该内核目前只支持任务调度
内核C长度不超过300行,汇编长度不超过120行
编译内核代码长度为1010
支持优先级 255个 ,最低优先级为空闲任务
支持任务时间片轮延时
只提供4个任务函数
建立线程 OS_CREATE_TASK
线程延时 OS_TASK_DLY
读线程状态 OS_GET_READY
设置线程状态 OS_SET_READY
空闲任务由用户自行编写(必须编写),并且必须为最低优先级(0xff)
用户可以让空闲线程进入低功耗或者作统计
用户最多可以建立255条线程,用户线程必须为闭环函数.
目前还处于测试和整理阶段,暂时还只基于8051
使用的开发环境为KEIL 7
以下是内核文件说明:
MINIX.H 内核头文件,里面包含相关内核设置.
MINIX.LIB 内核库文件.
MINIX_CP.C 内核时间片轮函数
userc.c 用户函数,该文件里面包含简单的应用例子.
以下对内核函数进行说明:
void OS_SAVE_SYSTEM(void); //保存系统积存器函数(属于系统函数,用户可不与理会)
void OS_RESTORE_SYSTEM(void); //恢复系统积存器函数(属于系统函数,用户可不与理会)
unsigned char OS_TASK_SELECT(void); //线程选择器(属于系统函数,用户可不与理会)
void OS_TASK_DLY(unsigned char times); //线程延时程序(属于用户函数,用于设置当前线程的等待时
钟片轮的等待时间数量)
unsigned char OS_GET_TASK_ID(void (*task)); //获取线程ID(属于用户函数,用于获取指定线程的ID,暂
时意义不大)
void OS_SET_READY(void (*task),unsigned char key);//设置READY位(属于用户函数,用于设置线程的活动状
态,KEY未1线程激活,KEY未0线程运作关
闭)
unsigned char OS_GET_READY(void (*task)); //获取线程READY状态(属于用户函数,读取线程状态,如果读
出为1表示线程处于激活状态,如果为
0线程处于停止状态)
void OS_START_TICK(void); //开时钟(属于用户函数,不过由系统调用.用户可以通过修
改MINIX_CP.C文件进行修改)
void OS_RESTORE_TICK(void); //恢复时钟(属于用户函数,不过由系统调用.用户可以通过修
改MINIX_CP.C文件进行修改)
//构造函数声明(用户函数,用于建立线程)
void OS_CREATE_TASK(
void *task, //线程入口地址,线程函数的物理地址
unsigned char task_ready, //线程状态,设置线程状态1为激活0为停止
unsigned char task_pri, //线程优先级,0~255,0为最高优先级,255最低并保留给
空闲任务
unsigned char task_sp_bot //线程堆栈底部,设置线程的堆栈位置,该参数占用内存
资源,并且该线程要与上一条线程与下一条线程保持
一定的距离,因为线程工作时会对其进行入栈出栈工作
和保存线程CPU积存器工作,设置时需要要慎重考虑.
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -