MCU设计开发小Tips:创建并移植K10 BSP包的具体步骤和方法
extern "C" const TASK_TEMPLATE_STRUCT MQX_template_list[] =
{
// Task Index, Function, Stack, Priority, Name, Attributes, Param, Time Slice */
{ MAIN_TASK, main_task, MAIN_STACK, 11, "main_task", MQX_AUTO_START_TASK, 0, 0 },
{ 0 }
};
void main_task(uint_32 parameter)
{
while(1)
{
puts("A");
}
}
需要将C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\bsp中的bsp.a库文件,以及C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\psp中的psp.a库文件添加到工程中去。如下图10所示,点击main选择右键option for node "main",并在C/C++ Compiler的预处理器preprocessor和Assembler中设置文件的路径如下。
C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\bsp
C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\psp
C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\bsp\Generated_Code
C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug
图10. 在Option选项中设置
注意需要将 文件拷贝到C:\Freescale\Freescale_MQX_4_0\lib\K10DN512.iar\debug\psp文件夹中。
编译完成后,通过JLINK等烧写工具将软件下载到目标板后开始运行,系统运行的界面如图11所示。如果系统进不了main函数,说明MQX bsp系统移植还有问题,需要按照前面介绍的步骤进行仔细的检查。
图11 复位后运行进入main函数
系统进入main函数,在mqx函数处设置断点,点击图标go运行,程序进入mqx初始化部分,如图12所示。
图12 mqx初始化
在main_task中设置断点,再次运行,如图13所示,在IAR 的JLINK任务栏中可以找到TASK LIST列表。这里需要注意的是,需要在IAR的环境下,将option下debug插件的MQX勾选,如图14所示,勾选后才可以看到MQX的TASK等任务信息。
图13 主任务运行
图14 选取MQX
4.2 GPIO配置与任务调试
在MQX4.0安装目录C:\Freescale\Freescale_MQX_4_0\mqx\examples下可以找到很多参考例程,包括ADC、 Hello、 I2C、 Lowpower、 Timer等。这里采用使用的最多的GPIO例程来验证BSP是否能正常工作。
由于在默认的bsp包中user_config.h中没有配置使能BSPCFG_ENABLE_GPIODEV外设,需要在该文件中加入语句#define BSPCFG_ENABLE_GPIODEV 1,如下图15所示。
图15 使能GPIO任务配置
在这里,为了验证MQX4.0版本操作系统对于MQX3.8等早期版本软件代码的兼容性,本例使用的源程序 代码,可以在MQX3.8版本的安装目录中C:\Freescale\Freescale MQX 3.8\mqx\examples\gpio找到。直接将该文件添加到工程中,如图16所示,在IAR的主程序中,在读IO状态处设置断点,系统执行到此断点处,如果开启IAR任务栏的TASK List, 在Stack Uage Summary窗口可以看到任务和栈的运行情况。
图16 GPIO任务 运行
这里需要注意的是,代码中用到了一些BSP_BUTTON1,BSP_LED1等宏定义,这些宏定义在MQX4.0的安装目录C:\Freescale\Freescale_MQX_4_0\mqx\source\bsp\K10DN512的K10DN512.H文件中可以找到,例如BSP_LED1中的宏定义如下:
#define BSP_LED1 (GPIO_PORT_A | GPIO_PIN11)
如果目标板中的LED引脚和默认的设置不一样,需要对其进行修改,然后重新编译。
另外在通过下载工具调试代码的时候,需要指定icf配置文件,如图17所示。这里K10DN512和K60DN512的Flash大小一样,不需要做修改。如果使用其他不同配置的芯片则需要对Memory Region进行调整。
图17 ICF文件的位置指定
5. 总结
本文介绍了如何基于飞思卡尔的MQX操作系统,创建并移植目标MCU的 BSP包,并可以针对不同的开发平台(CW, KEIL, IAR)定制适合目标芯片的BSP。
Kinetis 操作系统 以太网 飞思卡尔 MCU 相关文章:
- 智能新趋势 飞思卡尔MCU引领嵌入式应用(03-01)
- 飞思卡尔固定式ePOS终端设计方案(09-23)
- Kinetis 平台的电容式触摸键盘设计(07-30)
- Kinetis M微控制器:面向计量方案的攻城利器(06-15)
- 时钟模式配置以及在MCU应用(09-12)
- 物联网操作系统Ruff 开发无人机项目体验分享(05-02)