热爱开源,喜欢分析操作系统架构
发布时间:2013-04-26 15:12:35
对于任何一个多任务系统而言,由于涉及效率和安全性,其任务调度都是一个非常关键的部分。一般而言,由于涉及底层硬件的中断机制,这部分的代码都是用汇编完成的,MQX也不例外。这部分的程序可以在dispatch.s中找到。 在提具体程序之前先要说两个异常,第一个是SVC,另一个是PendSV。这两个异常都拿来给用户自定义用的,前.........【阅读全文】
发布时间:2013-04-25 20:57:34
多任务系统自然以任务为核心,在启动任务机制之后,MQX要么在任务中运行,要么就在中断服务程序里。相比linux还多了一个内核态,MQX则将内核操作也任务化了(权限比较高),如ipc任务。 MQX的任务可以在初始化的时候创建,也可以在任务运行时动态创建,还是比较灵活的,这都是建立在于动.........【阅读全文】
发布时间:2013-04-23 16:56:29
记得当时看linux源码时发现有中断线程化这么一个概念的时候让我很是新鲜,向来中断都是高高在上睥睨茫茫众生,想不到还能被进程拿下马来。当然linux采用这样的机制是为了考虑到实时性的要求,毕竟中断有各种各样的,总不能让一个十万火急的实时性进程等你一个悠哉悠哉相对不是太重要的中断服务结束吧。不过linux的中断线.........【阅读全文】
发布时间:2013-04-22 23:07:42
上一篇说了MQX中断的大致流程,本文我们重点关注一下细节问题,首先一个是中断优先级的问题。 在此我想简单说说cortex m4的中断异常的机制。由于这个部分是arm统一控制的,freescale的k60手册里没有提及,具体内容可以参考“Cortex-M4 Devices Generic User Guide”,里面说的已经比较详细了。 cortex m4的中断.........【阅读全文】
发布时间:2013-04-21 19:53:01
地址空间分布对于一个实时性系统而言是非常重要的组成部分。对于Cortex M4系列,既可以从flash直接运行代码,也可以从ram中运行,但是作为估计我们编译好的可执行文件都是烧录在flash里的。所以在系统上电和系统运行之前就有一个flash的相应内容拷贝到内存的一个环节,而这个环节就称之为加载。MQX的初始状态的内存分布.........【阅读全文】