热爱开源,喜欢分析操作系统架构
发布时间: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的初始状态的内存分布.........【阅读全文】
发布时间:2013-04-20 19:03:19
对于习惯上位机编程的程序员而言动态内存分配自然是司空见惯、习以为常,但是对于我们这些折腾MCU开发的,本来小小的芯片里内存就那么几K,哪有什么余地搞动态内存。不过幸好cortex m带来了大堆的大容量的MCU,加上外扩SRAM的能力,使得系统可用的内存已经相当的可观了。但是如何使用这些可观的内存又是一件麻烦的事情,定.........【阅读全文】