2135716_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2135716_zh-CN

2135716_zh-CN

MPC5746C 的寄存器保护

这些是我为 MPC5746C 实现寄存器保护下锁定机制的模块。


0xFFFB0140, /* CMU------------*/

0xFFFB0040, /* FXOSC----------*/

0xFFFB0180, /* MC_CGM --------*/

0xFFFB8000, /* MC_ME ---------*/

0xFFFA8000, /* MC_RGM --------*/

0xFFF50000, /* MEMU_0 -------*/

0xFFFB0080, /* PLLDIG --------*/

0xFFFA0400, /* PMCDIG --------*/

0xFFFC0000, /* SIUL2 ---------*/

0xFFFB0100, /* SXOSC ---------*/

0xFFF9C000 /* LPU_CTL -------*/

    1. 样本 1:(0xFFFB0000,偏移 - 0x4,32 位保护)

寄存器:与 ME_MCTL(模式控制寄存器,32 位保护,偏移 0x4,见表 77-5)匹配。

基地址:0xFFFB0000。

保护大小:32 位(所有四个字节均受保护)。

计算

正常地址:基数 + 偏移量 = 0xFFFB0000 + 0x4 = 0xFFFB0004

镜像地址(区域 3):基数 + 0x2000 + 偏移 = 0xFFFB0000 + 0x2000 + 0x4 = 0xFFFB2004

软锁定位地址(区域 4)

区域 4 中的偏移量:offset/4 = 0x4 / 4 = 0x1。

地址: base + 0x3800 + offset/4 = 0xFFFB0000 + 0x3800 + 0x1 = 0xFFFB3801。

对于 32 位寄存器,所有四个 SLB(SLB0—SLB3)控制四个字节(例如,0x4 到 0x7)。

软锁定

选项 1:写入镜像地址

向 0xFFFB2004 写入 32 位值(例如,0x80000000 可启动模式转换;有关有效值,请参阅 MC_ME 章节)。

这将更新 0xFFFB0004 的 ME_MCTL,并在 0xFFFB3801 的 SLBRn 寄存器中设置 SLB0-SLB3。

示例*(volatile uint32_t *)0xFFFB2004 = 0x80000000;

选项 2:直接写入 SLB

写入 0xFFFB3801,设置 SLB0-SLB3。

写入 0xFF(WE0—WE3=1,SLB0—SLB3=1)以锁定所有四个字节。

示例*(volatile uint8_t *)0xFFFB3801 = 0xFF;

解锁

写入 0xF0 至 0xFFFB3801(WE0-WE3=1,SLB0-SLB3=0)以清除 SLB0-SLB3,解锁寄存器。

示例*(volatile uint8_t *)0xFFFB3801 = 0xF0;

硬锁定

将 0x00000001 写入 0xFFB3FFC 以设置 GCR.HLB,锁定 SLB 直到 RESET。

示例*(volatile uint32_t *)0xFFFB3FFC = 0x00000001;

下面是一个寄存器设置示例,它的所有 4 个地址设置都是启用的,可以是 R/W。



mayank22_0-1752748012305.png


下面是一个寄存器设置示例,其中基址 + 偏移& 镜像地址已启用,可以设置为 R/W,其他地址不能设置。

这带来了一个严重的问题,因为 SLB 位确认了软锁定,而 GCR 位的设置则是为了实现硬锁定。

对于所有 MC_CGM 带帽寄存器,我都发现了同样的问题。

mayank22_1-1752748012405.png


这些不同行为的原因是什么?有些地址可以修改和变更,有些则被保留。

Re: Register Protection for MPC5746C

你好

如果我硬锁任何一个模块,所有其他模块都会自动被硬锁定,这在电源模式下会出现问题。因为我不希望 FXOSC/SXOSC 和 CMU 在这里被硬锁定。

寄存器保护采用 P 桥。

petervlna_0-1754636157965.pngpetervlna_0-1754636157965.png

PBRIDGE 上有 MC_CGM 模块:

