查看: 3780|回复: 2

[原创] 【经验分享】MCUXPresso JLINK仿真RT1050从QSPI启动问题

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20002
最后登录
2024-4-24
发表于 2019-7-26 20:09:53 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2019-7-26 20:11 编辑

一,文档介绍

      在使用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文件修改

1.jpg


修改之后,使用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的代码修改为如下代码:

2.jpg



附件中,会给出对应的修改后的segger JLinkDevices.xml,也可以直接替换C:\Program Files(x86)\SEGGER\JLink_V644i\路径下的文件。

修改之后,再次使用JLINK仿真,可以看到就算把外部QSPI flash擦除掉,也能够准确进入到debug模式:

3.jpg

这里几个注意点:

  • 如果在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中看到


【经验分享】MCUXPresso JLINK仿真RT1050从QSPI启动问题.pdf (402.74 KB, 下载次数: 70)
回复

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20002
最后登录
2024-4-24
 楼主| 发表于 2019-7-26 20:10:54 | 显示全部楼层
希望对使用到这个功能的网友有所帮助!
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2020-6-10 20:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    35
    最后登录
    2020-9-3
    发表于 2020-6-10 20:38:18 | 显示全部楼层
    感谢 学习学习
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-24 15:17 , Processed in 0.117941 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表