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
よろしくお願いいたします。
ピーター
查看全文