裸机与操作系统的区别
裸机与RTOS的区别
裸机是在一个while循环中执行任务,只有执行完了上一个才能执行下一个
RTOS是将多任务分散开,每个任务执行一个时间,然后切换到下一个任务
1、操作系统可以实现多线程,虽然同一时间只能做一件事但是切换很快,裸机要轮流执行很慢
2、操作系统可以抢占线程,裸机只能使用中断实现,很慢,不实时(要一步步执行到中断的程序才可以触发)
3、操作系统在等待延时的时候,可以让出cpu,裸机只能死等
4、裸机是全部任务在一个无限循环中,但是rtos是每个任务一个无限循环
每一个任务都有自己的栈空间,在被中断打断的时候就会将当前环境变量存放在栈中,去执行其他任务
FreeRTOS
1、调度器的任务就在在就绪列表中找到任务优先级最高的任务
2、优先级是0 ~31
3、
FreeRTOS的移植
在一个裸机的基础工程中添加一个freertos操作系统,然后在开发板中跑起来
移植步骤
任务的创建
动态创建任务 -- 任务的任务控制块以及任务的栈空间,都是由于系统分配
任务控制块就是一个任务线程的身份证
第一个设置为1就是表示支持动态内存申请
入口函数负责创建出一个运行函数的各种环境(当入口函数中的任务被创建出来就会跳到具体函数中去执行)
具体实现函数负责实现函数的功能
在线程中添加代码使得进入临界区,线程的执行就无法被打断,记得线程最后要退出临界区
静态创建任务 -- 任务的任务控制块以及任务的栈空间,都是由于用户分配
任务的挂起与恢复的API函数
挂起就是暂停使用
注意在使用挂起函数的时候,要设置某个宏定义为1
中断优先级是中断触发的比任务优先级高,数字越小优先级越高
一般在5~15之间才有效
在中断中恢复任务,是指中断程序会将挂起的任务解挂
中断管理
中断优先级有两个部分 抢占优先级和子优先级
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)