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 按下图箭头指示找到目标芯片)

在这里插入图片描述

然后选择下载等待生成:

在这里插入图片描述

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

在这里插入图片描述

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


二、SDK目录分析

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

在这里插入图片描述

文件夹:

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

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

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

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

  • docs:相关的文档说明

  • middleware:存放着一些中间件

  • MIR:点进去只是一张 gif

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


三、文件移植

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

这里使用的是 Keil编译器。

1、首先先在自己的工程主目录下创建以下文件夹(划线的先不要管):
在这里插入图片描述

在自己创建的 Libraries文件里面包含了以下文件,这些文件都是从官方 SDK文件夹上复制过来的 :

在这里插入图片描述

上面框选出来的两个文件夹,直接就可以在 SDK包的顶级目录上找到然后复制粘贴过去,剩下的在官方 SDK文件夹的
…\SDK_2.8.0_MIMXRT1052xxxxB\devices\MIMXRT1052文件夹里可以找到。

在官方 SDK文件夹的
…\SDK_2.8.0_MIMXRT1052xxxxB\devices\MIMXRT1052目录里,下图框选的文件夹,按顺序分别对应着 Keil、gcc、IAR以及官方的 IDE四个平台所需的开发环境文件(四选一),启动文件在里面。然后把他们放到刚才的 Libraries文件里。

在这里插入图片描述
其余文件夹解析:

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

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

在这里插入图片描述

3、其余剩下的文件夹(除 board文件夹外)可以参照下图说明存放相应文件,Libraries文件夹上面也已经配置了,可以不用看了:

在这里插入图片描述

4、利用 MCUXpresso Config Tools构建的芯片配置(即上面的 board文件夹以及划掉的 .mex工程文件)

.mex工程文件,是官方的 MCUXpresso Config Tools软件建立生成的芯片配置工程文件,问题不大,先不用管。

这里先直接从
…\SDK_2.8.0_MIMXRT1052xxxxB\boards\evkbimxrt1050\demo_apps\hello_world官方 SDK文件下复制相应的文件过来先,放到自己工程的 board文件夹:
在这里插入图片描述


四、工程构建

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

在这里插入图片描述

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

文件解析
STARTUP存放汇编的启动文件: startup_MIMXRT1052.s
CMSIS存放 CMSIS里面 Include的部分文件
deviceLibraries主目录里的文件
FWLIBdrivers文件夹里的所有外设库文件
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模式为例

  • 目标项:在这里插入图片描述

  • 调试输出处理:
    在这里插入图片描述

  • 编译文件输出处理:在这里插入图片描述

  • C/C++项配置:在这里插入图片描述加入对应的参数宏、包含所需的头文件路径以及写入编译器配置

  • 汇编的处理:在这里插入图片描述

  • 链接器处理:在这里插入图片描述取消默认的存储器分配文件,选择官方给出的分散加载文件(.scf文件);在选项框下 “disable Warnings” 中添加对 6314 类型警告的忽略配置

  • debug配置:在这里插入图片描述选择 DAP调试器;选择官方提供的调试初始化文件(.ini文件);添加参数

    setting配置:在这里插入图片描述

    接着配置 Flash Download,RAM下载地址不用改,需要改一下算法所需的大小,换成 0x8000;然后算法选择第一个就好了:在这里插入图片描述

    算法添加这里,要先添加 rt1052芯片的 pack包,这样才能选择相应的算法程序;先到 keil官网下载 pack包(地址:https://www.keil.com/dd2/pack/),找到如下位置,下载 V12.2.0这个版本,看它介绍是对应着 SDK 2.8.0版本的,对应回去之前所下载的 SDK包版本在这里插入图片描述


五、其他

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

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

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


版权声明:本文为qq_42992084原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。