本帖最后由 小恩GG 于 2019-7-26 20:11 编辑
一,文档介绍
在使用MIMXRT1050-EVKB修改为从外部QSPI flash启动,代码使用官方的SDK代码,IDE使用官方的MCUXpress IDE, 具体的硬件以及代码修改可以参考之前写过的经验分享:
如果使用IAR和MDK结合JLINK下载,可能没有什么问题,但是使用MCUXpresso IDE的工程,经过如下修改:
1.代码
Evkbimxt1050_flexspi_nor_config.c,把hyperflash_config代码屏蔽掉,添加如下代码:
const flexspi_nor_config_t qspiflash_config = {
.memConfig =
{
.tag = FLEXSPI_CFG_BLK_TAG,
.version = FLEXSPI_CFG_BLK_VERSION,
.readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
.csHoldTime = 3u,
.csSetupTime = 3u,
// Enable DDR mode,Wordaddassable, Safe configuration, Differential clock
.sflashPadType =kSerialFlash_4Pads,
.serialClkFreq =kFlexSpiSerialClk_100MHz,
.sflashA1Size = 8u * 1024u *1024u,
.lookupTable =
{
// Read LUTs
FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD,0x18),
FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD,0x04),
},
},
.pageSize = 256u,
.sectorSize = 4u * 1024u,
.blockSize = 256u * 1024u,
.isUniformBlockSize =false,
};
2. cfx文件修改
修改之后,使用JLINK仿真,会出现如下问题:
关键这个问题,只有在MCUXPresso IDE中使用JLINK 仿真器才会出现这个问题,但是使用CMSIS DAP仿真,就没有问题。
二,问题解决
这里也不多说废话,直接上解决方案。
到Segger 官网下载最新的JLINK 驱动:
下载之后,打开路径: C:\Program Files(x86)\SEGGER\JLink_V644i\
文件:JLinkDevices.xml
搜索:MIMXRT105, 会找到跟RT105X相关的代码,可以看到所有的Flash用的都是Hyperflash,使用的loader也是Hyperflash的,所以将MIMXRT105X的代码修改为如下代码:
附件中,会给出对应的修改后的segger JLinkDevices.xml,也可以直接替换C:\Program Files(x86)\SEGGER\JLink_V644i\路径下的文件。
修改之后,再次使用JLINK仿真,可以看到就算把外部QSPI flash擦除掉,也能够准确进入到debug模式:
这里几个注意点:
如果在MIMXRT1050-EVKB板子上使用外部JLINK,并且使用J21 作为SWD仿真口,需要断开J33,也就是断开板载的仿真器,保证不会两个仿真冲突。 实际上,MCUXpresso IDE工程中,不需要修改对应的.cfx,因为这个驱动是给CMSIS DAP仿真器用的,如果用JLINK,是Segger自己导入的loader, 就是我们看到的segger JLinkDevices.xml中的Devices/NXP/iMXRT105x/NXP_iMXRT105x_QSPI.elf 可以在路径: C:\Program Files(x86)\SEGGER\JLink_V644i\Devices\NXP\iMXRT105x中看到
|