2135716_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2135716_ja-JP

2135716_ja-JP

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 ビット保護、表 77-5 に従ってオフセット 0x4) と一致します。

ベースアドレス: 0xFFFB0000。

保護サイズ: 32 ビット (4 バイトすべてが保護されます)。

計算

通常のアドレス:ベース + オフセット = 0xFFFB0000 + 0x4 = 0xFFFB0004

ミラーアドレス(エリア3) :ベース + 0x2000 + オフセット = 0xFFFB0000 + 0x2000 + 0x4 = 0xFFFB2004

ソフトロックビットアドレス(エリア4) :

エリア 4 のオフセット: offset/4 = 0x4 / 4 = 0x1。

アドレス: ベース + 0x3800 + オフセット/4 = 0xFFFB0000 + 0x3800 + 0x1 = 0xFFFB3801。

32 ビット レジスタの場合、4 つの SLB (SLB0 ~ SLB3) すべてが 4 つのバイト (たとえば、0x4 ~ 0x7) を制御します。

ソフトロック

オプション 1: ミラー アドレスに書き込む:

0xFFFB2004 に 32 ビットの値を書き込みます (例: モード遷移を開始するには 0x80000000。有効な値については MC_ME の章を参照してください)。

これにより、0xFFFB0004 の ME_MCTL が更新され、0xFFFB3801 の SLBRn レジスタの SLB0 ~ SLB3 が設定されます。

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

オプション2: 直接SLB書き込み:

SLB0~SLB3を設定するには、0xFFFB3801に書き込みます。

4バイトすべてをロックするには、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 を 0xFFFB3FFC に書き込んで GCR.HLB を設定し、リセットされるまで SLB をロックします。

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

以下は、4 つのアドレス セットすべてが有効化され、CAN R/W なレジスタ セットの例です。



mayank22_0-1752748012305.png


以下は、ベース + オフセットおよびミラー アドレスが有効になっていて R/W がCANで、他のアドレスは設定できないレジスタ セットの例です。

SLB ビットはソフト ロックを確認し、GCR ビットはハード ロックを実装するように設定されているため、これは深刻な問題を引き起こします。

すべての MC_CGM キャップ レジスタで同じ問題が見つかります。

mayank22_1-1752748012405.png


これらの異なる動作の理由は何でしょうか。一部のアドレスは変更可能ですが、その他のアドレスは予約されています。

Re: Register Protection for MPC5746C

こんにちは、

いずれかのモジュールをハードロックすると、他のすべてのモジュールも自動的にハードロックされ、低電力モードで問題が発生します。FXOSC/SXOSC と CMU をここでハードロックしたくないためです。

レジスタ保護はPbridgeに適用されます。

petervlna_0-1754636157965.png

PBRIDGE には MC_CGM モジュールがあります。

petervlna_1-1754636218800.png

これにより、ペリフェラルが MC_CGM の下にマップされます。これを解決するには、HLB ではなく SLB を使用する必要があるようです。

HLB は MC_CGM 全体をロックします。

よろしくお願いいたします。

ピーター

Re: Register Protection for MPC5746C

こんにちは、ピーターさん。

ご協力ありがとうございます。すべてのモジュールに対してソフト ロックと監視 SLB を設定できるようになりました。

ハード ロック GCR ビットに関してもう 1 つ質問があります。あなたの説明によれば、CMU、FXOSC、SXOSC、PLLDIG、MCCGM のすべての MCCGM キャップ モジュールには、1 つの共通ベース アドレス (0xFFFB0000) があるはずです。

77.1.1項によればレジスタ保護構成、注記では低電力モードでの動作について説明します。

mayank22_0-1754552830865.png

前述したように、ベース アドレスが同じ場合、いずれかのモジュールをハード ロックすると、他のすべてのモジュールも自動的にハード ロックされ、低電力モードで問題が発生します。FXOSC/SXOSC と CMU をここでハードロックしたくないためです。

この問題を回避する方法はありますか。

ありがとうございます。よろしくお願いします。

Re: Register Protection for MPC5746C

こんにちは、

SLBの結果は次のとおりです。

CMU_LFREFR 32 - アドレスのベースとオフセット

CGMモジュールのベースは0xFFFB_0000です

CMUオフセットは0x140です

petervlna_0-1753947014813.png

