This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/RM48L952:在下载&amp 期间强制 N2HET1[18]为高电平;调试

Guru**** 2482105 points
Other Parts Discussed in Thread: RM48L952

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/710163/ccs-rm48l952-force-n2het1-18-high-during-download-debug

器件型号:RM48L952

工具/软件:Code Composer Studio

我们有一个外部看门狗实现、要求我们在下载期间保持 WD_EN 输入为高电平、否则我们的看门狗会由于缺少脉冲而跳闸、从而导致不可避免的下载失败。

是否有任何方法、使用目标配置文件、GEL 文件或类似文件;在 JTAG 访问期间强制特定 GPIO 进入高电平状态-这将禁用我们的看门狗并允许下载。 我们可能需要探讨的其他选项包括编程夹具、用于探测此输入是否保持高电平、但如果我们可以通过 JTAG 会话配置找到解决方案、这不是我们现在要承诺的。

谢谢

JW

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jamie、

    CCS 随附每个 MCU 的默认 GEL 文件。 当您创建新项目并定义目标 MCU 时、相关 GEL 文件会自动包含在内。 通常可以在"C:\ti\ccsv8\ccs_base\emulation\gel"文件夹下找到 GEL 文件。

    GEL 文件定义了从 CCS 中的 GEL 菜单项下成为可执行命令的函数和"menuitems"。 rm48l952.gel 文件具有一个用于交换闪存和 RAM 存储器地址的函数、例如。

    在下载更新的程序之前、您可以创建自己的函数来将 N2HET1[18]引脚设置为高电平。 将该引脚设置为高电平所需的最小寄存器数量为:CLKCNTL.Pena (用于释放复位中的外设)、PSPWRDWNCLR0.17 (用于启用 N2HETx 模块的时钟)、然后到达 N2HET1寄存器以将该引脚作为 GPIO 驱动为高电平。

    请注意、JTAG 必须首先连接到器件、然后执行此 GEL 命令。 执行 GEL 命令以将该引脚驱动为高电平与外部看门狗复位跳闸之间可能存在竞争。

    请告诉我它是怎么发生的。

    此致、
    Sunil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Sunil、

    我确实考虑了比赛条件,认为这将成为这种做法的障碍。 但无论如何、我都有兴趣了解如何在调试期间使用 GEL 来控制 MCU 外设。

    我已将以下 定义和指针添加到必要的寄存器中

    #define HETREG1_DIRBASE 0xFFF7B84C
    #define HETREG1_DOUTBASE 0xFFF7B854
    #define HETREG1_DSETBASE 0xFFF7B858
    #define HETPORT1_BASE 0xFFF7B84C
    #define CLKCNTL_base 0xFFFFFFD0
    #define PSPWRDWNCLR0_BASE 0xFFFFFFE0A0
    
    unsigned int * clkcntl =(unsigned int *) CLKCNTL_base;
    unsigned int * pspwrdwnclr0 =(unsigned int *) PSPWRDWNCLR0_BASE;
    unsigned int * hetreg1dir =(unsigned tdHED1g1
    =(unsigned int *
    )*)* unsigned tredHEDREdint + t + degin 1 =(unsigned t1) 

    在 OnTarget Connext 中、我添加了以下内容:

    /*时钟启用*/
    *clkcntl |= 0x00000100U;
    
    /*启用到外设的时钟*/
    pspwrdwnclr0 = 0xFFFFFFU;
    
    
    /*设置 HET1默认输出值和方向*/
    * hetreg1dout = (uint32)((uint32) 1U <<18U);
    

    然后我打算适当设置 hetreg1dir 和 hetreg1dset、但如果我尝试设置 hetreg1dout、我无法使调试器成功连接。 注释掉这一行并仅设置 clkcntl 和 pspwrdwnclr0似乎是可以的。 在处理 het1存储器之前、我是否必须执行其他操作?

    我基本上只是尝试复制 het_init 和 gioSetBit 的逻辑、但每次 CCS 崩溃。

    非常希望提供一些将一个 het1通道设置为 ON 的示例代码。

    谢谢

    Jamie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更新... 上面设置 het1寄存器的代码使用未知类型 UINT32。 我已显式键入'unsigned int'、但我不再遇到崩溃。 我现在看到了 JTAG 连接期间的 NHET 活动、所以将尝试验证时序以及我们在看门狗上的交互方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    /* */
    /*作者:JWardlaw,2018年7月19日 */
    * */
    * */
    /*文件: CSI_rm48L952_wdog_ds.gel */
    * */
    /*注意:此 GEL 文件作为示例提供、可用于 */
    * RM48L952微控制器的软件开发。 以前 */
    * 使用建议检查文件是否提供 */
    * 预期的功能。 */
    * */
    * */
    
    //*--------------------------------------------------------------------------------------------------------- */
    *定义-内存映射说明符 */
    #define FLASH 0
    #define RAM 1
    #define nEMIF 0
    #define EMIF 1
    
    /*------------------------------------------------------- */
    *定义-文本格式指定符 //
    #define black 0
    #define blue 1
    #define red 2
    
    /*------------------ */
    *定义-内存开关 */
    #define started 0
    #define compl 1
    
    /*------------------------------------------------------- */
    *全局变量-默认内存映射 */
    unsigned int 内存映射=闪存;
    
    /*----------------- */
    *全局变量-内存切换 */
    unsigned int MemSwitchState = compl;
    
    
    /*------------------------------------------------------- JTAG
    访问期间的*///* HET 控制*/
    
    #define HETREG1_DIRBASE 0xFFF7B84C
    #define HETREG1_DOUTBASE 0xFFF7B854
    #define HETREG1_DSETBASE 0xFFF7B858
    #define HETREG1_GCRBASE 0xFFF7B800
    #define HETPORT1_BASE 0xFFF7B84C
    #define CLKCNTL_base 0xFFFFFFD0
    #define PSPWRDWNCLR0_BASE 0xFFFFFFE0A0
    
    unsigned int * clkcntl =(unsigned int *) CLKCNTL_base;
    unsigned int * pspwrdwnclr0 =(unsigned int *) PSPWRDWNCLR0_BASE;
    unsigned int * hetreg1gr =(unsigned int
    *)
    * unsigned int + rg1 =(unsigned int)* rg1 =(unsigned int)+ rg1 = unsigned int + rg1 =(unsigned int)+ rg1)
    unsigned int *hetreg1dset =(unsigned int *) HETREG1_DSETBASE;
    
    /*--------------- */
    /*函数- startup() */
    * */
    startup(){}/*
    
    startup()*/*--------------------------------------------------------
    
    */*
    函数- OnResetDetected () */
    * */
    OnResetDetected (){
    
    if (MemSwitchState == compl){
    
    memmap (闪存、EMIF);
    MemoryMap =闪存;
    GEL_TextOut ("\t 由于系统复位、闪存@地址0x0的内存映射设置\n"、、、、 );
    }
    
    if (MemSwitchState ==已启动)
    
    MemSwitchState == compl;
    }
    /*------------------ */*
    函数- OnTargetConnect() */
    * */
    OnTargetConnect (){
    
    if (MemoryMap ==闪存){
    memmap (闪存、EMIF);
    GEL_TextOut ("\t 闪存@地址0x0"、、、、、、的内存映射设置 );
    }
    if (MemoryMap == RAM){
    memmap (RAM、EMIF);
    GEL_TextOut ("\tRAM 的内存映射设置@地址0x0。"、、、、 );
    GEL_TextOut ("\t 仅用于调试!"、、、、 );
    }
    
    /*禁用看门狗*/
    GEL_TextOut ("\n[CSI]正在禁用看门狗\n"、、、、 );
    /*时钟启用*/
    *clkcntl |= 0x00000100U;
    GEL_TextOut ("\n[CSI]时钟启用\n"、、、、 );
    /*启用到外设的时钟*/
    pspwrdwnclr0 = 0xFFFFFFU;
    GEL_TextOut ("\n[CSI]外设时钟启用\n"、、、、 );
    
    /*设置 HET1默认输出值和方向*/
    * hetreg1dout = (unsigned int)(unsigned int) 0U << 31U)
    |(unsigned int)(unsigned int) 0U << 30U)
    |(unsigned int)(unsigned int) 0U << 29U)
    |(unsigned int)(unsigned int) 0U << 28U)
    |(unsigned int)(unsigned int) 0U << 27U)
    |(unsigned int)(unsigned int) 0U << 26U)
    |(unsigned int)(unsigned int) 0U << 25U)
    |(unsigned int)(unsigned int) 0U << 24U)
    |(unsigned int)(unsigned int) 0U << 23U)
    |(unsigned int)(unsigned int) 0U << 22U)
    |(unsigned int)(unsigned int) 0U << 21U)
    |(unsigned int)(unsigned int) 0U << 20U)
    |(unsigned int)(unsigned int) 0U << 19U)
    |(unsigned int)(unsigned int) 1U <<18U)
    |(unsigned int)(unsigned int) 0U << 17U)
    |(unsigned int)(unsigned int) 0U << 16U)
    |(unsigned int)(unsigned int) 0U << 15U)
    |(unsigned int)(unsigned int) 0U << 14U)
    |(unsigned int)(unsigned int) 0U << 13U)
    |(unsigned int)(unsigned int) 0U << 12U)
    |(unsigned int)(unsigned int) 0U << 11U)
    |(unsigned int)(unsigned int) 0U << 10U)
    |(unsigned int)(unsigned int) 0U << 9U)
    |(unsigned int)(unsigned int) 0U << 8U)
    |(unsigned int)(unsigned int) 0U << 7U)
    |(unsigned int)(unsigned int) 0U << 6U)
    |(unsigned int)(unsigned int) 0U << 5U)
    |(unsigned int)(unsigned int) 0U << 4U)
    |(unsigned int)(unsigned int) 0U << 3U)
    |(unsigned int)(unsigned int) 0U << 2U)
    |(unsigned int)(unsigned int) 0U << 1U)
    |(unsigned int)(unsigned int) 0U << 0U);
    
    GEL_TextOut ("\n[CSI] HET1默认设置\n"、、、、 );
    
    *hetreg1dir = (无符号 int) 0x00000000U
    |(无符号整型) 0x40000000U
    |(无符号 int) 0x00000000U
    |(无符号整型) 0x10000000U
    |(unsigned int) 0x08000000U
    |(无符号整型) 0x04000000U
    |(无符号整型) 0x02000000U
    |(无符号 int) 0x00000000U
    |(无符号 int) 0x00000000U
    |(无符号整型) 0x00400000U
    |(无符号 int) 0x00000000U
    |(无符号整型) 0x00100000U
    |(无符号整型) 0x00080000U
    |(无符号整型) 0x00040000U
    |(无符号整型) 0x00020000U
    |(无符号整型) 0x00010000U
    |(无符号整型) 0x00008000U
    |(无符号整型) 0x00004000U
    |(无符号 int) 0x00000000U
    |(无符号整型) 0x00001000U
    |(无符号整型) 0x00000800U
    |(无符号整型) 0x00000400U
    |(无符号整型) 0x00000200U
    |(无符号整型) 0x00000100U
    |(unsigned int) 0x00000080U
    |(无符号 int) 0x00000000U
    |(无符号 int) 0x00000000U
    |(unsigned int) 0x00000010U
    |(无符号整型) 0x00000008U
    |(无符号整型) 0x00000004U
    |(无符号整型) 0x00000002U
    |(无符号整型) 0x00000001U;
    GEL_TextOut ("\n[CSI] HET1方向集"、、、、 );
    
    *hetreg1gcr =(0x00000001U
    |(unsigned int)(unsigned int) 0U << 24U)
    |(unsigned int)(unsigned int) 1U <<16U)
    |(0x00020000U));
    
    GEL_TextOut ("\n[CSI] HET1 GCR 集\n"、、、、、 );
    
    } /* OnTargetConnect ()*/
    
    /*----------------- */
    /*函数- memmap (memSel、extMem) */
    * */
    memmap (memSel、extMem){
    
    GEL_MapOff ();
    GEL_MapReset();
    
    /*闪存/RAM 定义*/
    if (memSel ==闪存){
    
    /*闪存定义*/
    GEL_MapAdd (0x00000000、0、0x00300000、1、0); /*内部闪存() *
    GEL_MapAddStr (0xF0400000、0、0x00060000、"R|AS2"、0); /*内部闪存 ECC */
    GEL_MapAdd (0x08000000、0、0x00040000、1、1); /*内部 RAM *
    GEL_MapAdd (0x08400000、0、0x00040000、1、1); /*内部 RAM ECC *
    GEL_MapAdd (0x20000000、0、0x00300000、1、0); /*镜像闪存 *
    GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC/PSA */
    }
    
    if (memSel == RAM){
    
    /* RAM 定义*/
    GEL_MapAdd (0x00000000、0、0x00040000、1、1); /*内部 RAM *
    GEL_MapAdd (0x00400000、0、0x00040000、1、1); /*内部 RAM ECC *
    GEL_MapAdd (0x08000000、0、0x00300000、1、0); /*内部闪存() *
    GEL_MapAddStr (0xF0400000、0、0x00060000、"R|AS2"、0); /*内部闪存 ECC */
    GEL_MapAdd (0x20000000、0、0x00300000、1、0); /*镜像闪存 *
    GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC/PSA */
    }
    
    if (extMem =EMIF){
    
    GEL_MapAdd (0x60000000、0、0x10000000、1、1); /*外部异步存储器 *
    GEL_MapAdd (0x80000000、0、0x08000000、1、1); /*外部同步 SDRAM 内存 */
    }
    
    /*其它与闪存相关的内存*/
    GEL_MapAdd (0xF0200000、0、0x00010000、1、0); /* EEPROM *
    GEL_MapAddStr (0xF0100000、0、0x00002000、"R|AS2"、0); /* EEPROM ECC *
    GEL_MapAdd (0xF0000000、0、0x00004000、1、0); /*客户 OTP *
    GEL_MapAddStr (0xF0040000、0、0x00000800、"R|AS2"、0); /*客户 OTP ECC *
    GEL_MapAdd (0xF000E000、0、0x00001000、1、0); /*客户 OTP、EEPROM *
    GEL_MapAddStr (0xF0041C00、0、0x00000400、"R|AS2"、0); /*客户 OTP、EEPROM ECC *
    
    
    /*外设寄存器定义*/
    GEL_MapAdd (0xFFF7FC00、0、0x00000200、1、1); /* SPI5. -PS00 *
    GEL_MapAdd (0xFFF7FA00、0、0x00000200、1、1); /* SPI4. -PS01 *
    GEL_MapAdd (0xFFF7F800、0、0x00000200、1、1); /* SPI3. -PS01 *
    GEL_MapAdd (0xFFF7F600、0、0x00000200、1、1); /* SPI2 -PS02 *
    GEL_MapAdd (0xFFF7F400、0、0x00000200、1、1); /* MIBSPI1 - PS02 *
    GEL_MapAdd (0xFFF7E400、0、0x00000100、1、1); /* LIN -PS06 *
    GEL_MapAdd (0xFFF7E500、0、0x00000100、1、1); /* SCI -PS06 *
    GEL_MapAdd (0xFFF7E000、0、0x00000200、1、1); /* DCAN3. -PS07 *
    GEL_MapAdd (0xFFF7DE00、0、0x00000200、1、1); /* DCAN2. -PS08 *
    GEL_MapAdd (0xFFF7DC00、0、0x00000200、1、1); /* DCAN1 -PS08 *
    GEL_MapAdd (0xFFF7D400、0、0x00000100、1、1); /* I2C PS10 *
    GEL_MapAdd (0xFFF7C200、0、0x00000200、1、1); /* MIBADC2 - PS15 *
    GEL_MapAdd (0xFFF7C000、0、0x00000200、1、1); /* MIBADC1 - PS15 *
    GEL_MapAdd (0xFFF7BC00、0、0x00000100、1、1); /* GIO PS16 *
    GEL_MapAdd (0xFFF7B800、0、0x00000100、1、1); /* NHET1 PS17 *
    GEL_MapAdd (0xFFF7B900、0、0x00000100、1、1); /* NHET2 PS17 *
    GEL_MapAdd (0xFFF7A400、0、0x00000100、1、1); /* HET TU -PS22 *
    GEL_MapAdd (0xFFF7A500、0、0x00000100、1、1); /* HET TU2 -PS22 *
    
    
    /*外设存储器*/
    GEL_MapAdd (0xFC520000、0、0x00002000、1、1); /* CPPI、以太网 RAM - PS05 */
    GEL_MapAdd (0xFF0A0000、0、0x00020000、1、1); /* MibSPI5 RAM - PS05 *
    GEL_MapAdd (0xFF0C0000、0、0x00020000、1、1); /* MibSPI3 RAM - PS06 *
    GEL_MapAdd (0xFF0E0000、0、0x00020000、1、1); /* MibSPI1 RAM - PS07 *
    GEL_MapAdd (0xFF1A0000、0、0x00020000、1、1); /* CAN3 RAM PS13 *
    GEL_MapAdd (0xFF1C0000、0、0x00020000、1、1); /* CAN2 RAM PS14 *
    GEL_MapAdd (0xFF1E0000、0、0x00020000、1、1); /* CAN1 RAM PS15 *
    GEL_MapAdd (0xFF3A0000、0、0x00020000、1、1); /* MIBADC2 RAM - PS29 *
    GEL_MapAdd (0xFF3E0000、0、0x00020000、1、1); /* MIBADC1 RAM - PS31 *
    GEL_MapAdd (0xFF440000、0、0x00020000、1、1); /* NHET2 RAM PS34 *
    GEL_MapAdd (0xFF460000、0、0x00020000、1、1); /* NHET1 RAM -PS35 *
    GEL_MapAdd (0xFF4C0000、0、0x00020000、1、1); /* HET2 TU RAM -PS38 *
    GEL_MapAdd (0xFF4E0000、0、0x00020000、1、1); /* HET1 TU RAM -PS39 *
    
    /*系统外设寄存器*/
    GEL_MapAdd (0xFE000000、0、0x01000000、1、1); /* CRC *
    GEL_MapAdd (0xFFA00000、0、0x00001000、1、1); /* CoreSight 调试 ROM *
    GEL_MapAdd (0xFFA01000、0、0x00001000、1、1); /* R4调试寄存器 *
    GEL_MapAdd (0xFFA02000、0、0x00001000、1、1); /* ETM-R4寄存器 *
    GEL_MapAdd (0xFFA03000、0、0x00001000、1、1); /* CoreSight TPIU 寄存器*/
    GEL_MapAdd (0xFFA04000、0、0x00001000、1、1); /* POM 寄存器 *
    GEL_MapAdd (0xFFF80000、0、0x00001000、1、1); /* DMA RAM *
    GEL_MapAdd (0xFFF82000、0、0x00001000、1、1); /* VIM RAM *
    GEL_MapAdd (0xFFF83000、0、0x00001000、1、1); /* RTP RAM *
    GEL_MapAdd (0xFFF87000、0、0x00001000、1、1); /*闪存包装程序寄存器*/
    GEL_MapAdd (0xFFF8C000、0、0x00001000、1、1); /*熔丝组控制器 *
    GEL_MapAdd (0xFFFFFF0000、0、0x00000200、1、1); /*电源管理寄存器*/
    GEL_MapAdd (0xFFFFFFE000、0、0x00000100、1、1); /* PCR 寄存器 *
    GEL_MapAdd (0xFFFFFFE100、0、0x00000100、1、1); /*系统2寄存器 *
    GEL_MapAdd (0xFFFFFFE400、0、0x00000200、1、1); /* PBIST *
    GEL_MapAdd (0xFFFFFFE600、0、0x00000100、1、1); /* STC *
    GEL_MapAdd (0xFFFFFFEA00、0、0x00000200、1、1); /* IOMM *
    GEL_MapAdd (0xFFFFFFEC00、0、0x00000100、1、1); /* DCC1 *
    GEL_MapAdd (0xFFFFFF000、0、0x00000400、1、1); /* DMA *
    GEL_MapAdd (0xFFFFFF400、0、0x00000100、1、1); /* DCC2 *
    GEL_MapAdd (0xFFFFFF500、0、0x00000100、1、1); /* ESM *
    GEL_MapAdd (0xFFFFFF600、0、0x00000100、1、1); /* CCMR4 *
    GEL_MapAdd (0xFFFFFF700、0、0x00000100、1、1); /* DMM *
    GEL_MapAdd (0xFFFFFF800、0、0x00000100、1、1); /* RAM ECC 偶数 *
    GEL_MapAdd (0xFFFFFF900、0、0x00000100、1、1); /* RAM ECC 奇数 *
    GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* RTP *
    GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* RTI 寄存器 *
    GEL_MapAdd (0xFFFFFFFD00、0、0x00000100、1、1); /* VIM 奇偶校验 *
    GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /* VIM 寄存器 *
    GEL_MapAdd (0xFFFFFF00、0、0x00000100、1、1); /*系统寄存器 *
    
    /* EMIF/以太网寄存器*/
    GEL_MapAdd (0xFCFFE800、0、0x00000100、1、1); /* EMIF *
    GEL_MapAdd (0xFCF78000、0、0x00000400、1、1); /* CPGMAC 从属设备 *
    GEL_MapAdd (0xFCF78800、0、0x00000100、1、1); /* CPGMACSS 包装程序 *
    GEL_MapAdd (0xFCF78900、0、0x00000100、1、1); /*以太网 MDIO *
    GEL_MapAddStr (0xFCF78A00、0、0x00000080、"R|W|AS2"、1); /* W2FC USB 设备 *
    GEL_MapAdd (0xFCF78B00、0、0x00000100、1、1); /* OHCI USB 主机 *
    
    GEL_MapOn();
    
    }/*函数- memmap (memSel、extMem)*/
    
    /*--------------- */
    /*函数- swap_mem (memSel) */
    * */
    swap_mem (memSel){
    
    GEL_TextOut ("注意:\n\t 将切换设备的闪存/RAM 存储器地址。");
    GEL_TextOut ("\tat 此例程的末尾将重置器件。");
    GEL_TextOut ("\t 这可能会导致弹出消息、指出错误!");
    GEL_TextOut ("\tJust 在消息出现后重新连接。");
    
    MemSwitchState =已启动;
    
    if (memSel == RAM){
    
    memmap (RAM、EMIF);
    MemoryMap = RAM;
    *(int *) 0xffffffffc4 = 0x050505;
    *(int *) 0xffffffcc = 0x00000001;
    *(int *) 0xffffffcc = 0x00000000;
    }
    
    if (memSel ==闪存){
    
    memmap (闪存、EMIF);
    MemoryMap =闪存;
    *(int *) 0xffffffffc4 = 0x0A0A0A0A;
    *(int *) 0xffffffcc = 0x00000001;
    *(int *) 0xffffffcc = 0x00000000;
    }
    
    MemSwitchState = compl;
    
    GEL_TextOut ("\t 内存交换完成。");
    GEL_TextOut ("\TIN 用例弹出消息已启用、重新连接到设备。");
    
    
    } /* swap_mem (memSel)*/
    
    /*-------------------------------------------------------- */*
    菜单项-"RM48L952内存映射设置" */
    * */
    菜单项"RM48L952内存映射设置";
    
    热菜单 CCS_MemMap_flash_at_0x0 (){
    
    memmap (闪存、EMIF);
    GEL_TextOut ("\t 闪存@地址0x0"、、、、、、的内存映射设置 );
    
    }
    
    热菜单 CCS_MemMap_RAM_at_0x0 (){
    
    memmap (RAM、EMIF);
    GEL_TextOut ("\tRAM 的内存映射设置@地址0x0。"、、、、 );
    GEL_TextOut ("\t 仅用于调试!"、、、、 );
    
    }
    
    /*------------------ */*
    菜单项-"RM48L952内存开关" */
    * */
    菜单项"RM48L952存储器开关";
    
    热菜单 Target_Flash_TO_0x0 (){
    
    swap_mem (flash);
    }
    
    热菜单 Target_RAM_TO_0x0 (){
    
    swap_mem (RAM);
    }
    

    我让它正常工作。 但下载过程中的竞争条件会使其无法成为可行的解决方案。 由于 MCU 在下载期间处于未通状态、因此我们发送到看门狗 IC 的信号通常较低、这意味着看门狗开启。 1秒后、没有脉冲、命令重置、这当然会导致程序负载终止。 作为参考、这是我在目标的常规连接上成功切换 NHET 引脚的 GEL 文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jamie、

    您无需写入 HETGCR0寄存器即可打开 HET。 这是 HET 处理引擎开始执行 HET 程序的控制。 您可以使 HET 保持关闭状态、以便将 N2HET1[18]引脚驱动为高电平作为 GPIO。