QM UML状态机建模实例之移植 cortex-m0

时间:2023-03-10 02:04:29
QM UML状态机建模实例之移植 cortex-m0

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

在上一期“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>QM UML状态机建模实例之移植 cortex-m0 
<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0 
<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0 
<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0 
<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0 
<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0

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

<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0

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

<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0

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

<ignore_js_op>QM UML状态机建模实例之移植 cortex-m0

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

注:我们已将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状态机建模编程 群即可。

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