petervlna_1-1754636218800.pngpetervlna_1-1754636218800.png

然后将外设映射到 MC_CGM 下。看来您需要使用 SLB 而不是 HLB 来解决这个问题。

因为 HLB 会锁定整个 MC_CGM。

顺祝商祺!

Peter

Re: Register Protection for MPC5746C

嗨,彼得 、

感谢您的帮助。我现在可以为所有模块配置软锁和监测 SLB 了。

我还有一个关于硬锁 GCR 位的问题。根据您的解释,所有 MCCGM 上限模块(即 CMU、FXOSC、SXOSC、PLDIG 和 MCCGM)应具有一个共同的基地址,即 0xFFFB0000。

现在根据第 77.1.1 节寄存器保护配置,N OTE讨论了电源模式下的操作。

mayank22_0-1754552830865.pngmayank22_0-1754552830865.png

正如我所说,在相同的基本地址下,如果我硬锁任何一个模块,所有其他模块都会自动被硬锁定,这在低电源模式下会出现问题。因为我不希望 FXOSC/SXOSC 和 CMU 在这里被硬锁定。

有没有办法解决这个问题?

感谢并致意

Re: Register Protection for MPC5746C

你好

以下是 SLB 的结果

CMU_LFREFR 32 - 地址基数和偏移量

CGM 模块的基数为 0xFFFB_0000

CMU 偏移为 0x140

petervlna_0-1753947014813.pngpetervlna_0-1753947014813.png

CGM LFREFR 从模块基数偏移 0x14C

petervlna_1-1753947034996.pngpetervlna_1-1753947034996.png

petervlna_4-1753947541951.pngpetervlna_4-1753947541951.png

我通过写入镜像为 CMU_LFREFR 设置了 SLB

petervlna_3-1753947365013.pngpetervlna_3-1753947365013.png

顺祝商祺!

Peter

Re: Register Protection for MPC5746C

嗨,这也不起作用。

CMU_LFREFR 32

偏移 0xCh

受保护的大小-16(字节 2 和 3)


0xFFFB0000,/* CMU----------*/


基地址 -0xFFFB000C

镜像地址 -0xFFFB200C

SLB - 0xFFFB3803

GCR - 0xFFFB3FFC

mayank22_0-1753789974341.pngmayank22_0-1753789974341.png


Re: Register Protection for MPC5746C

你好

查看简单测试:MC_CMU - CSR

petervlna_0-1753772600568.pngpetervlna_0-1753772600568.png

基地址 - 0xFFFB014C - 这是偏移地址。不是基地。

MC_CMU 模块的基数为 0xFFFB 0140。

镜像地址 -0xFFFB214C

即基座 + 偏移 + 镜像

SLB -0xFFFB3943

以参考手册中的整个 CGM 的地址为基准:

petervlna_1-1753772881109.pngpetervlna_1-1753772881109.png

所以计算结果是

0xFFFB0000 + 3800 + SLB 的位置

GCR - 0xFFFB413C

同上

0xFFFB0000+3FF0

顺祝商祺!

Peter



Re: Register Protection for MPC5746C

嗨,彼得,这里有一些 SLB 和 GCR 失效的示例。 请检查这些地址并确认它们是否显示不同的行为。如果不是,那么这些模块会有什么问题?

1.MC_CMU - 0xFFFB0140 - { MODULE_CMU, 0xC,REG_SIZE_16}, CMU_LFREFR

    1. 基地址 - 0xFFFB014C
    2. 镜像地址 -0xFFFB214C
    3. SLB -0xFFFB3943
    4. GCR - 0xFFFB413C

mayank22_0-1753700010986.pngmayank22_0-1753700010986.png

2.MC_CMU - 0xFFFB0140 { MODULE_CMU, 0x18,REG_SIZE_32}, CMU_MDR

    1. 基本地址 - 0xFFFB0158
    2. 镜像地址 - 0xFFFB2158
    3. SLB - 0xFFFB3946
    4. GCR - 0xFFFB413C

