MPC5746R JTAGパスワード問題1:
以下のように関数 void debug_lock() で Jtag をロックしましたが、他の関数で JTAG のロックを解除するにはどうすればよいでしょうか?
問題2:
Lauterbach は sys.option.KEYCODE で MPC5746R を接続できますが、フラッシュをプログラムできません。誰か例を挙げてもらえますか?
void debug_lock()
{
/****************************/
/* プログラムパスワード */
/****************************/
/* JTAGパスワードをプログラムする */
flash_program(0x00400120, JTAG_PASSWORD_0, JTAG_PASSWORD_1);
flash_program(0x00400128, JTAG_PASSWORD_2, JTAG_PASSWORD_3);
flash_program(0x00400130, JTAG_PASSWORD_4, JTAG_PASSWORD_5);
flash_program(0x00400138, JTAG_PASSWORD_6, JTAG_PASSWORD_7);
/* プログラム PASS グループ 0 のパスワード */
flash_program(0x00400140, PASSWORD_PG0_0, PASSWORD_PG0_1);
flash_program(0x00400148, PASSWORD_PG0_2, PASSWORD_PG0_3);
flash_program(0x00400150, PASSWORD_PG0_4, PASSWORD_PG0_5);
flash_program(0x00400158, PASSWORD_PG0_6, PASSWORD_PG0_7);
/* プログラム PASS グループ 1 パスワード */
flash_program(0x00400160, PASSWORD_PG1_0, PASSWORD_PG1_1);
flash_program(0x00400168, PASSWORD_PG1_2, PASSWORD_PG1_3);
flash_program(0x00400170, PASSWORD_PG1_4, PASSWORD_PG1_5);
flash_program(0x00400178, PASSWORD_PG1_6, PASSWORD_PG1_7);
/* プログラム PASS グループ 2 パスワード */
flash_program(0x00400180, PASSWORD_PG2_0, PASSWORD_PG2_1);
flash_program(0x00400188, PASSWORD_PG2_2, PASSWORD_PG2_3);
flash_program(0x00400190, PASSWORD_PG2_4, PASSWORD_PG2_5);
flash_program(0x00400198, PASSWORD_PG2_6, PASSWORD_PG2_7);
/* プログラムPASSグループ3のパスワード */
flash_program(0x004001A0, PASSWORD_PG3_0, PASSWORD_PG3_1);
flash_program(0x004001A8, PASSWORD_PG3_2, PASSWORD_PG3_3);
flash_program(0x004001B0, PASSWORD_PG3_4, PASSWORD_PG3_5);
flash_program(0x004001B8, PASSWORD_PG3_6, PASSWORD_PG3_7);
/****************************/
/* プログラムパス DCF */
/****************************/
/* パスワードグループ 0 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100100); /* LOCK0_PG0 */
DCF_プログラム(0x00000000, 0x00100104); /* LOCK1_PG0 */
DCF_プログラム(0x00000000, 0x00100108); /* LOCK2_PG0 */
DCF_プログラム(0x40000000, 0x0010010C); /* LOCK3_PG0 [DBL=1] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100110); /* LOCK0_PG1 */
DCF_プログラム(0x00000000, 0x00100114); /* LOCK1_PG1 */
DCF_プログラム(0x00000000, 0x00100118); /* LOCK2_PG1 */
DCF_program(0x00000000, 0x0010011C); /* LOCK3_PG1, [DBL=0] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100120); /* LOCK0_PG2 */
DCF_プログラム(0x00000000, 0x00100124); /* LOCK1_PG2 */
DCF_プログラム(0x00000000, 0x00100128); /* LOCK2_PG2 */
DCF_program(0x00000000, 0x0010012C); /* LOCK3_PG2, [DBL=0] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100130); /* LOCK0_PG3 */
DCF_プログラム(0x00000000, 0x00100134); /* LOCK1_PG3 */
DCF_プログラム(0x00000000, 0x00100138); /* LOCK2_PG3 */
DCF_program(0x00000000, 0x0010013C); /* LOCK3_PG3, [DBL=0] */
/****************************/
/* プログラム検閲 DCF */
/****************************/
DCF_program(0x00000000, 0x001000B0); /* != 0x55AA で検閲が有効 */
/****************************/
/* プログラムのライフサイクル */
/****************************/
/* お客様への納品から OEM 生産までのライフサイクルを前進させる */
flash_program(0x00400218, 0x55AA50AF, 0x55AA50AF);/* CustomerDelを無効にする*/
flash_program(0x00400220, 0x55AA50AF, 0x55AA50AF);/* OEMProductionを検証する*/
}
Re: MPC5746R JTAG PASSWORDこんにちは、
スクリプトは消去を開始できません。これは通常、デバッガーのフラッシュ初期化が正しくないことが原因です。
flash.list をチェックして、ブロックが正しく初期化されているかどうか、また書き込みが保護されていないかどうかを確認します。
デバイスの消去には、Lauterbach に組み込まれているスクリプトを使用することもCANます。TAB ドロップダウン メニュー MPC5xxx で見つかります。
ただし、一般的にサードパーティ ツールの使用に関するCASEの場合は、Lauterbach サポートに連絡することをお勧めします。
添付されているのは、MPC5746R デバイスのフラッシュ消去用の私の簡単なスクリプトです。
よろしくお願いいたします。
ピーター
Re: MPC5746R JTAG PASSWORDこのスクリプトを実行すると、Lauterbachは「FLASH消去エラー」を表示します。

