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.

[参考译文] RM48L952:在 INIT 时复位系统控制寄存器(SCTLR)寄存器

Guru**** 2350610 points
Other Parts Discussed in Thread: RM48L952, HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/613704/rm48l952-resetting-system-control-register-sctlr-register-at-init

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

您好!

我正在 Hercules HDK RM48L952上开发引导加载程序:

  • 引导加载程序是 TI 引导加载程序以太网
  • 用户应用程序基于 Micrium OS uCOS-III  

引导加载程序的初始化会调用服务"_coreEnableIrqVicOffset_"来启用通过 VIC 控制器进行的 IRQ 处理。 用户应用程序的初始化不会调用服务"_coreEnableIrqVicOffset_"、因为此模式与 uCOS-III 不兼容

但是、当用户应用程序被初始化(HALCoGen 生成的 sys_startup.c)时、寄存器系统控制寄存器(SCTLR)中的 VE 位不会复位为0。 因此、我已经编写了一个服务"_coreDisableIrqVicOffset_"来强制该位复位。

我不确定这是正确的方法。 HALCoGen 是否生成了复位该寄存器的任何函数?

此致

皮埃尔

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

    Micrium 硬件矢量中断是否在其操作系统中? 您可以通过系统控制寄存器配置矢量中断。 位24为 VE:

    MRC P15、0、R1、C1、c0、 0
    BIC R1、R1、#0x1 << 24
    MCR P15、0、R1、C1、c0、 0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    HW 矢量中断与 Micrium 操作系统不兼容。 这就是我必须手动复位 SCTLR 寄存器的原因。
    但我感到惊讶的是、生成的_c_int00函数未复位所有寄存器、包括系统控制寄存器。 这是预期行为吗?

    此致

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

    _c_int00复位 CPU 通用寄存器(R0、R1、...)、并且不会复位所有器件寄存器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    好的、很高兴知道。 感谢您的回答。
    此致、

    皮埃尔