i.MX - RT1052官方 SDK分析及工程创建

写在前面:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。



相关链接:

芯片介绍:https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1050-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1050

官方 board简述:https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/i-mx-rt1050-evaluation-kit:MIMXRT1050-EVK

在线 SDK包获取:https://mcuxpresso.nxp.com/en/welcome (ps:需要登录)

MCUXpresso Config Tools:https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-config-tools-pins-clocks-peripherals:MCUXpresso-Config-Tools (后期工程的一些 Pins, Clocks, Peripherals需要用到)


一、SDK获取

打开上面的 SDK包链接,登录进去,然后选择 RT1052B(直接搜 or 按下图箭头指示找到目标芯片)

i.MX - RT1052官方 SDK分析及工程创建

然后选择下载等待生成:

i.MX - RT1052官方 SDK分析及工程创建

选择所需的相关组件并确定下载:

i.MX - RT1052官方 SDK分析及工程创建

最后同意并点击下载就好了,这里是最新的 SDk 2.8.0版本。


二、SDK目录分析

解压打开,可以得到如下目录项:

i.MX - RT1052官方 SDK分析及工程创建

文件夹:

  • boards:放着芯片对应的评估板 EVK的例程代码

  • CMSIS: 里面放着跟 ARM 内核有关的 CMSIS 标准库文件, 直接从固件库里面拷贝。

  • components:顾名思义,放着一些常用的官方编好的组件

  • devices:里面放着相应的平台启动文件以及外设库、公用库等等

  • docs:相关的文档说明

  • middleware:存放着一些中间件

  • MIR:点进去只是一张 gif

  • tools:一些工具配置文件,用 gcc编译器估计要用到


三、文件移植

从上面的文件夹分析中,可以大概知道哪些文件是需要我们提取的了。

这里使用的是 Keil编译器。

1、首先先在自己的工程主目录下创建以下文件夹(划线的先不要管):

i.MX - RT1052官方 SDK分析及工程创建

先看 Libraries文件,里面包含了以下文件,都是从 SDK上复制过来的 :

i.MX - RT1052官方 SDK分析及工程创建

框选出来的两个文件夹,直接就可以在 SDK包的*目录上找到,剩下的在 …\SDK_2.8.0_MIMXRT1052xxxxB\devices\MIMXRT1052文件夹里可以找到。

在 …\devices\MIMXRT1052里,下图框选的文件夹,按顺序分别对应着 Keil、gcc、IAR以及官方的 IDE四个平台所需的开发环境文件(四选一),启动文件在里面。

i.MX - RT1052官方 SDK分析及工程创建

其余文件夹:

  • drivers:与 RT1052 外设相关的库文件
  • project_template:工程例子,其实是 MCUXpresso Config Tools生成的文件
  • template:不知干啥子的
  • utilities:公用组件
  • xip:应该是 BOOT启动相关的文件

2、接着就是在 App文件下除了放 main.c主文件外,还放着 rt1052在 mdk编译器所需要的调试初始化文件,移植如下:

i.MX - RT1052官方 SDK分析及工程创建

3、其余剩下的文件夹可以参照下图说明:

i.MX - RT1052官方 SDK分析及工程创建

4、利用 MCUXpresso Config Tools构建的芯片配置(即上面个人工程主目录图那里划掉的文件夹以及 .mex工程文件)

这里先直接从 …\SDK_2.8.0_MIMXRT1052xxxxB\boards\evkbimxrt1050\demo_apps\hello_world官方 SDK文件下复制相应的文件过来先,放到工程的 board文件夹(即划掉的文件夹):

i.MX - RT1052官方 SDK分析及工程创建


四、工程构建

把移植好的文件,导入到 MDK工程里面,构建成如下:

i.MX - RT1052官方 SDK分析及工程创建

这里需要注意的是,由于 i.MX - RT1052是不带内部 Flash的,而且支持 SDRAM扩展;因此,当程序比较大时,此时把代码存储到 FLASH中,擦写需要非常长的时间,我们就希望在调试阶段通过 debug版本把程序下载到写入速度非常快的 SDRAM存储器中并执行调试,这样能节省大量的调试时间,但是 SDRAM掉电后不能保存程序,所以开发完毕后我们还要切换回 release版本,把代码下载到 FLASH,以便下次上电程序还能正常工作;为了便于以上操作,所以往往我们需要创建多工程目标。

文件 解析
STARTUP 存放汇编的启动文件: startup_MIMXRT1052.s
CMSIS 存放 CMSIS里面 Include的部分文件
device Libraries主目录里的文件
FWLIB drivers文件夹里的所有外设库文件
Bsp 用户自己封装的底层上级函数文件
components 只提取 components文件夹里所需要的文件
utilities 存放开发调试相关的工具文件:
fsl_assert.c
fsl_debug_console.c
fsl_notifier.c
fsl_shell.c
fsl_str.c
User 主文件 main.c所在
xip 启动和程序存储器相关的文件:
evkbimxrt1050_flexspi_nor_config.c
fsl_flexspi_nor_boot.c
Doc 必读说明.txt:程序说明文件,用于说明程序的功能和注意事项等
board 存放官方的板级配置文件:
board.c
clock_config.c
pin_mux.c
dcd.c

构建导入工程后,紧接着到项目配置,由于之前说了,我们需要构建多个工程目标,不同的工程目标,所配置的操作都是稍有不同的。

下面以 flexspi_sdram_debug模式为例

  • 目标项:i.MX - RT1052官方 SDK分析及工程创建

  • 调试输出处理:i.MX - RT1052官方 SDK分析及工程创建

  • 编译文件输出处理:i.MX - RT1052官方 SDK分析及工程创建

  • C/C++项配置:i.MX - RT1052官方 SDK分析及工程创建加入对应的参数宏、包含所需的头文件路径以及写入编译器配置

  • 汇编的处理:i.MX - RT1052官方 SDK分析及工程创建

  • 链接器处理:i.MX - RT1052官方 SDK分析及工程创建 取消默认的存储器分配文件,选择官方给出的分散加载文件(.scf文件);在选项框下 “disable Warnings” 中添加对 6314 类型警告的忽略配置

  • debug配置:i.MX - RT1052官方 SDK分析及工程创建 选择 DAP调试器;选择官方提供的调试初始化文件(.ini文件);添加参数

    setting配置:i.MX - RT1052官方 SDK分析及工程创建

    接着配置 Flash Download,RAM下载地址不用改,需要改一下算法所需的大小,换成 0x8000;然后算法选择第一个就好了: i.MX - RT1052官方 SDK分析及工程创建

    算法添加这里,要先添加 rt1052芯片的 pack包,这样才能选择相应的算法程序;先到 keil官网下载 pack包(地址:https://www.keil.com/dd2/pack/),找到如下位置,下载 V12.2.0这个版本,看它介绍是对应着 SDK 2.8.0版本的,对应回去之前所下载的 SDK包版本i.MX - RT1052官方 SDK分析及工程创建


五、其他

具体的参数设计,可以看官方提供的例程,一般在 hello word例程以及 led_output例程中参考;另一个工程目标怎么设置类同。

使用 debug(SDRAM)版本及 release(NOR Flash)版本,需要 “debug” 版本的工程仅用于调试且并没有定制下载的相关配置,所以要使用时不能像 release版本的工程那样直接点击 Load 按钮下载程序到 board运行,而只能点击 Debug按钮进入调试模式进行仿真;同样地,“release”版本,即使能进入debug调试模式,但好像数据是对不上的,还是建议调试是用专属的 “debug”版本。

然后一些调试问题可以看上一篇 i.MX - RT1052调教总结