CGM LFREFRオフセットはモジュールベースから0x14Cです

petervlna_1-1753947034996.png

petervlna_4-1753947541951.png

ミラーへの書き込みを介してCMU_LFREFRのSLBを設定しました

petervlna_3-1753947365013.png

よろしくお願いいたします。

ピーター

Re: Register Protection for MPC5746C

こんにちは。これも機能していません。

CMU_LFREFR 32

オフセット 0xCh

保護サイズ - 16 (バイト 2 と 3)


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


ベースアドレス -0xFFFB000C

ミラーアドレス -0xFFFB200C

SLB - 0xFFFB3803

GCR - 0xFFFB3FFC

mayank22_0-1753789974341.png


Re: Register Protection for MPC5746C

こんにちは、

簡単なテストを見る: MC_CMU - CSR

petervlna_0-1753772600568.png

ベース アドレス - 0xFFFB014C - これはオフセット アドレスです。基地ではありません。

MC_CMU モジュールのベースは 0xFFFB 0140 です。

ミラーアドレス -0xFFFB214C

ベース+オフセット+ミラー

SLB -0xFFFB3943

参照マニュアルに記載されている CGM 全体のベース アドレスを取得します。

petervlna_1-1753772881109.png

SO計算は次のようになります。

0xFFFB0000 + 3800 + SLBの位置

GCR - 0xFFFB413C

同上

0xFFFB0000+3FF0

よろしくお願いいたします。

ピーター



Re: Register Protection for MPC5746C

こんにちは、ピーター。SLB と GCR が動作していないサンプルがいくつかあります。これらのアドレスをチェックして、異なる動作が表示されるかどうかをCAN確認してください。そうでない場合、これらのモジュールに何が問題があるのでしょうか?

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.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.png

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

    1. ベースアドレス - 0xFFFB00A0
    2. ミラーアドレス - 0xFFFB20A0
    3. SLB - 0xFFFB0F5D
    4. GCR - 0xFFFB407C

mayank22_4-1753700213295.png


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

    1. ベースアドレス - 0xFFFB00A8
    2. ミラーアドレス - 0xFFFB20A8
    3. SLB - 0xFFFB388A
    4. GCR - 0xFFFB407C

mayank22_5-1753700236791.png


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


  1. ベースアドレス - 0xFFFA0400
  2. ミラーアドレス - 0xFFFA2400
  3. SLB - 0xFFFA3C00
  4. GCR - 0xFFFA43FC

mayank22_6-1753700259740.png

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

    1. ベースアドレス - 0xFFFA0410
    2. ミラーアドレス - 0xFFFA2410
    3. SLB - 0xFFFA3C04
    4. GCR - 0xFFFA43FC

mayank22_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.png

内訳は次のとおりです。

petervlna_1-1753172729779.png

エリア 4: 1.5 KB で、エリア 1 のバイトごとに 1 ビットのソフト ロック ビットを保持します。1 つのモジュール レジスタ ワードに関連付けられた 4 つのソフト ロック ビットは、メモリ マップ内のバイト境界に配置されます。ソフト ロック ビット レジスタは、ビット マスクを使用して直接書き込むCAN。

SO、対応する SLB 設定を確認するには、ソフト ロック ビットの領域を 8 で割る必要があります。

ベース(モジュール)+ 3800 + (エリア1のバイトあたり1ビット)

petervlna_2-1753172994361.png

petervlna_3-1753173019294.png

ハードロック ビットの場合は、モジュール全体で 1 つになります。

エリア 5 は 512 バイトの大きさで、保護モードの構成ビットを保持します。モジュールごとに 1 つの構成ハード ロック ビットがあり、これによりソフト ロック ビットへのそれ以上の変更がすべて防止され、一度設定されるとシステム リセットによってのみクリアCANます。他のビットが設定されている場合は、保護されたモジュールへのユーザー アクセスが許可されます。

ベース(モジュールの)0xFFFB0000 + オフセット 3FFC

GCRはエリア5の端にあります。

petervlna_5-1753173243793.png

petervlna_4-1753173057363.png


よろしくお願いいたします。

ピーター

Re: Register Protection for MPC5746C

こんにちは、

テストしてできるだけ早くご連絡いたします。

よろしくお願いいたします。

ピーター

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-21-2025 11:49 PM
更新者: