NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建

2023-05-16

NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建

  • 说明
  • 资料准备
  • 一切就绪,搞他
    • 安装 IDE 及生成基本工程
    • 安装 J-Link 及配置
    • 开始调试下载
    • 点击 运行 按钮,见证奇迹的时刻
  • 重要知识点补充说明
    • 为什么第一次Debug时程序没有跑来
    • IDE 烧录程序的流程猜想
    • 双击 *.lanuch 文件调出 Debug 的更详细设置
    • 更改 Flash 或者 RAM 的配置
    • 更改 分散加载 的方法
    • 更多的知识,好好啃

说明

因为公司规定不能使用盗版软件,而正点原子提供的开发例程又都是基于keil开发的,所以只能放弃使用多年的老朋友,老老实实的开始倒腾免费开源的 MCUXpresso IDE。因为有用过 RT-Thread Studio 的经验,本来以为换上这个同类型的套壳 IDE 会是信手拈来的事,结果经历了无数翻车,惨不忍睹呀。好在是刚入职新公司,也是第一次用 NXP 平台,没有被领导 K 死。
但是,好处是在被拆腾的过程中,也基本了解了 分散加载, J-Link, J-Flash 下载的一些知识。想当年这些都是被 Keil 包装好,基本没去了解过,开发也是拿来就用了。

资料准备

  1. 正点原子 号令者开发板一套。题外话,这个板子可能太久,用的人也少吧,配套的资料更新好像很少的样子。
  2. IDE 下载地址:点这里
  3. SEGGER J-Link 驱动下载地址:点这里

一切就绪,搞他

安装 IDE 及生成基本工程

  1. 安装 IDE, 这个没什么好说的,一路 next 就是了
  2. 安装完启动就有一个欢迎界面。可以选择创建新工程,导入工程等。看网上有说用这个 IDE 创建新工程不太好,但没关系,就先搞他,后面有什么问题再说。
    选择RT1052SDK
    基本的工程设置
    设置里的重头戏
    特别说明一下的是,正点原子使用的是 8MBytes 的 QSPI Flash, 而 NXP 官方的 EVK 用的是 64MBytes HyperFlash,这个地方是最让人头痛的
  • BOARD_FLASH: 对应的就是板个外挂的 QSPI Flash, 0x60000000 是这个 Flash 映射到地址空间的值, 图中大小 0x4000000 实际应该是 0x800000, 就是8MBytes容量
  • 片内的 512KBytes 内存,被划分成了三个部分,这也是 RT1052 执行效率可以高于 STM32 的地方
    • SRAM_DTC: 数据紧偶合内存(Data Tightly-Coupled Memory), 有着极高的访问速度,用于存储程序数据的,即代码中变量的存储位置。映射到地址空间是 0x20000000, 大小为 128KBytes
    • SRAM_ITC: 指令紧偶合内存,有着非常高的访问速度,用于存放经常执行的指令代码,比如中断向量表, 调试程序等。程序在编译连接的时候,会将这里运行的代码放到 BOARD_FLASH 里,芯片运行的时候再从Flash里拷贝到指定的内存位置,其实道理跟初始化 RW-DATA 是一个道理吧,(不太确定)。映射到地址空间是 0x00000000, 大小为 128KBytes
    • SRAM_OC: 片上内存(On-chip RAM), 可以理解为传统 MCU 内部的 SRAM, 没有什么特别的限制,也没有速度加成,可以存放任意代码或者数据。映射到地址空间是 0x20200000, 大小为 256KBytes
  • BOARD_SDRAM: 就是外挂的 SDRAM 啦
  • NCACHE_REGION: 还没去,后补说明吧
  • IDE 就是通过这些FALSH/RAM数据生成链接文件(ld), 省去了像 KEIL 那样手动编辑 分散加载文件的麻烦(但对分散加载大家还是要了解一下,不能懒,本来想分享个文件的,但不知道怎么上传)更多信息,可以参考这个链接: MCUXpresso IDE下工程链接文件配置管理与自动生成机制
  • 关于地址分配更多的信息,可以参考这个链接: 点这里
    完成后的界面
  1. 如无意外,点击编译就可以了
    在这里插入图片描述

