上篇介绍了如何使用官方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》文件,
原文件内结构体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <code>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, }; </code> |
可以看到使用的是hyperflash,这里修改成适配我板子的驱动,我板子上的FLASH型号是W25Q128。
修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <code>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字节*/ };</code> |
Jlink配置
是的,jlink也需要修改,因为Jlink默认的方式也是hyperflash。
安装MCUXpresso 时默认安装了Jlink驱动,路径:C:Program Files (x86)SEGGERJLink
打开《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文件的分析》