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.

[参考译文] TMS570LS1224:esmInit() fn 中的错误为 gen#39;由 HALCOGEN 编写:对 ESMILSR1 & amp 的无效写入;ESMILSR4

Guru**** 2551590 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1031054/tms570ls1224-bug-in-esminit-fn-as-gen-ed-by-halcogen-ineffective-writes-to-esmilsr1-esmilsr4

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

被生成 的 esmInit() fn 似乎尝试将所有 ESM 组1中断通道(0-63)映射到低级中断线路,但它通过向 ESMILSR1和 ESMILSR1寄存器中的所有位写入0来实现此目的; 由于 TRM 指定将0写入特定的位,“将该位和相应的清零位留在... 寄存器不变"、这些写入无效。  如果我对这个初始化的目标是正确的、那么代码应该将"清除"寄存 器 ESMILCR1和 ESMILCR4中的相应位设定为1

Marcus

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

     esmInit()中的同样问题是,fn 将0写入 ESMEEPAPR1、ESMIEPSR4、ESMIESR1和  ESMIESR4中的位

    Marcus

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

     您好、Marcus、

    通过以下方式将所有 ESM 组1通道的 INT 优先级清零(esmREG->ILSRx 也被清零至0x0)为低电平中断:

    esmREG->ILCR1 = 0xFFFFFFU;
    esmREG->ILCR4 = 0xFFFFFFU;

    esmREG->ILSR1 = 0x...; 和 esmREG->ILSR4=0x... 将通过向相应位写入1将 INT 优先级模式更改为高电平、或通过写入0将其保持不变。  

    如果将 ESM1.1通道的 INT 级别更改为高,则 esmREG->ILSR1[1]将设置为1:

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

    大家好、我知道我、无论谁是谁、我认为您的回复确认了我在原始帖子中所说的所有内容、但明确承认 编码无效。  在进一步思考之后,我开始想知道 esmInit() fn 中无效的0值写入的意图是否是作为用户的模板,这只有在以下寄存器有定义的默认值(nPORRST 置位之后)时才有意义:

    ESMILSR1/ESMILCR1        读取其中任何一个都表示相同
    ESMILSR4/ESMILCR4.        读取其中任何一个都表示相同
    ESMEEPAPR1/ESMDEPAPR1 -读取其中任何一个都表示相同
    ESMIEPSR4/ESMIEPCR4     读取其中任何一个都表示相同
    ESMIESR1/ESMIECR1        读取其中任何一个都表示相同
    ESMIESR4/ESMIECR4        读取其中任何一个都表示相同

    假设默认值(已读)是所有位都设置为零;请确认。

    Marcus

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

     您好、Marcus、

    以下指令用于将这些寄存器清零为其默认值:  

    esmREG->ILCR1 = 0xFFFFFFU;
    esmREG->ILCR4 = 0xFFFFFFU;
    esmREG->ILCR7 = 0xFFFFFFU;

    esmREG->IECR1 = 0xFFFFFFU;
    esmREG->IECR4 = 0xFFFFFFU;
    esmREG->IECR7 = 0xFFFFFFU;

    esmREG->IEPCR4 = 0xFFFFFFU;
    esmREG->IEPCR7 = 0xFFFFFFU;

    以下指令用于从 HalCOGen GUI 的 ESM 面板中为所选通道启用中断、nERROR 操作和 FIQ 等。 对于未选择的通道、这些寄存器中的相应位不变:

    esmREG->ILSR1=...

    esmREG->ILSR4=...  

    esmREG->ILSR7=...

    esmREG->EEPAPR1=...

    esmREG->IEPSR4=...

    esmREG->IEPSR7=...

    esmREG->IESR1=...

    esmREG->IESR4=...  

    esmREG->IESR7=...

    你是对的。  复位后、这些寄存器的默认值为0x0。  

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

    大家好、感谢您的最终确认;现在将"关闭"此问题。

    Marcus