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 创建新工程不太好,但没关系,就先搞他,后面有什么问题再说。



    特别说明一下的是,正点原子使用的是 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 浏览器就可以,不明所以然

NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建相关推荐

  1. 正点原子第四期环境搭建

    正点原子第四期环境搭建 1.网络IP相关知识 1.1.子网掩码 1.2.同一网段 1.3.举例说明 1.4.主机地址计算方式 2.环境搭建 2.1.虚拟机创建 2.2.网络配置 2.3.网络挂载 2. ...

  2. pydev工程linux运行,Linux平台下Python的安装及IDE开发环境搭建

    转自http://blog.csdn.net/guoxiaojie_415/article/details/48108319 1.Python安装 Python有2.X和3.X两个版本,由于2.X的版 ...

  3. Linux平台下Python的安装及IDE开发环境搭建

    1.Python安装 Python有2.X和3.X两个版本,由于2.X的版本较稳定,使用者也较多,本文选择使用Python 2.X版本. 安装步骤: (1) 下载Python安装包:https://w ...

  4. 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册

    1)实验平台:正点原子RV1126 Linux开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套实验源码+手册+视频 ...

  5. 【正点原子MP157连载】 第四章 开发环境搭建-摘自【正点原子】【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  6. NXP JN5189 ZigBee 3.0开发环境搭建(续)

    NXP JN5189 ZigBee 3.0开发环境搭建(续) 一.设置 SDK 安装位置 二.导入 DK6 的 SDK 三.安装 NXP Zigbee Configuration Editor 1.插 ...

  7. NXP JN5189 ZigBee 3.0开发环境搭建

    NXP JN5189 ZigBee 3.0开发环境搭建 一.下载相关软件 1.IDE 2.SDK 3.MCUXpresso Config Tools 4.GCC Arm Embedded tool c ...

  8. NXP freescale 开发环境搭建

    目录 NXP和freescale简介 本文使用的芯片 术语介绍 开发环境选择 MCUXpresso IDE环境搭建 ①下载安装 ②安装SDK 并 新建项目 MDK Keil + MCUXpresso ...

  9. 《安富莱嵌入式周报》第306期:开源独轮车,Cortex-M85修订版r1发布,Terathon图形数学库,不断变革的IDE开发环境,各个厂家总动员

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  10. Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)

    Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...

最新文章

  1. 今晚8点直播 | 详解聊天机器人落地及进阶实战
  2. 自定义View:测量measure,布局layout,绘制draw
  3. 高质量的缺陷分析:让自己少写 bug
  4. js实现按下删除键清空文本框内容
  5. 打造数据中心的软实力
  6. day08—css布局解决方案之多列布局
  7. Nginx配置多域名代理
  8. php聚合支付,pay: ThinkPHP开源聚合支付系统
  9. 多层神经网络的局部最小值与全局最小值——The problem of convexity
  10. 包装exp是什么意思_包装上exp是什么意思?
  11. Windows自启动方式完全总结
  12. SQL两表关联查询(两表会了,三表,四表都小意思)
  13. 《黑镜》第一季观后感
  14. 京东2018校园招聘面试题学习
  15. v-show和v-if
  16. python 理论基础知识试题_Python理论基础知识复习
  17. python网络爬虫学习笔记2
  18. sql plus 查看表结构,oracle dese 查看表结构
  19. PMP项目管理实战 | 项目经理如何做好会议管理?
  20. VUE 常用炫酷动画库(拿来即用系列)

热门文章

  1. HDU 6318 Swaps and inversions
  2. Python class objects confusing
  3. 【离散数学】命题逻辑
  4. OFN鼠标驱动(三) -- I2C驱动的移植(2)
  5. 克拉克松Clarkson Research情报网注册登录及进行数据查询(以世界造船厂分布为例)
  6. java计算农历日期
  7. 向量空间模型算法(Vector Space Model)
  8. java覆盖的概念_java中覆盖是什么意思?java方法覆盖的概念详解
  9. 苹果(APPLE)开发人员账号说明及注冊流程(99美元公司版/个人版及299美元企业版)...
  10. mysql数据库连接池锁_数据库连接池deadlock