10月底我们与Weston-embedded和Embedded office专家们成功举办µC/OS实时操作系统系列技术线上讲座。
第二讲是由麦克泰软件技术总监张爱华主讲的µC/OS-II 和 µC/OS-III 内核原理,我们课后整理汇总了一些问答,方便学员以及感兴趣的朋友了解μC/OS,下面就来一起看看有没有你想了解的!
Q是否有μC/OS移植相关的参考资料?
A将μC/OS移植到具体的处理器,需要了解处理器的寄存器现场,堆栈处理方式,以实现正确的任务现场保存;需基于处理器汇编指令架构实现任务的上下文切换工作。
建议新手基于官方提供的开发例程,通过分析相同架构的处理器移植代码,完成移植、验证工作。
QμC/OS-III中没有消息邮箱,那用什么服务替代?
A邮箱相当于长度为1的消息队列,μC/OS-III中可以使用队列服务替代邮箱的应用场景。
Q μC/OS支持创建相同优先级的任务吗?
AμC/OS-III提供时间片轮询算法,允许创建相同优先级的任务。μC/OS-II仅支持抢占调度算法,任务必须设置独立的优先级别。
QμC/OS中如何实现低功耗?
A用户任务阻塞时,μC/OS会运行最低优先级的系统任务,即空闲任务。空闲任务执行一个无限循环,每次循环调用OSTaskIdleHook()。为了节省空闲任务的功耗,可以在hook函数中配置处理器工作在低功耗模式。μC/OS-III为满足低功耗应用场景需求,增加了tickless模式和动态节拍模式。
Q使用μC/OS-II切换为μC/OS-III,要注意什么?
A将应用从μC/OS-II升级到μC/OS-III需要完成的工作。
Q内核配置是配置哪些内容?
AμC/OS配置文件的内容涉及具体应用需要的系统服务,支持的任务/优先级等信息,获取各个配置项的具体信息。
Q支持多核吗?
A目前μC/OS还不支持SMP架构运行。
Q有支持cpu任务负载统计吗?有栈大小的估计方法和自动化分析工具?
AμC/OS提供了统计任务,跟踪任务的CPU利用率。用户可以借助IDE提供的内核感知插件,可视化分析工具等获取任务相关的信息。一些IDE提供了堆栈使用分析,可以帮助确定每个任务需要多少堆栈空间。还可以借助RTOS的可视化分析工具,如Tracealyzer,在运行时监控堆栈使用情况,优化任务堆栈设置。
Q内核怎样访问任务列表?
AμC/OS应用中定义了一个数据结构,即任务控制块TCB,保存任务的关键信息,如优先级,任务堆栈等,通过内核提供的全局变量,访问列表结构,管理所有任务。具体内容可以参阅内核调度原理。
Q同等优先级任务有分时间片执行吗?
AμC/OS-III中同等优先级可以配置不同的时间片长度,在任务创建时设置。
QμC/OS-III有提供空间隔离和时间隔离吗?
AμC/OS-III暂时没有发布MPU版本,不支持空间隔离实现。μC/OS-II有提供空间隔离和时间监控的版本,具体信息可以访问https://www.embedded-office.com/products/flexible-safety-rtos。
QμC/OS-II还会继续维护么?
AWeston Embedded Solutions公司负责μC/OS-II的更新及商业服务,关于版本更新信息。
QμC/OS有相关RISC-V架构的移植么?
AμC/OS 支持RISC-V 的移植示例,可以访问
https://github.com/weston-embedded/uC-OS3/tree/develop/Ports/RISC-V/RV32/GCC
https://github.com/RISCV-on-Microsemi-FPGA/uCOS
Q浮点寄存器是默认任务切换时都进行保护和恢复吗?
A如果处理器支持FPU,那移植代码中包含对浮点寄存器的保护和恢复设置,这部分代码通过配置开关控制,默认情况下不使能包含。
Q空闲任务里运行什么代码?可以放功能进去吗?
A空闲任务是一个空循环,μC/OS-III中的实现如下:
用户可以在OSIdleTaskHook()函数中增加用户功能,注意,空闲任务不能调用阻塞服务函数。
QNKA KA中断类型是什么意思?OS中断向量表重定向了吗?
ANKA指Non-kernel aware中断,无需内核参与的中断。KA指Kernel Aware中断,即受OS管理的中断。中断处理方式不同。无需内核参与的中断处理方式与裸机系统相同。受OS管理的中断服务中,需要通知OS,示意代码如下:
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !