- i.MX RT开发笔记-01 | 初识 i.MX RT1062 跨界MCU
- i.MX RT开发笔记-02 | i.MX RT1062开发环境搭建(MDK芯片包、NXP SDK详解)
- i.MX RT开发笔记-03 | i.MX RT1062地址空间映射
- i.MX RT开发笔记-04 | i.MX RT1062启动方式
文章目录
- 系列文章目录
- 一、目的
- 二、新建MDK寄存器工程
-
- 新建工程文件夹
- 新建工程
- 添加启动文件
- 创建寄存器定义头文件
- 创建并添加main.c
- 三、新建MDK不同版本配置
-
- 1. 用于SRAM调试版本
-
- 创建target
- target设置
- 编译器设置
- 链接器设置(重要)
- Debug调试设置
- 下载器设置
- Utilities设置
- 开始调试
- 2. 用于Nor Flash烧写版本
-
- 设置并修改链接文件
- 编译
- 下载
一、目的环境说明:
- MDK版本:5.30
- SDK版本:2.9.3
建立一个最简单的寄存器版本工程,测试在MDK环境下是否可以正常编译和下载。
二、新建MDK寄存器工程新建工程文件夹
- MDK-ARM:用于存放MDK工程文件
- Src:用于存放用户源码文件
- Inc:用于存放用户头文件
新建工程
添加启动文件
从SDK中devices\MIMXRT1062\arm
复制启动文件过来:
在MDK中创建Startup分组,并添加启动文件:
创建寄存器定义头文件
在本工程中,芯片头文件(用于包含寄存器定义)我们自己写,在Inc文件夹下创建一个空文件MIMXRT1062.h
。
然后将此路径添加到工程中:
创建并添加main.c
main.c也是自己编写,在 Src 文件夹创建一个空文件即可,添加到MDK工程中:
main.c中暂时编写以下内容:
#include "MIMXRT1062.h"
int main(void)
{
while (1);
}
void SystemInit(void)
{
}
三、新建MDK不同版本配置
MDK工程可以创建多个 target,所有的 target 共用同一份项目文件,但是配置不同。
1. 用于SRAM调试版本
创建target
将当前工程 Target 名称修改为 ram_debug
,表示程序被烧写到RAM中,并且只能用于调试,不用于下载。
target设置
使用 ARMCC6 编译器,不开启浮点运算单元:
编译器设置
因为我们初期写的工程都比较简单,为了防止被编译器优化,将优化等级设为0:
链接器设置(重要)
从SDK中复制用于 RAM 中调试程序的链接脚本:
设置链接器使用该文件:
设置完链接文件之后就可以进行编译,警告如图:
这里我们设置忽略该警告:
再次编译,无告警:
Debug调试设置
该工程配置将程序烧写到SRAM中用于调试运行,掉电数据丢失。
从 SDK 的boards\evkmimxrt1060\demo_apps\hello_world\mdk
中复制调试器设置文件:
Debug选项设置如下:
下载器设置
进入CMSIS-DAP下载器设置:
勾选reset and run,无需添加下载算法:
pack中取消使能:
Utilities设置
取消调试前更新目标芯片选项:
开始调试
调试器所有选项设置完毕后,点击调试按钮,成功进入调试:
2. 用于Nor Flash烧写版本
设置并修改链接文件
链接文件也称为分散加载文件,从SDK中复制过来:
设置链接器使用该链接文件:
SDK中的链接文件适用于官方板,这里我们使用的是野火开发板,需要进行修改,点击上图中链接文件选项旁边的Edit:
注释该段代码:
设置忽略 6314 类型的编译警告:
编译
此时点击编译,可以编译成功:
下载
imxrt系列内部不带有Flash,需要使用开发板配套的下载算法将程序下载到外挂Flash中,这里先将野火的下载算法复制到Keil软件目录ARM/Flash
中:
选择CMSIS-DAP下载器:
点击Setting进入下载器设置:
如果检测不到芯片,需要注意先给板子上电,再给下载器上电。
选择并添加野火提供的寄存器版本工程下载算法:
添加下载算法后,增大算法RAM空间:
设置使用目标驱动来下载:
此时,点击下载,下载成功: