专栏首页嵌入式程序猿一步步学习MQX实时操作系统(2)

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

上次简单介绍了MQX的一些背景和知识,今天我们来学习以IAR为开发环境,以kv4x系列控制器为平台,学习分析例程,搭建SDK+MQX开发环境。

准备工作

安装SDK软件Freescale_KSDK1.1.0_KV4xF_1.0.0.exe

可在飞思卡尔网站免费下载,这个版本的SDK已经集成支持了MQX。

安装编译环境IAR7.3(Code Warrior/Kds/Keil) 本笔记以IAR为例说明,其他开发环境类似,配置会有不同。

SDK+MQX目录结构

还是那句话,其实移植修改任何的源码包,第一件事情就是熟悉源码包目录结构,下图就是SDK安装完的源码目录结构。

boards文件夹 是管脚定义,配置。

platform文件夹是链接文件,启动代码,和SDK的源码。

Lib文件夹包含编译好的库文件。

demos文件夹是一些基于SDK的软件例程。

Filesystem文件夹是跟文件系统相关的

rtos文件夹是几个实时操作系统(MQX,uCOSII,uCOSIII等)相关的文件 这些在用到操作系统时候才会用到,如果你是基于裸机的程序可以不用考虑这个文件夹

打开rtos文件夹进入MQX文件夹就是MQX系统的源码目录结构,

Build: 所有支持的板子的不同工具的build工程

Config:配置文件

Doc: 说明文档

Lib: 库文件

Mqx:mqx源码包和例程

Mqx_nshell:shell 命令解析器文件

Mqx_stdlib:mqx标准库文件

像之前我们讲到过的基于SDK的裸机程序开发一样,在弄懂SDK结构的基础上,在来弄懂MQX源码目录结构,分析例程,在建立自己的第一个基于MQX的应用程序。

例程分析

以timer例程为例来做说明:

  1. 打开timer例程工程
  1. batch build 编译 采用batch build 编译(如何进入batch build在《基于飞思卡尔SDK的应用软件开发指南》中已经讲过,步骤类似,可参考那篇文章)。
  1. 下载程序

编译完成后如没有错误下载可执行文件到硬件飞思卡尔公司的塔式系 统板件中,打开串口调试助手,并设置为:

波特率: 115200bps

校验位:无

数据位: 8

停止位: 1

运行程序,在串口调试助手中可观察到下图

如果编译不过,要将MQX_USE_TIMER在small_ram_config.h和mqx_sdk_config.h文件中宏定义为1,因为timer是MQX的可选组件,默认是禁止的,需要用户自己配置打开,在重新编译内核文件和工程,直至编译通过。

结构分析

从工程目录结构就可以分析出,一个MQX+SDK工程需要包含哪些内容,如下图所示:

MQX库子工程,SDK库子工程和,mqx 塔式系统kv46f150workspace,以及用户自己的应用软件工程,

其中自己的应用软件工程应该包括:

BSP(boardsupport package) 板载支持包组件

配置文件群组

调试平台文件群组

SDK系统启动文件群组

用户自己的源码群组

分析完工程的构成,就得看看工程主要的几个配置:

以上的配置项都是非常重要的,关乎程序正常运行和编译。大部分配置跟在《基于飞思卡尔SDK平台的应用软件开发指南》中讲的基本类似。

今天先讲到这里,下次将以例程为模板搭建我们自己的工程,并添加外设驱动,开发应用程序。更多精彩内容,请继续关注嵌入式程序猿。

本文分享自微信公众号 - 嵌入式程序猿(InterruptISR),作者:武国平

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-04-29

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    MQX简介 MQX实时操作系统是飞思卡尔为购买飞思卡尔控制器的用户免费提供的一款可定制的配置,只需占用较小的存储器空间,即可提供实时性能。这款实时操作系统使您...

    用户1605515
  • MQX中断系统深度解析(二)

    在此提醒大家,如果是基于KSDK开发的软件,跟单独基于MQX的在配置上有些不同,飞思卡尔对kinetis MCU的SDK从1.1.0以后,已经包含MQX RTO...

    用户1605515
  • 一张表看懂uIP和lwIP的区别

    我们给大家介绍过目前比较流行的开源TCP/IP开源协议栈uIP和lwIP, 这两种都是由瑞典计算机科学研究院开发的,广泛应用于嵌入式系统中。因为全功能的TCP/...

    用户1605515
  • mybatis框架Mapper配置详解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    多凡
  • 【小家java】一个例子让就能你彻底理解Java的Future模式,Future类的设计思想

    Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门。Future模式就是,当某一程序提交请求,期...

    YourBatman
  • 在开始强化学习前,你所需要了解的知识。

    在两篇文章中,我将分享约85页强化学习教科书中最重要的内容。RL是任何机器学习从业人员工具包中非常有用的工具,这些帖子被设计为强化学习的基础,以便尽快实现最新的...

    人工智能资讯小编
  • 深信服一面C++

    Linux中创建共享内存的方式?共享内存中起始地址是不是按照页的大小对齐?创建共享内存的时候物理页一定分配吗?惰性空间分配的实现方式?

    牛客网
  • 《谷歌访问助手》访问Chrome商店 Gmail 谷歌搜索

    每当我向小伙伴分享超棒的Chrome插件(扩展程序)的时候, 总会有小伙伴问,从哪里下载Chrome浏览器以及Chrome扩展程序, 这篇文章就为这个问题做一个...

    zhaoolee
  • 【英伟达要担心亚马逊造 AI 芯片吗?】谷歌、苹果、微软、亚马逊AI芯片对比

    新智元编译 来源:fool.com 编译:Marvin 【新智元导读】凭借GPU,英伟达公司一直是AI趋势的最大受益者之一。但随着科技巨头纷纷研发自己的...

    新智元
  • IO通信模型(一)同步阻塞模式BIO(Blocking IO)

    阻塞IO 和非阻塞IO 这两个概念是程序级别的。主要描述的是程序请求操作系统IO操作后,如果IO资源没有准备好,那么程序该如何处理的问题:前者等待;后者继续执行...

    未读代码

扫码关注云+社区

领取腾讯云代金券