---恢复内容开始---

在上一期“Blinky for cortex-m0”中我们介绍了如何在QM中建立一个工程和生成代码,如何使生成的代码在我们的工程师运行起来,为此这一期要介绍如何将QP-NANO(qpn5.4.2)移植到CORTEX-M0中。
移植前的准备工作:
1.StateMachines板一块,使用其中的Systick滴答定时器
2.下载工具一个(我们使用Jlink)
3.下载官方qpn5.4.2代码
  
下面简单介绍下如何下载官方qpn5.4.2代码
首先直接到QP官网http://www.state-machine.com/然后选择Products,接着在右侧找到QP-nano并点击,可以看到跳转到了QP-nano可选资源上,选择QP-nano Downloads会跳转到sourceforge网站上,上面有QP-nano发布的全部版本,
找到5.4.2点击进入,最后选择下载资源的格式(一种为.exe和.zip)等待下载即可,具体请看下图:
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op>

下载后的.zip格式包解压后如下图所示:

<ignore_js_op>

我们移植需要使用的文件有:
1.include
2.ports
3.source
4.examples
将前三个文件夹拷贝到我们的工程模板中,在System文件夹下建立Qpn文件夹,将以上三个文件夹放入到Qpn文件中按下图路径存放(或者你的工程目录中):

<ignore_js_op>

注意ports下的文件是和硬件平台相关的,我们使用的硬件平台是stm32f030内核是cortex-m0系列的,所以只需要ports下的arm-cm,QP-nano因为我们使用的是合作式的内核,所以选择qv内核,编译器选择arm,具体路径请看下图:

<ignore_js_op>

使用到examples是因为里面有cortex-m0+内核例程,已经有移植好了systick
corter-m0和cortex-m0+的区别主要是功耗和运算能力的区别,所以可以使用里面移植好的bsp。
将examples里面的dpp_nucleo-l053r8例程下的bsp.c和bsp.h拷贝到我们的工程模板Device下(或者你的工程中目录中),具体路径请看下图:
<ignore_js_op> 
<ignore_js_op> 
<ignore_js_op>

注:我们已将bsp文件名改成QpnBsp文件名

移植前的准备工作已经完成了,接下来是在工程中添加QP-nano代码,使用KEIL MDK4.73以上的版本打开工程。在我们的工程中直接在System.Qpn.Core添加QP-nano代码(或者你的工程中目录中)
只需要添加:
1.qepn.c
2.qfn.c
3.qvn.c
在System.Device.Driver目录添加QpnBsp.c,添加好文件路径,并将QpnBsp中不需要使用到的变量和代码删除,具体请看Code.Qpn.QV.QM.Stm32f030Demo.Project V1.0工程
最后可以结合上一期的教程中生成的代码添加到工程中,运行一次验证移植是否成功。
这里简单介绍下QV内核和QK内核的特点
QV内核是带优先级的不可抢占的合作式内核,通俗的说就是使用CPU是合作式的不存在抢占CPU的情况,带优先级是对于所定义的活动对象在产生的事件队列分配运行次序中优先级高的先执行事件,低优先级的后执行事件。
QK内核是带优先级可抢占式的内核,意味着不同优先级的活动对象在任务级分发事件或者ISR分发事件都可能产生抢占,每一时刻都运行最高优先级的活动对象。更多QK,QV调度器资料请看PSiCC2-CN第二部分第6、7、8、10章节。

这样整个移植就介绍完成了,因为官方中已经有Cortex-m0的例程,所以省略了移植的细节部分,如果移植到不同的平台请参考官方的例程,具体的移植细节请参看PSiCC2-CN。

欢迎关注 燕雀窥鸿 的博客,后面会持续更新QM建模的应用。

如须了解更多关于StateMachines板信息X宝搜索QP学习板找到全然电子店铺,QM UML交流扣扣群搜索QM UML找到 QM UML状态机建模编程 群即可。

---恢复内容结束---

QM UML状态机建模实例之移植 cortex-m0的更多相关文章

  1. QM UML状态机建模实例之Blinky for cortex-m0

    简介:QP由Quantum Leaps公司开发异于传统顺序式系统(前后台架构即main+ISR)和传统多任务系统(操作系统)的事件驱动型状态机框架,实现了在C语言下的面向对象编程,该框架支持有限状态机 ...

  2. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  3. UML类建模(强烈推荐-思路很清晰)

    UML类建模(强烈推荐-思路很清晰) 2016年10月23日 15:17:47 mbshqqb 阅读数:2315 标签: uml面向对象设计模式 更多 个人分类: 面向对象程序设计   UML的构造快 ...

  4. UML类图实例分析

    登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是 ...

  5. 利用UML语言建模--以图书馆管理系统为例

    一.基本信息 标题:利用UML语言建模--以图书馆管理系统为例 时间:2016 出版源:内蒙古科技与经济 领域分类:UML:RFID:图书馆:模型: 二.研究背景 问题定义:建立图书馆管理系统 难点: ...

  6. UML状态机图【图3】--☆

    UML状态机图 基本概述    状态机图描述的是围绕某一事物状态变化的图.它也是三大流程分析利器之一.它和活动图的区别在于,活动图是描述事物发生的流程,是多个角色参与的,而状态机描述的是事物的状态变化 ...

  7. 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯

    灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...

  8. 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据

    灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...

  9. 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置

    灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...

随机推荐

  1. RANSAC 剔除错误匹配 估计模型

    随机抽样一致,这个算法,我以前一直都没有理解透彻.只知道可以用来直线拟合,网上大多数中文博客也都是写直线拟合的,但是用来匹配二维特征的时候,总还是没弄明白. 基本概念参考 http://www.cnb ...

  2. test 2016-12-28

    // dpm(variable_get('node_submitted_page'));// //0// dpm(variable_get('language_count'));// //i3 = i ...

  3. 个人评测——K米

    K米APP案例分析 关于 K米 -- 的案例分析 产品 K米的APP (全国KTV点歌,手机直播,互动,交友,预订)的Android客户端 第一部分 调研,评测 评测: 软件的bug,功能评测,黑箱测 ...

  4. json数组转普通数组 普通数组转json数组

    1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...

  5. java 计算 1到10 的 阶层的和(采用递归的方法)

    package hibernate; public class t { public static void main(String[] args) { System.out.println(jiec ...

  6. 理解HTTP幂等性

    转载: 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API ...

  7. jquery trigger 触发事件小计 -- 关于a标签

    jquery -- trigger触发执行事件方法虽然好用,偶尔也会出些小问题. 在最近得一个项目中需要触发a标签的点击事件时,我就遇到了点小问题.我很想当然的写层这样:$("a" ...

  8. 教你9个提升 Wordpress 网站安全性的方法

    大约一个月前,这个部落格被黑客入侵(编按:Amit Agarwal 的网站).而其他托管于相同主机商的网站像是 ctrlq.org 和2hundredzeros.com 也深受其害,黑客成功从网路上拿 ...

  9. 如何实现textarea中获取动态剩余字数的实现

    工作中遇到一个案例,之前没有写过,今儿啃了半个下午硬是给写出来,灰常又成就感!当然对于js大牛来说这根本不算啥,但是对于我自己的js能力又向前迈出一小步. 案例介绍:我们常见到有的网站有textare ...

  10. python 函数传递参数的多种方法

    python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...