安装 J-Link 及配置

  1. 安装J-Link 程序,也是一路 next 就好了,没啥可说的
  2. 官方 EVK 用了两种Flash: HyperFlash(型号不清楚)和QSpiFlash: IS25WP064AJBLE, 而正点原子用的是 QspiFlash: W25Q64, 所以官方提供的J-Link 下载算法是不能使用的。而正点原子提供的下载算法:MIMXRT105x_QuadSPI_4KB_SEC.FLM 只适用于 Keil,同样不适用, 所以又要依靠网络了。
    W25Q 下载算法及更改方式,请移步以下链接:W25Q下载算法
    这里要特别强调,像我的电脑,不知道为什么装了两个 J-Link
    电脑目录分别是:C:\Program Files (x86)\SEGGER\JLink 和 C:\Program Files\SEGGER\JLink。
    所以最好两个目录下的 “JLinkDevices.xml” 文件都更改好,并将算法文件都放到 .\Devices\NXP\iMXRT105x 目录里去
  3. 订个小目标吧,自己写一个下载算法,以便后续换 Flash 时可以用上,应该跟写 Bootloader 差不多

开始调试下载

  1. 电脑连接上 J-Link ,我踩的坑就开始了
    在这里插入图片描述
    在这里插入图片描述
    这个 IDE 对山寨的 J-Link 支持不是很友好,我那个工具在 Keil 的时候可以正常识别并烧录,但在 IDE 里却看不到了,因为来新公司,没有验证过工具,所以倒腾了半天,结果更换上同事的 J-Link, 一切正常了。
    在这里插入图片描述
    在这里插入图片描述
  2. 上图可以看到,程序虽然下载成功了,但是没有正常的跑起来,因为程序目前还是 HyperFlash 的设置,需要更新配置成 QSpiFlash. 那就没什么可想的了(后面有两句叨叨),参考正点原子的 “实验X SPI FLASH XIP实验”, 更改 IDE 工程里对应的文件,注意不要使用其它的例程里的文件来改,因为其它例程是屏蔽了 XIP 描述信息的
    在这里插入图片描述
    evkbimxrt1050_flexspi_nor_config.c 更改如下:
const flexspi_nor_config_t qspiflash_config = {
    .memConfig =
        {
            .tag = FLEXSPI_CFG_BLK_TAG,
            .version = FLEXSPI_CFG_BLK_VERSION,
            .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally,	//kFlexSPIReadSampleClk_LoopbackFromDqsPad,
            .csHoldTime = 3u,
            .csSetupTime = 3u,
            .columnAddressWidth = 0u,
            .configCmdEnable = 0u,
            // Enable SDR mode, Wordaddassable, Safe configuration, Differential clock
            .controllerMiscOption = 0u,
            .deviceType = kFlexSpiDeviceType_SerialNOR,
            .sflashPadType = kSerialFlash_4Pads,
            .serialClkFreq = kFlexSpiSerialClk_133MHz,
            .lutCustomSeqEnable = 0u,
            .sflashA1Size = 8u * 1024u * 1024u, //8MB
            .lookupTable =
                {
                    // Fast read sequence
                    [0] =  FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
                    [1] =  FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x02),
                    [2] =  FLEXSPI_LUT_SEQ(STOP, 0, 0, STOP, 0, 0),
                    [3] =  FLEXSPI_LUT_SEQ(STOP, 0, 0, STOP, 0, 0),
                },
        },
		.pageSize           = 512u,
		.sectorSize         = 4u * 1024u,/*扇区大小为4k字节*/
};

board.h 更改如下

/*! @brief The hyper flash size */
#define BOARD_FLASH_SIZE (0x800000U)	//8M Flash, (0x4000000U)

重新编译并执行debug, 调试已经正常启动了,并且停在了 main() 入口
在这里插入图片描述

点击 运行 按钮,见证奇迹的时刻

在这里插入图片描述

重要知识点补充说明

为什么第一次Debug时程序没有跑来

因为 IDE 在下载完程序后,并没有让 MCU 跳转到指定的地址开始运行,而是让 MCU reset 后跑起来,那么 1052 就会首先执行片内ROM引导程序去读取 Flash 起始位置存放的 Flash Configurate 信息,然后配置相应的 Flash 寄存器。但当前程序里面存放的是 HyperFlash 的配置信息,所以ROM调用的驱动信息就错误了,导致程序没有跑起来.

IDE 烧录程序的流程猜想

当点击 Debug 按键或者点击下载按键 在这里插入图片描述时,IDE 会调用 JLinkGDBServerCL.exe 下载程序,并将下载结果返回给 IDE。所以要确保 IDE 设置的 J-Link 地址正确,具体位置如下:
在这里插入图片描述
所以当 IDE 调试出错时,可能通过 J-Flash.exe 程序帮忙验证是烧录出问题了,还是运行出问题了

