飞思卡尔MQX信号量学习

摘要

这篇笔记主要介绍飞思卡尔MQX实时操作系统信号量的学习,以IAR环境,以搭载飞思卡尔KV46MCU的官方塔式系统硬件开发板硬件平台。

信号量

MQX共有三种类型的信号量,轻量级信号量(Lightweight Semaphores),信号量(Semaphore),还有一种叫互斥量(Mutex).,信号量在其他的操作系统中也有,功能都差不多,主要用来同步任务,以及控制对共享资源的访问,互斥量主要用于任务独占共享资源的访问问题。轻量级信号量是MQX核心组件,无需配置加载就可使用,默认是使能的,而信号量是可选组件,需要先配置使能。

信号量的操作和使用函数主要有:

使用信号量可以按照如下的建议步骤

使能信号量组件

创建信号量

打开信号量连接

使用完信号量,释放信号量

例程学习

参照例程学习是最好的理解和掌握知识的方法,看再多的描述,不动手操作永远也学不会,建议各位猿友参照官方的例程和文档学习,市面上的书籍和资料有的都是翻译过来的,不如官方原版的参照性。

在最新版的SDK1.2里面集成了对MQX的支持,更好的消息是也包括对kv4xMCU的支持,我们一直在用这个系列MCU讲解相关的知识,建议大家安装1.2版本的,SDK里面的驱动可以直接使用,不用在开发。

在例程安装目录下找到信号量的例程,并打开,进行batch build 编译。

C:\Freescale\KSDK_1.2.0\rtos\mqx\mqx\examples\sem\build\iar\sem_twrkv46f150m

可以发现初始编译例程有错误

这是因为信号量不像轻量级信号量是核心组件,信号量是可选组件,需要先使能该组件,按照编译提示修改代码

将small_ram_config.h中第118行的定义修改为1使能信号量组件

再次重新编译工程,可以看到编译通过,没有错误,如下显示

打开串口终端,并设置为115200,N,8,1的配置,下载运行程序

从例程源码中可以看出信号量的使用,源码中创建了三个相同优先级的任务来说明信号量的工作过程。

先在例程的指引下学会信号量的使用,像之前我们学习event的使用一样,在学习完这些组件后,我们会建立自己的工程。如果各位猿友还有什么不清楚的可以参考官方说明文档,这里不在赘述,这里要提的一点是查看观察下工程的配置,因为我们在前面的很多课程中都提高配置说明,所以这里不在详细说明,但自己一定要会配置,如果是自己开发搭建工程,配置不正确,那么后面的编译就别提了。

原文发布于微信公众号 - 嵌入式程序猿(InterruptISR)

原文发表时间:2015-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术记录

java-FFmpeg(一) 实现视频的转码和截图功能

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方...

1.9K80
来自专栏Android-JessYan

一行代码实现Okhttp,Retrofit,Glide下载上传进度监听

原文地址: http://www.jianshu.com/p/5832c776621f qq群:301733278

21020
来自专栏企鹅号快讯

一次垃圾邮件的分析

本篇文章来自同事对一次垃圾邮件的分析: 上周一(12月4号),朋友给我转发了一封垃圾邮件,邮件里面附带一个word文档,我们俩都是搞信安,自然察觉一丝危险的气味...

23770
来自专栏林欣哲

ISA指令集

今天的内容来源于《计算机系统概论》的第4章,介绍的指令是作者根据x86指令简化设计的一个自称为LC-3(Little Computer-3 edition)的指...

44270
来自专栏技术博文

关于微信二次分享,标题变链接的解决方法(二)----代码部分

声明: 本篇博文只是个人工作中的分享总结,仅代表个人观点,虽然解决了不少网友的问题,但同时也引来了一些网友的不满,所以特此声明,当您遇到本博文解决不了的问题,可...

37160
来自专栏Java成长之路

使用并行流还是CompletableFuture(四)

我们知道,对集合进行计算,可以使用并行和异步的CompletableFuture操作,都可以加快其处理,那么到底该使用并行还是异步呢?

24050
来自专栏walterlv - 吕毅的博客

.NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)

发布于 2018-08-19 12:42 更新于 2018-08...

38410
来自专栏猿人谷

多核环境下cache line的测试

前阵子接触到一道关于数组内部链表(多用于内存池技术)的数据结构的题, 这种数据结构能够比普通链表在cache中更容易命中, 理由很简单, 就是因为其在地址上是连...

25990
来自专栏恰童鞋骚年

操作系统核心原理-4.线程原理(上):线程基础与线程同步

我们都知道,进程是运转中的程序,是为了在CPU上实现多道编程而发明的一个概念。但是进程在一个时间只能干一件事情,如果想要同时干两件或者多件事情,例如同时看两场...

15030
来自专栏微服务生态

Akka简单的性能测试

这种方案是采用MQ作为中间的媒介,在服务端采用线程池异步处理任务,处理完成之后将结果发送到MQ中,客户端采用侦听的方式得到结果继续进行处理。

20210

扫码关注云+社区

领取腾讯云代金券