首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏嵌入式程序猿

    MQX任务学习

    MQX也是基于对任务的调度和管理来运行的,所以今天来简单学习下MQX的任务。 MQX像其他操作系统一样,提供对任务的调度和管理,任务是完成一定功能的函数,但并不是说所有的函数都可以是任务,每个任务都有自己的属性。 MQX的任务都有自己的堆栈,和描述符,以及自己的实现函数。 任务如果被终止,MQX将释放任务的资源。 MQX的任务调度包括三种: FIFO Round Robin 即时间片轮询 显示调度, 建议使用前两种。 每一种调度的详细源码请参考MQX源码包和参考手册。 在MQX的源码包中,任务的调度也是用汇编语言实现的,所以前面的课程中我们一直强调要熟悉一些ARM汇编指令,否则你根本看不懂和理解中断,启动,任务的调度和管理等过程。 ?

    74380发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    MQX中断系统深度解析(一)

    MQX中断处理过程 MQX的中断处理跟之前我们的无操作系统的处理过程稍微有点不同,MQX可以支持多种架构的处理器,为屏蔽不同架构在硬件上对中断管理的差异,使用了独特的中断管理子系统对中断事件的响应过程进行统一管理 ,可以确保MQX对中断事件的快速响应。 复位相量由硬件决定,不受MQX管理。 ? 在MQX中要弄明白,用户ISR不是任务,而是一个速度快,能对硬件中断做出迅速响应的例程,MQX也完全支持中断嵌套,MQX支持独立的中断栈,用于保存用户的ISR上下文。 配置MQX中断组件 由MQX用户手册可知,中断组件是一个可选组件,但在默认情况下,MQX是支持中断的,可参考mqx_cnfg.h源码。

    1.2K110发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    MQX MFS文件系统初识

    本篇笔记主要介绍基于MQX嵌入式实时操作系统下的MFS文件系统,以搭载Kinetis微控制器kv4x系列MCU的控制板为平台,以SDK1.2.0为基础,1.2.0已经包含MQX。 本笔记假设你已经清楚了解MQX工程建立,调试和任务创建。以IAR为开发环境。由于需要交互,所以请自行打开超级终端,或者安装SecureCRT或者其他工具。

    883130发布于 2018-04-11
  • 来自专栏嵌入式程序猿

    MQX中断系统深度解析(完)

    MQX中断系统深度解析(完) MQX ISR 例程分析 以飞思卡尔KSDK最新版1.2.0 MQX isr例程为例说明,飞思卡尔从KSDK的1.1.0版本起已经将MQX集成到SDK软件安装包里,建议大家安装学习 C:\Freescale\KSDK_1.2.0\rtos\mqx\mqx\examples ? 采用我们在以前的文章中讲过的批处理编译编译整个工程,编译完如下图所示: ? 从第一幅图的例程展开树状结构可以清楚的看到,例程的结构分为,KSDK库,mqx库和源码包,应用软件。 两个重要函数 _int_install_isr函数: 如果是默认安装目录,_int_install_isr 函数位于C:\Freescale\KSDK_1.2.0\rtos\mqx\mqx\source 可以说弄懂了这两个函数,就基本上弄懂了MQX的中断系统,例程虽然简单,但是却深入浅出的介绍了MQX中断系统的应用,可以根据这一例程,学习设计基于MQX的中断应用程序。

    1.1K60发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    MQX中断系统深度解析(二)

    在此提醒大家,如果是基于KSDK开发的软件,跟单独基于MQX的在配置上有些不同,飞思卡尔对kinetis MCU的SDK从1.1.0以后,已经包含MQX RTOS,即我们经常提到的MQX+SDK,源码结构上跟单独的 MQX有些变动,开发时候,要注意。 _KV4xF_1.0.0也是支持MQX的。 该函数位于内核源码包内的kernel文件夹下的int.c文件中,这个函数比较重要,可以参考飞思卡尔MQX参考手册仔细分析源码。 C:\Freescale\Freescale_MQX_4_2\mqx\source\psp\cortex_m\core\M4 ?

    1.1K70发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    三张图看懂MQX下多任务的调试

    在基于MQX RTOS的应用软件开发中,我们经常会遇到多任务的创建和调试,今天我们就来看看多任务的调试。 在IAR环境下,基于MQX操作系统的多任务调试其实还是很方便的,三张图带你快速了解多任务调试 点击菜单栏的MQX菜单进入如下图所示窗口,可以看到有任务列表,内核数据,任务总结,就绪队列,堆栈使用,事件组件等等

    72860发布于 2018-04-11
  • 来自专栏嵌入式程序猿

    飞思卡尔MQX信号量学习

    摘要 这篇笔记主要介绍飞思卡尔MQX实时操作系统信号量的学习,以IAR环境,以搭载飞思卡尔KV46MCU的官方塔式系统硬件开发板硬件平台。 信号量 MQX共有三种类型的信号量,轻量级信号量(Lightweight Semaphores),信号量(Semaphore),还有一种叫互斥量(Mutex). 轻量级信号量是MQX核心组件,无需配置加载就可使用,默认是使能的,而信号量是可选组件,需要先配置使能。 信号量的操作和使用函数主要有: ? 在最新版的SDK1.2里面集成了对MQX的支持,更好的消息是也包括对kv4xMCU的支持,我们一直在用这个系列MCU讲解相关的知识,建议大家安装1.2版本的,SDK里面的驱动可以直接使用,不用在开发。 C:\Freescale\KSDK_1.2.0\rtos\mqx\mqx\examples\sem\build\iar\sem_twrkv46f150m ? 可以发现初始编译例程有错误 ?

    90980发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    一步步学习MQX实时操作系统(2)

    上次简单介绍了MQX的一些背景和知识,今天我们来学习以IAR为开发环境,以kv4x系列控制器为平台,学习分析例程,搭建SDK+MQX开发环境。 打开rtos文件夹进入MQX文件夹就是MQX系统的源码目录结构, ? Build: 所有支持的板子的不同工具的build工程 Config:配置文件 Doc: 说明文档 Lib: 库文件 Mqxmqx源码包和例程 Mqx_nshell:shell 命令解析器文件 Mqx_stdlib :mqx标准库文件 像之前我们讲到过的基于SDK的裸机程序开发一样,在弄懂SDK结构的基础上,在来弄懂MQX源码目录结构,分析例程,在建立自己的第一个基于MQX的应用程序。 如果编译不过,要将MQX_USE_TIMER在small_ram_config.h和mqx_sdk_config.h文件中宏定义为1,因为timer是MQX的可选组件,默认是禁止的,需要用户自己配置打开

    1.3K60发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    飞思卡尔MQX环境下Modbus通信的软件开发

    Modbus协议是工业控制中经常会用到的通信协议,在飞思卡尔KSDK中的UART驱动是通用收发驱动,要在KSDK中实现Modbus通信,就要修改UART驱动,今天我们就来看看基于飞思卡尔KSDK1.2.0的MQX 环境下 modbus软件实现,基于你已经了解modbus协议和熟悉KSDK框架,并会搭建工程,如果不会搭建基于KSDK的工程可以参考公众号里之前有一系列的MQX工程搭建的文章。

    1.1K50发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    一步步学习MQX实时操作系统

    MQX简介 MQX实时操作系统是飞思卡尔为购买飞思卡尔控制器的用户免费提供的一款可定制的配置,只需占用较小的存储器空间,即可提供实时性能。这款实时操作系统使您能够根据性能需求,权衡并配置代码大小。 MQX分为linux版本和windows版本,windows 版本安装完安装包后,即可按照文档说明学习开发基于MQX的嵌入式程序,Linux版本可以安装在乌班图桌面系统中,运用linux指令操作。 如果是使用kenits kv4x系列控制器,请安装专门针对kv4x的安装包,最新的MQX+SDK是1.1.0。 MQX 是一个运行时函数库,程序用它来实现实时多任务应用。 MQX 支持多处理器应用,并且可用于灵活配置嵌入式输入/输出产品,如网络、数据通讯和文档管理等。 MQX结构组织 MQX 由核心组件(必选) 和可选性组件构成。 下节我们将正式开始学习MQX

    2.1K90发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    那些一看就懂的MQX实时操作系统进阶培训

    看过了MQX嵌入式系统入门培训,你是否想进阶培训呢,今天我们就来看看那些常用的功能进阶培训 工程建立 参照上节课的内容和MQX例程源码目录结构,可以新建我们自己的工程,这一步非常 关键,必须清楚目录结构 可以对照我们新建的工程与例程,App文件夹包含我们的应用源码,doc文件夹是一些开发文档,lib是MQX的库和ksdk的库,platform是飞思卡尔的SDK驱动源码,rtos文件夹是MQX源码。 系统时钟 在集成有MQX的KSDK1.2.0里面系统时钟默认配置如下: ?

    1.2K70发布于 2018-04-11
  • 来自专栏嵌入式程序猿

    那些一看就懂的MQX实时操作系统高级培训

    经过了MQX入门,进阶培训,是不是想在提升一下逼格,在掌握一些技能呢,今天我们就来看看小猿带给你的精彩高级培训。 Modbus 通信 众所周知,Modbus通信是工业控制中应用最广泛的简单易用的通信协议,那么在MQX下如何实现呢,因MQX自带的UART驱动是通用驱动,不适合Modbus,所以要对驱动做修改。 ? 具体详细内容可参阅本公账号文章《飞思卡尔MQX环境下Modbus通信的软件开发》 多任务的创建 在实际开发应用中,我们经常需要建立多任务,那么在MQX下多任务如何建立呢,一般我们需要在任务模板列表中声明 在SDK集成的MQX下也可以使用OSA_TaskCreate函数。 ? ? 关于多任务的调试,可以参阅本公众号文章《三张图看懂MQX下多任务的调试》,这里不在赘述。 至此,我们共分享了三次MQX从入门到高级的培训内容,相信对大家快速进入MQX应用软件开发很有帮助。

    1.2K50发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    一步步学习MQX实时操作系统(3)

    建立MQX应用程序 工程搭建 在分析timer例程的基础上,弄清楚了MQX+SDK程序开发的基本架构后,开始搭建我们自己的工程,以timer例程的目录结构为参照,新建MyFirstMqxApp工程,并添加 ksdk_mqx_lib, mqx_stdlib_twrkv46f150m, Mqx_twrkv46f150m, 如下图所示: ? 一定要记得配置勾选MQX插件。 ? ? 工程编译 采用批处理编译:project->batch build, 编译完成后显示如下: ? 至此,证明MyFirstMqxApp工程搭建编译成功。 修改完程序后,重新编译整个工程,直至没有错误,如有错误,根据提示看工程配置是否正确,MQX配置是否正确。 ? 讲到这里,你是否已经可以搭建自己的MQX+SDK工程,本文只是以一个很简单的例子引导大家,工程的搭建,并添加LED闪烁程序。 参考文档 ?

    99360发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    一步步学习MQX实时操作系统(4)

    启动流程分析 学习任何一种操作系统,我们都要分析它的启动流程,MQX实时操作系统启动分为芯片硬件启动和MQX操作系统启动。 MSP msr PSP, r0 执行startup.c文件完成初始化内存数据,我们使用的是MKV46,所以执行system_MKV46F15.c初始化系统时钟,最后进入main函数调用MQX 的入口函数_mqx()开始启动MQX,如下图所示。 MQX启动过程大致分为:初始化内核数据区,初始化外设,系统调度与启动。 这个系列到这里就基本结束了。 我们用四节课简单讲解了如何搭建基于SDK+MQX的工程,并简单完成一个任务,分析了启动代码,各位猿友如果有兴趣可以自己添加更多的任务到工程中,完成更多的任务功能。开启你的MQX学习之旅。

    98650发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    有图有真相

    自从上次简单讲解了飞思卡尔MQX RTOS系统后,不断有猿友留言,要求在讲讲启动流程,在一步步学习MQX系统的文章已经提到过,通过一步步跟踪可以清晰的看到MQX从上电到main函数执行的过程,今天我们就有图有真相 启动MQX运行系统 ?

    86060发布于 2018-04-10
  • 来自专栏嵌入式程序猿

    恩智浦对KSDK2.0动大手术换血了

    恩智浦针对kinetis系列MCU推出的KSDK2.0比以前的1.x版本有了很大变化,目录结构有很大不同,且不在支持MQX操作系统,所以在应用中要注意区别对待,另外一个特别大的变化是用户可以在网站使用bulid Device文件夹是一些k64的外设驱动,以及链接文件,系统启动该文件等 Docs是文档目录 Rtos是包含对freeRTOS的支持,从KSDK2.0后恩智浦不在支持MQX,支持freeRTOS,MQX 小猿觉得还不错,但是可能在国内推广做的不是很好,用的人不多,我们曾经在公号里推过一系列MQX文章,有兴趣的可以看看。

    967100发布于 2018-04-10
  • 来自专栏嵌入式学习

    stm32 HardFault_Handler调试及问题查找方法——飞思卡尔

    在 MQX 操作系统启动的时候会安装上默认的异常中断处理函数,当系统异常时会产生一个“unexpected”中断,内核就会自动调用异常处理函数,同时也将运行用户自定义的处理函数,来实现特殊故障的定位方法 默认情况下,MQX把出现异常的任务挂起,避免故障进一步扩大。通过TAD 任务感知调试插件的Task summary 功能,我们可以观察到出现异常的任务情况。 ? 另外,我们可以利用 MQX 的控制台串口输出Fault 异常信息来帮助调试。编写Fault 处理程序时,将启动代码中默认的Fault 处理程序跟换成自己需要的Fault 处理程序。 需要注意的是,由于是在中断中进行打印输出,MQX的控制台串口只能使用POLL 轮询模式的驱动,不能使用中断模式的驱动。       用户可以编写自定义的硬 Fault 处理程序_int_hardfault_isr,修改 MQX 的中断向量定义vector.c,把里面的DEFAULT_VECTOR 代码段换成下面的代码。

    6K30发布于 2020-09-08
  • 来自专栏前端进阶学习交流

    You-Get 就是这么强势! (文末赠书)

    gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7 MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7 MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M

    99210发布于 2021-09-14
  • 来自专栏Python爬虫与数据挖掘

    You-Get 就是这么强势!

    gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7 MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7 MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0 B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M

    1.2K40发布于 2021-08-20
  • 来自专栏嵌入式程序猿

    uIP和LwIP背后的那个牛逼男人

    其实现在物联网操作系统各吹个的,有好多种,大家多了解一些没坏处,像我们经常用的freeRTOS, MQX, contiki,uCos,mbed等,国产的 LiteOS, RT-Thread,RT-Thread

    1.7K70发布于 2018-04-11
领券