mayank22_1-1753700066515.pngmayank22_1-1753700066515.png

3.PLLDIG 0xFFFB0080 - PLLDIG_PLLCR { MODULE_PLLDIG, 0x20, REG_SIZE_16}, PLLDIG_PLLCR

    1. 基本地址 - 0xFFFB00A0
    2. 镜像地址 - 0xFFFB20A0
    3. SLB - 0xFFFB0F5D
    4. GCR - 0xFFFB407C

mayank22_4-1753700213295.pngmayank22_4-1753700213295.png


4.PLLDIG 0xFFFB0080 - { MODULE_PLLDIG, 0x28,REG_SIZE_32}. { MODULE_PLLDIG, 0x28,REG_SIZE_32}, PLLDIG_PLLDV

    1. 基本地址 - 0xFFFB00A8
    2. 镜像地址 - 0xFFFB20A8
    3. SLB - 0xFFFB388A
    4. GCR - 0xFFFB407C

mayank22_5-1753700236791.pngmayank22_5-1753700236791.png


5.PMCDIG 0xFFFA0400 - { MODULE_PMCDIG, 0x0,REG_SIZE_32}. { MODULE_PMCDIG, 0x0,REG_SIZE_32}、


  1. 基本地址 - 0xFFFA0400
  2. 镜像地址 - 0xFFFA2400
  3. SLB - 0xFFFA3C00
  4. GCR - 0xFFFA43FC

mayank22_6-1753700259740.pngmayank22_6-1753700259740.png

6.PMCDIG 0xFFFA0400 - { MODULE_PMCDIG, 0x10,REG_SIZE_32}.{ MODULE_PMCDIG, 0x10,REG_SIZE_32}、

    1. 基本地址 - 0xFFFA0410
    2. 镜像地址 - 0xFFFA2410
    3. SLB - 0xFFFA3C04
    4. GCR - 0xFFFA43FC

mayank22_7-1753700335502.pngmayank22_7-1753700335502.png


Re: Register Protection for MPC5746C

你好

我已经检查了 PREG_PROT,它的行为就像参考手册中描述的那样:

在 ME_CGM 寄存器 SC_DC0 上:

基数:0xFFFB0000 + 偏移 7E8

镜像0xFFFB07E8

= 基数 (0xFFFB0000) + 偏移 (7E8) + 镜像 (0x2000)

在示例中,我通过软锁锁定了 SC_DC0 形式的 ME_CGM 模块。

petervlna_0-1753172674705.pngpetervlna_0-1753172674705.png

具体情况如下:

petervlna_1-1753172729779.pngpetervlna_1-1753172729779.png

区域 4:为 1.5 KB,包含软锁位,区域 1 中每字节一位。与一个模块寄存器字相关的四个软锁位排列在存储器映射中的字节边界处。软锁定位寄存器可使用位掩码直接写入。

因此,必须将软锁定位的面积除以 8,才能看到相应的 SLB 设置。

基础(模块的)+ 3800 +(区域 1 的每字节一位)

petervlna_2-1753172994361.pngpetervlna_2-1753172994361.png

petervlna_3-1753173019294.pngpetervlna_3-1753173019294.png

对于硬锁位,整个模块只有一个。

区域 5 的大小为 512 字节,用于保存保护模式的配置位。每个模块都有一个配置硬锁位,可以防止对软锁位进行任何进一步的修改,并且只能在设置后通过系统 RESET 来清除。其他位如果被设置,将允许用户访问受保护的模块。

基数(模块) 0xFFFB0000 + 偏移 3FFC

因为 GCR 位于 5 号区域的末端。

petervlna_5-1753173243793.pngpetervlna_5-1753173243793.png

petervlna_4-1753173057363.pngpetervlna_4-1753173057363.png


顺祝商祺!

Peter

Re: Register Protection for MPC5746C

你好

我会进行测试,并尽快给您答复。

顺祝商祺!

Peter

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 11:51 PM
Updated by: