MCUXpresso Config Tools+Keil开发野火RT1052 Pro
文章目录
基本信息
硬件
-
开发板:野火RT1052 Pro
-
核心板:i.MX RT1052 BTB接口核心板(CPU:MIMXRT1052CVL5B ·主频:600M)
从野火例程/doc/必读说明.txt中摘出:
/*********************************************************************************************/
【核心板相关的存储器说明】RT1052芯片内部的RAM存储器,其内部无ROM类型存储器:
ITCM:指令紧耦合缓存(Instruction Tightly-Coupled Memory),
默认大小为128KB,总线宽度为64位,
芯片设计它专用于缓存需要高速执行的指令。
基地址为:0x0000 0000DTCM:数据紧耦合缓存(Data Tightly-Coupled Memory),
默认大小为128KB,总线宽度为“双32”位,
芯片设计它专用于缓存需要高速访问的数据。
基地址为:0x2000 0000OCRAM:片上RAM(On-Chip RAM),
默认大小为256KB,总线宽度为32位,
芯片设计它用于缓存数据。
基地址为:0x2020 0000核心板上的存储器:
SPI NorFlash:默认使用W25Q256型号的SPI NorFlash,大小为32MB,
它连接至RT1052的FlexSPI外设的A1端口,
设计用于掉电保存程序代码,支持XIP
基地址为:0x6000 0000SDRAM:默认使用W9825G6KH型号的SDRAM,大小为32MB,
它连接到RT1052的SEMC外设,
设计作为内存
基地址为:0x8000 0000//
//【*】 时钟
A.晶振:
-外部高速晶振:24MHz
-RTC晶振:32.768KHzB.各总线运行时钟:
-CPU = 528MHz
-AHB = 528MHz
-SYSPLL = 528MHzC.浮点运算单元:
使能/*********************************************************************************************/
P.S. 必读说明对于学习RT1052例程很重要,要认真阅读
- 调试器:野火fireDAP / ST-Link V2
软件
-
MCUXpresso Config Tools (V15.0)
-
Keil μVision (V5.33.0.0)
野火资料
[野火]i.MX RT库开发实战指南——基于i.MXRT1052 — [野火]i.MX RT库开发实战指南——基于i.MXRT1052 文档 (embedfire.com)
工程建立
- 打开MCUXpresso Config Tools,选择“创建一个基于SDK 实例或 hello world 工程的新配置和工程”,点击下一步
- 设置SDK路径(SDK包从官网Dashboard | MCUXpresso SDK Builder (nxp.com)下载),这里使用SDK_2_15_000_MIMXRT1052xxxxB
- 选择工具链Keil MDK
- 勾选“克隆选择的电路板或套件示例”,右侧选择SDK示例,这里以EVKB IMXRT1050电路板 -> driver examples -> gpio -> igpio_led_output为例
- 完成后窗口选择“关闭和更新源代码”
配置编译
野火开发板与官方板(EVKB i.MXRT1150)最关键的区别就在于采用的外置Flash不同:野火采用32MB的QSPI Flash,而并非64MB的Hyper Flash,相关文件包括但不限于:
- …flash_config.c & .h
- …dcd.c & .h
因此在配置工程时需要加以注意
Step0
若没有安装MIMXRT1052_DFP,需要先离线安装(Arm Keil | NXP MIMXRT1052_DFP)
Step1
将野火例程“xxx\user\xip”下的
fire_imxrt1052_spiflash_config.c
& fire_imxrt1052_spiflash_config.h
fire_imxrt1052_sdram_ini_dcd.c
& fire_imxrt1052_sdram_ini_dcd.h
拷贝到新建的工程xip文件夹内
打开工程文件,在xip组中添加文件fire_imxrt1052_spiflash_config.c
& fire_imxrt1052_sdram_ini_dcd.c
并删除原有文件:
xip组下的evkbimxrt1050_flexspi_nor_config.c
& evkbimxrt1050_flexspi_nor_config.h
board组下的dcd.c
& dcd.h
Step2
Target选择xxx_flexspi_nor_release(对应野火例程的xxx_nor_txt_ram),Options配置修改如下:
1) Device
将芯片更改为MIMXRT1052CVL5B(不改好像也没啥问题)
2) Target
自动生成的Keil工程Arm Compiler默认采用AC6编译(与野火例程不同),不必修改
3) C/C++
更改预定义宏CPU_MIMXRT1052DVL6B为CPU_MIMXRT1052CVL5B
4) Linker
这个 MIMXRT1052xxxxx_flexspi_nor 存储器分配文件是适配官方评估版的,针对野火开发板的存储器,需要进行修改,点击选项框中的“Edit”按钮会弹出该 文件的内容,然后直接编辑即可,具体见图 10‑25,修改如下:把 m_text_size 的值修改为 0x01FFDC00;
Step3
点击“Rebuild”(首次编译可点“Build”亦可),结果
Program Size: Code=6534 RO-data=1706 RW-data=40 ZI-data=264256
"flexspi_nor_release\igpio_led_output.out" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:06
无报错
下载调试
参考野火官方文档“0-必读说明_下载算法/”内的《DAP仿真器下载1052必读说明》进行配置
Step1
若采用fireDAP调试器
Options for Target … -> Debug项,右上角勾选Use -> CMSIS-DAP Debugger
点击“Settings"弹出窗口配置如下:
- Debug
P.S. Max Clock保持默认的10MHz实测也是可以的
若采用ST-Link调试器
Options for Target … -> Debug项,右上角勾选Use -> ST-Link Debugger
“Settings"配置:
Step2
- Flash Download
Remove原有算法,Add野火下载算法:Embedfire_RT1052_QSPI_R1.FLM
Step3
- Pack
取消勾选“Enable”
Step4
点击“Download”,结果
Erase Done.
Programming Done.
Verify OK.
Application running ...
Flash Load finished at xx:xx:xx
核心板上蓝色LED以约200ms周期闪烁(不太准,可以通过添加预定义宏SDK_DELAY_USE_DWT
改善)
说明烧录运行正常
调试
调试可以选择的Target有很多,包括:
a) xxx_debug对应野火例程的xxx_itcm_txt_ram_debug,可直接用
但会报错
Cannot access Memory (@ 0x20022724, Read, Acc Size: 4 Byte)
在Options for Target … -> Debug右边栏勾选”Load Application at Startup"可以取消报错
b) xxx_sdram_debug对应野火例程的xxx_itcm_txt_sdram_debug,可直接用
c) xxx_flexspi_nor_debug更改下载算法可用
d) 更改xxx_flexspi_nor_release
需要勾选Opions for Target … -> Output中的Debug Information,并Rebuild
P.S. 剩下的xxx_release和xxx_sdram_release看起来是分别将程序烧录到RAM和SDRAM中,但直接烧录报错,不清楚有何作用
我所知道的RT1050 - Kinetis - 恩智浦技术社区 (nxpic.org.cn)
- Rt1050是没有用户可用的片上flash,只能外扩。但是EVK-MIMXRT1050开发板上用的不是flash,而是用了一颗SDRAM,型号为MT48LC16M16A2B4-6AIT:G。也就是说板子只能用于调试评估,只要一复位,所有的东西都会清零。
- SDK里的每个case都会包含四个target:debug、release、sdram_debug、sdram_release。前面两个target是运行在片内ram中,后面两个target则是运行在外扩的sdram中。
而野火板子并没有外置SDRAM,因此猜测这两个target没有用
常见问题
1
弹窗报错:
Error: Flash Download failed - "Cortex-M7"
三种情况:
a) 需要更改下载算法
b) scf的宏定义不对
c) 调试时Options for Target … -> Utilities 勾选了Update Target before Debugging,应取消勾选
2
弹窗报错:
Cannot reset target.
Shutting down debug session.
外加报错:
Error: Flash Download failed - Target DLL has been cancelled
下载时,往往是由于上一次烧录的程序分散文件有误造成,解决方法参照《DAP仿真器下载1052必读说明》:
在核心板或者底板上按着 RST 按键不松手,然后接着同时按着 MODE 按键也不松手, 先松开 RST 键,再松开 MODE 键。然后看看能不能识别到芯片和下载。
P.S. 需要上传正确的编译文件,否则又会出现该问题
调试时,或许是因为上一次调试没有正常结束,硬件按一下reset键即可
3
下载报错(但实际并不影响效果)
RDDI-DAP Error
Options for Target … -> Debug -> Settings -> Pack取消勾选“Enable”
4
弹窗报错:
SWD/JTAG Communication Failure
或
Could not stop Cortex-M device!
Please check the JTAG cable.
外加报错:
Error: Flash Download failed - Target DLL has been cancelled
Options for Target … -> Debug -> Settings -> Debug左下角Connect选择成了under Reset或without Stop,应为Normal
5
报错:
Cannot access Memory (@ 0x6xxxxxxx, Write, Acc Size: 4 Byte)
*** error 57: illegal address (0x6xxxxxxx)
且设置不了断点
Options for Target … -> Debug -> Settings -> Debug,取消勾选右下角Download Options栏的“verify code download”和“download to flash”