関数void debug_lock():
void debug_lock()
{
/****************************/
/* プログラムパスワード */
/****************************/
/* JTAGパスワードをプログラムする */
flash_program(0x00400120, JTAG_PASSWORD_0, JTAG_PASSWORD_1);
flash_program(0x00400128, JTAG_PASSWORD_2, JTAG_PASSWORD_3);
flash_program(0x00400130, JTAG_PASSWORD_4, JTAG_PASSWORD_5);
flash_program(0x00400138, JTAG_PASSWORD_6, JTAG_PASSWORD_7);
/* プログラム PASS グループ 0 のパスワード */
flash_program(0x00400140, PASSWORD_PG0_0, PASSWORD_PG0_1);
flash_program(0x00400148, PASSWORD_PG0_2, PASSWORD_PG0_3);
flash_program(0x00400150, PASSWORD_PG0_4, PASSWORD_PG0_5);
flash_program(0x00400158, PASSWORD_PG0_6, PASSWORD_PG0_7);
/* プログラム PASS グループ 1 パスワード */
flash_program(0x00400160, PASSWORD_PG1_0, PASSWORD_PG1_1);
flash_program(0x00400168, PASSWORD_PG1_2, PASSWORD_PG1_3);
flash_program(0x00400170, PASSWORD_PG1_4, PASSWORD_PG1_5);
flash_program(0x00400178, PASSWORD_PG1_6, PASSWORD_PG1_7);
/* プログラム PASS グループ 2 パスワード */
flash_program(0x00400180, PASSWORD_PG2_0, PASSWORD_PG2_1);
flash_program(0x00400188, PASSWORD_PG2_2, PASSWORD_PG2_3);
flash_program(0x00400190, PASSWORD_PG2_4, PASSWORD_PG2_5);
flash_program(0x00400198, PASSWORD_PG2_6, PASSWORD_PG2_7);
/* プログラムPASSグループ3のパスワード */
flash_program(0x004001A0, PASSWORD_PG3_0, PASSWORD_PG3_1);
flash_program(0x004001A8, PASSWORD_PG3_2, PASSWORD_PG3_3);
flash_program(0x004001B0, PASSWORD_PG3_4, PASSWORD_PG3_5);
flash_program(0x004001B8, PASSWORD_PG3_6, PASSWORD_PG3_7);
/****************************/
/* プログラムパス DCF */
/****************************/
/* パスワードグループ 0 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100100); /* LOCK0_PG0 */
DCF_プログラム(0x00000000, 0x00100104); /* LOCK1_PG0 */
DCF_プログラム(0x00000000, 0x00100108); /* LOCK2_PG0 */
DCF_プログラム(0x40000000, 0x0010010C); /* LOCK3_PG0 [DBL=1] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100110); /* LOCK0_PG1 */
DCF_プログラム(0x00000000, 0x00100114); /* LOCK1_PG1 */
DCF_プログラム(0x00000000, 0x00100118); /* LOCK2_PG1 */
DCF_program(0x00000000, 0x0010011C); /* LOCK3_PG1, [DBL=0] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100120); /* LOCK0_PG2 */
DCF_プログラム(0x00000000, 0x00100124); /* LOCK1_PG2 */
DCF_プログラム(0x00000000, 0x00100128); /* LOCK2_PG2 */
DCF_program(0x00000000, 0x0010012C); /* LOCK3_PG2, [DBL=0] */
/* パスワードグループ1 - プログラムロック */
DCF_プログラム(0x00000000, 0x00100130); /* LOCK0_PG3 */
DCF_プログラム(0x00000000, 0x00100134); /* LOCK1_PG3 */
DCF_プログラム(0x00000000, 0x00100138); /* LOCK2_PG3 */
DCF_program(0x00000000, 0x0010013C); /* LOCK3_PG3, [DBL=0] */
/****************************/
/* プログラム検閲 DCF */
/****************************/
DCF_program(0x00000000, 0x001000B0); /* != 0x55AA で検閲が有効 */
/****************************/
/* プログラムのライフサイクル */
/****************************/
/* お客様への納品から OEM 生産までのライフサイクルを前進させる */
flash_program(0x00400218, 0x55AA50AF, 0x55AA50AF);/* CustomerDelを無効にする*/
flash_program(0x00400220, 0x55AA50AF, 0x55AA50AF);/* OEMProductionを検証する*/
}
Re: MPC5746R JTAG PASSWORDこんにちは、
問題1:
以下のように関数 void debug_lock() で Jtag をロックしましたが、他の関数で JTAG のロックを解除するにはどうすればよいでしょうか?
debug_lock() が何であるかはわかりませんが、デバイスの検閲を解除するには、検閲 DCF に 0x55AA の DCF レコードを追加するだけです。


問題2:
Lauterbach は sys.option.KEYCODE で MPC5746R を接続できますが、フラッシュをプログラムできません。誰か例を挙げてもらえますか?
うーん、これは奇妙だ。プログラミング スクリプトでリセットを実行していますか?一部のデバイスでは、リセットを実行するとキーが失われるという問題が発生しました。
このスクリプトを試してください。リセットを削除しました。
検閲がどのように機能するかについては、PASS AN を参照してください。このデバイスでも同様です。
https://www.nxp.com/docs/en/application-note/AN12092.pdf
よろしくお願いいたします。
ピーター