双击 *.lanuch 文件调出 Debug 的更详细设置

在这里插入图片描述

更改 Flash 或者 RAM 的配置

在这里插入图片描述

更改 分散加载 的方法

在这里插入图片描述

更多的知识,好好啃

痞子衡嵌入式, 注意Chrome内核的浏览器不能显示文章里的图片,但 IE 浏览器就可以,不明所以然

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建 的相关文章

  • 数据可视化图表插件调研:Echarts、Highcharts、G2、D3

    目前常用于前端网页数据可视化实现的图表插件主要有四款 xff1a Echarts Highcharts G2 D3 xff0c 开发一些产品工具的时候可能会集成这些开源的可视化插件 xff08 这里Highcharts不开源 xff09 1
  • 31岁转行的我

    2011年从一所普通二本师范大学毕业后先后从事了两年的教育工作 xff0c 但都没有挣到钱 xff0c 12年从深圳回到西安 xff0c 参加了几次公务员和事业单位的招考 xff0c 几次因0 1分的微小差距与国家饭碗擦肩而过 后来决定不再
  • git submodule 如何同步更新

    摘要 xff1a git submodule 更新之后 xff0c 如果在父仓库里直接调用 git submodule update init recursive 会发现 子模块的代码不会更新 初学者会很迷惑 xff0c 怎么能把子模块更新
  • egret 入门 初试

    整理的文章 白鹭引擎入门 趁着今天周六 xff0c 把苹果放下一边先 今天早上一醒来就装上了js编辑神器Webstorm xff0c 最近也开始关注了一些移动方面的 js 前端框架 如 谷歌的Angularjs 和 fackbook 的Re
  • Ubuntu 18之vnc连接不上问题(已解决)

    在配置vnc时所以的准备动作已经准备好了 xff0c 该配的文件也配好了 xff0c 但就是一直连接不上 在主机端报time out的错误 xff0c 后来查百度得知vncserver xff1a 1对应5901端口 xff0c 2就是59
  • Matlab R2019a Win64位 迅雷下载链接

    鉴于百度云和PanDownload各种限速 xff0c 所以我特意寻了迅雷磁力链接供大家下载 实在是因为百度云下载只有50 k s xff0c 而迅雷下载5 m s啊 Matlab R2019a Win64位 链接内容包括Matlab和Ca
  • 力扣K神图解算法数据结构解析08

    力扣K神图解算法数据结构点这里 八 位运算 剑指15 xff0c 二进制中1的个数 class Solution public int hammingWeight uint32 t n int cnt 61 0 for int i 61 0
  • 吴军老师《给中学生/大学生的书单》----Yohao整理

    2018 7 27记录 span class hljs code 给中学生的书单 span 一 文学类 18本 span class hljs code 1 金庸和琼瑶各一本 长篇的比短篇的好 span span class hljs co
  • 北航2系921 2021考研历年真题及参考答案(2020-2004)

    需要自取 百度网盘 提取码 xff1a iwbg 关于2020北航921试题 相信大家都听说了 xff0c 2020年的921试题整体难度较2019年小 2019考完后 xff0c 群里面怨声载道 xff0c 信号10年没考电路题了怎么就今
  • 姿态解算

    姿态解算全过程 关于这方面 xff0c 姿态计算的理解大致需要经过以下几个步骤 1 秦永元的 惯性导航 xff0c 不但十分基础而且写的也十分好 xff0c 适合入门 但是并不是所有章节都是需要看的 xff0c 其中1 2节 9 2节和9
  • 匿名飞控代码解读汇总

    由于本人临近毕业 xff0c 所做的毕设是有关无人机方面的 xff0c 所使用的也是匿名的飞控 lt 资料包 20171217 gt xff0c 所以首先需要读懂匿名代码然后才能增加自己的功能 xff0c 临近毕业还有两个月左右 xff0c
  • 融合磁力计的Mahony互补滤波算法

    https blog csdn net qq 21842557 article details 50993809 上面博客有关于磁力计的详细解释 xff0c 不过由于本人资质愚钝 xff0c 至今还不是完全理解 不过思想大致和加速度计差不多
  • 代码解读一 文件名“ANO_Imu.c”

    我把这个文件的所有代码贴上来了 xff0c 供大家参考 xff0c 由于本人水平有限 xff0c 且匿名代码注释比较少 xff0c 所以很多也不是很懂 xff0c 实在是一些莫名的定义太多了 xff0c 什么w x y z h之类的 xff
  • 每周学一点 egret(2): EgretConversion 工具转换ts

    今晚无聊试了一下wing的格式化和这个转换工具 开始的时候我尝试手写翻译 xff0c 发现这一款转换也比较简单 所以尝试做了一下转换 对于如果文件名是中文 要小心一点 总是出现怪怪的 转换后 xff0c 没有直接跳转到对于的目录去 如果加上
  • 代码解读二 文件名“Ano_Math.c”

    这里面都是一些关于数学函数的骚操作 xff0c 既然不使用math h xff0c 那么至少说明这里面的数学函数调用不应比math h里面的函数慢 下面贴出代码 xff0c 简要做了个注释 xff0c 看看就行 至于怎么做的 xff0c 有
  • 关于单级PID及串级PID

    简单记录下我在学习PID过程中遇到的困难及解决方法 xff0c 希望能对大家有所帮助 1 首先 xff0c 关于PID这块理论知识必须非常清楚 xff0c 能够自行推导公式 xff0c 包括位置式PID公式和增量式PID公式 2 实现位置式
  • 代码解读三 文件名“Ano_Pid.c”

    关于PID这部分匿名代码里面有很多 xff0c 此文件是最基础的即单级PID的实现 xff0c 后面的关于速度和角速度环的串级PID及高度和高度速度环的串级PID都是以此为基础的 xff0c 所以此文件内容务必搞懂 C COPYRIGHT
  • 代码解读四 文件名“Ano_AttCtrl.c”

    这部分是关于匿名串级PID的 xff0c 我觉得有需要的同学可以直接移植 xff0c 不需要自己写了 xff0c 确实有点麻烦 xff0c 基本上代码里面都注释的很清楚了 xff0c 且由于本人水平有限 xff0c 所以也不是都很懂 xff
  • 代码解读六 文件名“Ano_AltCtrl.c”

    写了一大堆 xff0c 也不知道对不对 xff0c 贴上来让大家看看 include 34 Ano AltCtrl h 34 高度控制 include 34 Ano Imu h 34 include 34 Drv icm20602 h 34
  • 代码解读五 文件名“Ano_LocCtrl.c”

    关于这个位置速度环我还不是很理解 xff0c 因为单凭这一个文件确实看不出来什么东西 xff0c 这并不像角度环和角速度环一样有丰富的理论支撑 xff0c 至少我现在还没看到 xff0c 可能是我水平不够额 xff0c 但这并不妨碍我们继续

