TDA4VM/VH 单核软复位原理与实现实现

本文详细描述了如何通过TI的RTOSSDK在TDA4VM芯片中实现单核软复位,利用LocalReset功能对A核和R核进行复位,同时给出了相关的寄存器操作代码示例。
摘要由CSDN通过智能技术生成

说明

由于 TI 的 RTOS SDK 没有提供单核复位的代码,经过仔细阅读 TDA4VM 芯片技术参考手册,发现可以通过触发 Local Reset 实现单核软复位。

结论

该方法已验证,可以复位 MAIN 域的 A 核与 R 核,以及 MCU 域的 R5F1_1( mcu_r5f1_0 需要按照 SBL 启动 app 的方式实现复位,DSP 核未测试)

原理

在 TDA4VM TRM 的第 5.2.2.2.1.4.3 章节,Local Reset 用于复位芯片上的某一单独模块,而不复位整个芯片。
同时该章节说明了 Local Reset 的触发方式,Local Reset 通过 WKUP_PSC0/PSC0 寄存器组触发:

  1. Set WKUP_PSC0_MDCTL_y[8] LRST or PSC0_MDCTL_y[8] LRST to 0x0 to assert local reset.
  2. Set WKUP_PSC0_MDCTL_y[8] LRST or PSC0_MDCTL_y[8] LRST to 0x1 to de-assert local reset

y 对应于模块的 LPSC 索引,具体模块索引值请查看 TRM。

TDA4VH 单核软复位部分代码实现

首先分别列出R核与 A 核对应的 WKUP_PSC0_MDCTL / PSC0_MDCTL 寄存器地址数组:

/* A/R 核所对应的 wkup_psc0_mdctl/psc0_mdctl 寄存器地址  */
static uint32_t g_uiPSC0_MDCTL_Addr[] = 
{
    0x400A00   + (80 * 4),      /* MPU1_0 */
    0x400A00   + (81 * 4),      /* MPU1_1 */
    0x400A00   + (108 * 4),     /* MPU1_2 */
    0x400A00   + (109 * 4),     /* MPU1_3 */
    0x400A00   + (84 * 4),      /* MPU2_0 */
    0x400A00   + (85 * 4),      /* MPU2_1 */
    0x400A00   + (110 * 4),     /* MPU2_2 */
    0x400A00   + (111 * 4),     /* MPU2_3 */
    0x42000A00 + (19 * 4),      /* MCU1_0 */
    0x42000A00 + (20 * 4),      /* MCU1_1 */
    0x400A00   + (93 * 4),      /* MCU2_0 */
    0x400A00   + (94 * 4),      /* MCU2_1 */
    0x400A00   + (96 * 4),      /* MCU3_0 */
    0x400A00   + (97 * 4),      /* MCU3_1 */
    0x400A00   + (122 * 4),     /* MCU4_0 */
    0x400A00   + (123 * 4),     /* MCU4_1 */
};

然后按照 Local Reset 触发方式,触发 Local Reset:

    /* 根据 uiCoreId 获取复位触发寄存器地址 */
    uiBaseaddr = g_uiPSC0_MDCTL_Addr[uiCoreId];

    /* 触发 Loacl reset */
    uiVal  = readw(uiBaseaddr);
    uiVal &= ~(LRSTZ_MASK << LRSTZ_POS);
    writew(uiVal, uiBaseaddr);

    uiVal  = readw(uiBaseaddr);
    uiVal |= (LRSTZ_MASK << LRSTZ_POS);
    writew(uiVal, uiBaseaddr);
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值