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.

[参考译文] RTOS/PROCESSOR-SDK-AM335X:寄存器访问失败

Guru**** 2611705 points
Other Parts Discussed in Thread: AM3354

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657242/rtos-processor-sdk-am335x-register-access-failure

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:AM3354

工具/软件:TI-RTOS

你(们)好。

我使用的是 AM3354开发板(Variscite AM3354 +评估套件)、

Windows 10 64位、CCS v7.3、PDK-RTOS-AM335x-4.2.0.9、NDK-2.26.0、XDS100-v3 JTAG

当我使用示例文件时、CCS 显示寄存器值。 (已在内存浏览器中检查)

基本示例(基准测试或其他)代码已确认其正常工作。

(实际上 NIMU 示例不能完美工作、但谈判是可以的。

但是、当使用实际寄存器访问代码执行时、该位置会发生错误。

示例)  

示例中的电路板初始化代码 Board_init (boardCfg); 此部件工作正常。

但是、在我的代码中、

enableModule (SOC_CM_RTC_reg、CM_RTC_RTC_CLKCTRL、
CM_RTC_CLKSTCTRL、
CM_RTC_CLKSTCTRL_CLKACTIVITY_L4_RTC_GCLK);

enableModule (SOC_CM_RTC_reg、CM_RTC_RTC_CLKCTRL、
CM_RTC_CLKSTCTRL、
CM_RTC_CLKSTCTRL_CLKACTIVITY_RTC_32KCLK);

这些调用下一个函数

void enableModule (uint32_t domainOffset、uint32_t clkCtrlReg、uint32_t clkStCtrlReg、uint32_t clkActMask)

/*启用模块*/
//HW_WR_REG32 (domainOffset + clkCtrlReg、PRCM_MODULEMODE_ENABLE);

*(volatile uint32_t *)(domainOffset + clkCtrlReg)= PRCM_MODULEMODE_ENABLE;<- CortxA8:发生未处理的 ADP_Stopped 异常0x20023!!

/*检查模块启用状态*/
while (PRCM_MODULEMODE_ENABLE!=
(HW_RD_REG32 (domainOffset + clkCtrlReg)& PRCM_MODULEMODE_MASK);
/*检查时钟活动-已取消*/
while (clkActMask!=(hw_RD_REG32 (domainOffset + clkStCtrlReg)& clkActMask));
/*检查空闲状态值-应该处于功能状态*/
while (((PRCM_MODULE_IDLEST_FUNC << PRCM_IDLE_ST_SHIFT)!=
(HW_RD_REG32 (domainOffset + clkCtrlReg)& PRCM_IDLE_ST_MASK);

我不知道为什么在运行与示例相同的过程时会发生错误。

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

    它的工作方式是在 cfg 配置文件中添加 peripheralAttrs 属性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您与社区分享解决方案。

    此致、
    帕维尔