上篇介绍了如何使用官方IDE构建开发环境,《RT1052学习笔记(二) 使用官方MCUXpressoIDE 搭建开发环境》
本篇将进一步说明如何使用Jlink进行下载调试。
工程配置
要实现下载,需要配置一下刚刚新建的工程,
因为示例工程是基于官方开发板生成的,而官方开发板默认的代码存储设备是HyperFlash。
由于HyperFlash价格偏高,大部平台应用都是外挂一片QSPI Flash,如正点原子、野火、飞凌 RT1052的开发板
上都使用的是Qspi Flash,所以我们要做相应的修改。
需要修改如下两点:
1、LinkServer Flash Driver
这是一个IDE配置项,我猜测的作用是指定编译器链接的存储设备。
选中工程 右键 -> 属性 -> C/C++ Build -> MCU settings 如下图:
选择《MIMXRT1050_SFDP_QSPI.cfx》
2、存储设备驱动配置文件
这是一个代码配置,用来告诉芯片内部的引导程序,该如何初始化外部的QSPI Flash,
因为RT1052支持多种多样的启动方式,所以配置也相对麻烦一点。
其实除了flash需要配置,还有一些外设需要配置,比如SDRAM。
这些配置文件都在XIP文件夹中,如下图:
其中
《evkbimxrt1050_flexspi_nor_config》 是配置存储设备驱动和一些其他参数的。
《evkbimxrt1050_sdram_ini_dcd》 是配置外部的SDRAM的。
《fsl_flexspi_nor_boot》 其中包含了两个结构体,引导区域中IVT和BD块,这写后面我还会详细说明。
接下来我们修改一下《evkbimxrt1050_flexspi_nor_config.c》文件,
原文件内结构体如下:
const flexspi_nor_config_t hyperflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_ExternalInputFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
.columnAddressWidth = 3u,
// Enable DDR mode, Wordaddassable, Safe configuration, Differential clock
.controllerMiscOption =
(1u << kFlexSpiMiscOffset_DdrModeEnable) | (1u << kFlexSpiMiscOffset_WordAddressableEnable) |
(1u << kFlexSpiMiscOffset_SafeConfigFreqEnable) | (1u << kFlexSpiMiscOffset_DiffClkEnable),
.sflashPadType = kSerialFlash_8Pads,
.serialClkFreq = kFlexSpiSerialClk_133MHz,
.sflashA1Size = 64u * 1024u * 1024u,
.dataValidTime = {16u, 16u},
.lookupTable =
{
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xA0, RADDR_DDR, FLEXSPI_8PAD, 0x18),
FLEXSPI_LUT_SEQ(CADDR_DDR, FLEXSPI_8PAD, 0x10, DUMMY_DDR, FLEXSPI_8PAD, 0x06),
FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP, FLEXSPI_1PAD, 0x0),
},
},
.pageSize = 512u,
.sectorSize = 256u * 1024u,
.blockSize = 256u * 1024u,
.isUniformBlockSize = true,
};
可以看到使用的是hyperflash,这里修改成适配我板子的驱动,我板子上的FLASH型号是W25Q128。
修改如下:
const flexspi_nor_config_t spiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,/*标志:FCFB*/
.version = FLEXSPI_CFG_BLK_VERSION,/*版本:V1.4.0*/
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally,/*内部环回*/
.csHoldTime = 3u, /*保持时间*/
.csSetupTime = 3u,/*建立时间*/
.columnAddressWidth = 0u,/*列地址宽度*/
.deviceModeCfgEnable = 1u,/*设备模式配置使能*/
.deviceModeType = 1u,/*Quad 使能命令*/
.deviceModeSeq.seqNum = 1u,/*LUT序列号*/
.deviceModeSeq.seqId = 4u, /*LUT序列索引*/
.deviceModeArg = 0x000200,/*设置 QE=1(S9)*/
.deviceType = kFlexSpiDeviceType_SerialNOR,/*设备类型为nor flash*/
.sflashPadType = kSerialFlash_4Pads,/*设备数据总线为4*/
.serialClkFreq = kFlexSpiSerialClk_133MHz,/*flash 时钟*/
.sflashA1Size = 16u * 1024u * 1024u, /*flash 大小16MBytes*/
//.dataValidTime = {16u, 16u},
.lookupTable =
{
/*快速读命令(四线)*/
[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, 0x04),
/*读状态命令*/
[1*4] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04),
/*写使能命令*/
[3*4] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0),
/*擦除扇区命令*/
[5*4] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20, RADDR_SDR, FLEXSPI_1PAD, 0x04),
/*页编程命令(四线)*/
[9*4] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x32, RADDR_SDR, FLEXSPI_1PAD, 0x18),
[9*4+1] = FLEXSPI_LUT_SEQ(WRITE_SDR,FLEXSPI_4PAD , 0x04, STOP, FLEXSPI_1PAD, 0),
/*整片擦除*/
[11*4] = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xc7, STOP, FLEXSPI_1PAD, 0),
},
},
.pageSize = 256u,/*页大小为256字节*/
.sectorSize = 4u * 1024u,/*扇区大小为4k字节*/
};
Jlink配置
是的,jlink也需要修改,因为Jlink默认的方式也是hyperflash。
安装MCUXpresso 时默认安装了Jlink驱动,路径:C:\Program Files (x86)\SEGGER\JLink
打开《JLinkDevices.xml》文件,搜索RT1052,可以看到默认的驱动配置:
将Name="HyperFlash" 改为Name="QSPI Flash",
Loader="Devices/NXP/iMXRT105x/NXP_iMXRT105x_HyperFlash.elf" 改为 Loader="Devices/NXP/iMXRT105x/NXP_iMXRT105x_QSPI.elf"
修改后如下:
下载
1、使用MCUXpresso 的GUI Flash Tool工具:
在如下位置,点击箭头选择SEGGER J-link probes 进行下载。
2、使用J-Flash工具下载
下载方法看我之前的博客《使用Jlink下载程序固件》
配置参照下方图片。
这里介绍下如何生成.bin 或.hex文件,MCUXpresso 默认生成的只有.axf文件,在Debug文件夹下,
选中.axf文件,右键 选择 Binary Utilities 在选择相应的生成类型。
如下:
调试
debug没啥配置的,点击下图红圈图标即可。
下一篇将介绍程序启动流程。《RT1052学习笔记(四) 程序启动流程 与 Bootable image文件的分析》
您好,正在学习RT1052, 能否麻烦共享一份NXP_iMXRT105x_QSPI.elf到邮箱NXP_iMXRT105x_QSPI.elf, 感谢
时间太久,基本都忘记了,相关资料也没有留下来,比较遗憾 当时应该趁做项目的时候把内容整理下来。
可以用原子自带的啊