IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建 -> 正文阅读

[嵌入式]NXP MIMXRT1052CVL5B + 正点原子 + MCUXpresso IDE 开发环境搭建

说明

因为公司规定不能使用盗版软件,而正点原子提供的开发例程又都是基于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 浏览器就可以,不明所以然

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:00:59  更:2021-09-11 00:01:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:37:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码