发布时间:2013-10-15 15:14:19
之前在动态内存分配说提到了对应MQX的所分配的一个动态内存块,是要定义一个所有者任务的。至于为什么一定要把动态内存以任务为组织形式来管理,是因为MQX是一个非常强调任务的系统。对应MQX而言,完成功能的载体是任务,分配内存是为了完成功能,那这些的内存的拥有者就必然是任务。之前说过,动态内存分配是采用了BLOCK.........【阅读全文】
发布时间:2013-10-15 15:14:10
前面说了一下任务的数据结构,就算是为了本文做个铺垫,现在我来说一下MQX是如何创建一个任务的。 MQX创建任务有多种方式,但创建任务的前提是必须有task_template_struct。这个task_template_struct可以通过静态的方式添加,也可以动态的添加。 举个静态添加的例子,在hello.c中: const TASK_TEMPLATE_STRUCT MQX_tem.........【阅读全文】
发布时间:2013-10-15 15:13:53
所谓人在江湖漂,哪有不挨刀,就算再牛逼的程序员也会写出有bug的程序。程序bug不可怕,最怕的是引发错误导致系统崩溃,这个在下位机编程是非常常见的,比如内存泄漏导致对不可读写地址进行读写操作导致的Hard Fault,违反MPU导致的MemManage Fault,这些错误都会让我们整个系统崩溃。相对而言,上位机程序bug一般就只会.........【阅读全文】
发布时间:2013-10-15 15:13:34
对于个人用户来说MQX的用户模式似乎显得有些多余,花费不少资源,故意找一些东西限制住自己看起来真的是没有什么必要。但从freescale官方来说,完善系统的权限机制还是相当有必要的,针对多人协作开发的项目来说,搞底层的人搞底层,搞应用的搞应用,靠着系统调用作为衔接,分工明确,责任分明。在这点上,就像linux这类.........【阅读全文】
发布时间:2013-10-15 15:13:28
之前说了MPU,现在说说MQX是如何使用MPU的。对于Privileged级,一般来说对整体0x00000000~0xffffffff都是有rwx权限的,(当然这个只是MPU的权限,就算是Privileged级,访问了不该访问的地址还是会出现异常错误的,不过不是MPU引发的而已)关于Unprivileged的MPU设置就比较复杂一点,具体设置的地方在_bsp_enable_card函.........【阅读全文】