2013年(15)
发布时间:2013-10-15 15:12:11
上一篇说了MQX中断的大致流程,本文我们重点关注一下细节问题,首先一个是中断优先级的问题。 在此我想简单说说cortex m4的中断异常的机制。由于这个部分是arm统一控制的,freescale的k60手册里没有提及,具体内容可以参考“Cortex-M4 Devices Generic User Guide”,里面说的已经比较详细了。 cortex m4的中断.........【阅读全文】
发布时间:2013-10-15 15:12:01
相对于ucos和rt thread,MQX的中断机制要复杂的多。可能是因为MQX只针对freescale的芯片,对自家芯片特别是针对cortex内核有了更加详细的优化,而前者两套系统考虑到移植方面的原因,没有在中断上面做过多的处理。下面我来介绍一下MQX的中断机制。 MQX的中断采用了灵活的随时注册随时用的机制,相对于采用传统静态编.........【阅读全文】
发布时间:2013-10-15 15:11:49
地址空间分布对于一个实时性系统而言是非常重要的组成部分。对于Cortex M4系列,既可以从flash直接运行代码,也可以从ram中运行,但是作为估计我们编译好的可执行文件都是烧录在flash里的。所以在系统上电和系统运行之前就有一个flash的相应内容拷贝到内存的一个环节,而这个环节就称之为加载。MQX的初始状态的内存分布.........【阅读全文】
发布时间:2013-10-15 15:11:37
对于习惯上位机编程的程序员而言动态内存分配自然是司空见惯、习以为常,但是对于我们这些折腾MCU开发的,本来小小的芯片里内存就那么几K,哪有什么余地搞动态内存。不过幸好cortex m带来了大堆的大容量的MCU,加上外扩SRAM的能力,使得系统可用的内存已经相当的可观了。但是如何使用这些可观的内存又是一件麻烦的事情,定.........【阅读全文】
发布时间:2013-10-15 15:11:15
本人看代码,无论多长,都习惯从最开始看起。一般的裸奔的程序,从main函数看起也就够了。可惜MQX是一个复杂的系统,源码都有几十兆,如果从main开始看的话就会忽略一些关键的步骤,因此我从代码最初运行的部分开始说起。代码之始(请原谅我糟糕的命名品味)在哪呢,这个要问链接器了。本人的编译IDE用的是Keil,在工.........【阅读全文】