随机推荐

  • 代码解读七 文件名“Ano_MotorCtrl.c

    本文件比较简单 xff0c 代码比较少 xff0c 主要涉及解锁后四个电机依次1 2 3 4转动 xff0c 然后四轴也不会飞 xff0c 只是在原地轻微转动 xff0c 随后需要逐渐加油门至50 到达临界点 xff0c 稍微往上推一点 x
  • 代码解读八 文件名“Ano_FlightCtrl.c”

    这个文件代码有点乱啊 xff0c 反正没怎么看懂 xff0c 涉及到一键起飞和降落 xff0c 以及关于不同任务对应不同的灯光的切换 而且注释也还可以 xff0c 凑活着看下呗 xff0c 其实这个并不是什么关键文件 xff0c 看不懂就算
  • 代码解读九 文件名“Ano_MagProcess.c”

    本部分主要是关于磁力计进行校准操作的 xff0c 用户手册上有详细步骤 xff0c 有需要可以看看 include 34 Ano MagProcess h 34 include 34 Drv LED h 34 本文件是关于磁力计校准及相关处
  • 代码解读十 文件名“Ano_FlightDataCal.c”

    本部分主要是对IMU测量模块测量的值进行后续处理 xff0c 同时在飞行过程中不断对数据进行更新 xff0c 然后进行姿态解算 xff0c 便于后续丢进PID中进行进一步处理 根据所处位置及函数调用情况不难发现此部分算是对底层的进一步封装
  • 【阅读笔记】联邦学习实战——联邦学习攻防实战

    联邦学习实战 联邦学习攻防实战 前言1 后门攻击1 1 问题定义1 2 后门攻击策略1 3 详细实现 2 差分隐私2 1 集中式差分隐私2 2 联邦差分隐私2 3 详细实现 3 模型压缩3 1 参数稀疏化3 1 1 详细实现3 1 2 实验
  • 关于后续部分

    关于算法这块基本上算是读完了 xff0c 只能从大致上理解下了 xff0c 毕竟代码不是自己写的没有最直接的感受 xff0c 那么我们来回顾下 xff0c 试着从整体上来理解下匿名代码除了最上层之外的部分 最上层也就是包含main c在内的
  • cmake:设置编译选项

    此文为 xff1a 轻松入门cmake系列教程 常用 1 cmake debug和release设置 span class token macro property span class token directive hash span
  • cmake:pkg_check_modules

    此文为 xff1a 轻松入门cmake系列教程 理论 是什么 xff1f pkg check modules是 CMake 自己的 pkg config 模块的一个用来简化的封装 xff1a 你不用再检查 CMake 的版本 xff0c 加
  • Unix/Linux编程:针对目录文件描述符的相关操作

    始于版本2 6 16 xff0c Linux内核提供了一系列新的系统调用 xff0c 在执行与传统系统调用相似任务的同时 xff0c 还提供了一些附加功能 xff0c 对某些应用程序非常有用 新 接 口类似的传统接口备 注faccessat
  • ROS:参数服务器通信

    为什么需要 在机器人开发中 xff0c 会有很多参数和设置可以后期需要调整的 xff0c 如果都放到源码里很难实现动态修改和管理 xff0c ROS2为了解决这一问题 xff0c 提出了参数这一通信机制 是什么 如何理解 参数 xff1f
  • MySQL面试:查询性能的优化方法

    实践中如何优化MySQL 四条从效果上第一条影响最大 xff0c 后面越来越小 SQL语句以及索引的优化数据库表结构的优化系统配置的优化硬件优化 查询性能的优化方法 减少请求的数据量 只返回必要的列 xff1a 最好不要使用 SELECT
  • 基础:怎样理解Linux软中断

    软中断 softirq CPU使用率升高也是最常见的一种性能问题 从 取外卖 看中断 中断是系统用来响应硬件设备请求的一种机制 它会打断进程的正常调度和执行 xff0c 然后调用内核中的中断处理程序来响应设备的请求 为什么要有中断呢 xff
  • HTTP:HTTP报文是什么样子的

    引言 如果说HTTP是因特网的信使 xff0c 那么HTTP报文就是它用来搬东西的包裹了HTTP报文是在HTTP应用程序之间发送的数据块 这些数据块以一些文本形式的元信息 meta information 开头 xff0c 这些信息模式了报
  • ROS:服务通信

    话题通信的数据传输是单向的 xff0c 订阅端被动接收发布端的数据 这时候有人就问了 xff0c 如果发布端想主动接收数据怎么办 ROS中提供了另一种通信方式 xff1a 服务通信 ROS xff1a 通信模型 Service通信是双向的
  • linux操作系统:线程,令复杂的项目并行执行

    为什么要有线程 其实 xff0c 对于任何一个进程来讲 xff0c 即使我们没有主动去创建线程 xff0c 进程也是默认会有一个主线程的 线程是负责执行二进制指令的 xff0c 它会根据项目执行计划书 xff08 二进制文件 xff09 一
  • 存储创建及openstack对接——LVM

    说明 本方案是在每一个计算节点 上安装cinder volumes组件来完成对本地存储的管理 若无特殊说明 xff0c 以下步骤仅在计算节点执行 1 前期准备 检查计算节点是否安装 lvm xff0c iscsi 磁盘分区和格式化 裸盘不能
  • clion:输出中文乱码终极解决方案

    临时解决方案 如果在windows时发现clion乱码 xff0c 可以在cmakelist txt中 xff1a c 43 43 在cmakelist txt添加set CMAKE CXX FLAGS 34 CMAKE CXX FLAGS
  • ROS:节点

    节点 ROS xff1a 节点是什么 机器人是各种功能的综合体 xff0c 每一项功能就像机器人的一个工作细胞 xff0c 众多细胞通过一些机制连接到一起 xff0c 成为了一个机器人整体 在ROS中 xff0c 我们给这些 细胞 取了一个
  • VSCode:配置C/C++开发环境

    准备 区分编辑器 编译器 IDE xff1a 作者 xff1a C语言教学 编辑器就是处理文本 xff08 源码 xff09 的程序 xff0c 写代码写的就是文本 xff0c 编辑器可能提供智能提示 代码高亮等辅助功能 xff0c 但不负
  • NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建

    NXP MIMXRT1052CVL5B 43 正点原子 43 MCUXpresso IDE 开发环境搭建 说明资料准备一切就绪 xff0c 搞他安装 IDE 及生成基本工程安装 J Link 及配置开始调试下载点击 运行 按钮 xff0c