[分享] MCUXPresso JLINK仿真RT1050从QSPI启动问题
775 查看
1 回复
 楼主 | 发布于 2020-09-18 | 只看楼主
分享到:
一,文档介绍

      在使用MIMXRT1050-EVKB修改为从外部QSPI flash启动,代码使用官方的SDK代码,IDE使用官方的MCUXpress IDE 具体的硬件以及代码修改可以参考之前写过的经验分享:


       如果使用IARMDK结合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仿真,会出现如下问题:

  • 外部qspi flash被擦除的情况下
    进入仿真之后,指针无法进入到main,退出debug之后,程序功能不运行。
  • 外部qspi flash已经有代码的情况下
    进入仿真之后,指针可以进入main,但是运行起来,会发现还是上一次flash里面的代码。举例,上次烧录的是helloworld的代码,当前是Ledblinky的代码,看似仿真已经进去了,但是运行或者退出仿真,跑的均是之前的helloworld代码。


关键这个问题,只有在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中看到

本帖有更多资源,需 登录 才可以下载,没有帐号?立即 注册

(0 ) (0 )
回复 举报

回复于 2020-09-25 沙发

(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部