導入。
OEMは機能テストや製品製造中にもヒューズ値にアクセスする必要があります。イーサネットMACアドレスの修正、ブートモードの修正、セキュアブートの有効化などを行います。
すべての i.MX プロセッサで有効になっているツールがあり、U-boot で実行され、コマンドは「=> fuse
この記事では、NXP BSP対応関数を使用してプロセッサのヒューズにアクセスするC言語で書かれたファイルをダウンロードします。
i.MX 9 シリーズは EdgeLock Secure Enclave (ELE) を介してヒューズを管理しており、このツールは他のプロセッサにも簡単に適応できますが、今回のリリースはi.MX91とi.MX93に重点を置いています。
1. ハードウェアのセットアップ。
FRDM-i.MX91 。電源はP1に接続し、USB Type-CデバッグケーブルはP16に接続します。
ソースコードのコピーのため、イーサネットケーブルでネットワークルーターとP4端末を接続しました。
SD/eMMCにはYocto Linux Factory LF_6.12.49が書き込まれています。必要に応じて、USB Type-Cホストケーブルを使用してJ31に書き込むことができます。
2. ドキュメントの設定。
i.MX 91 ドキュメントからリファレンスマニュアルをダウンロードしてください。添付ファイル i.MX91_Fusemap.xlsx が含まれています。
3. ソフトウェアのセットアップ。
ダウンロードとビルドの手順。
user@host:~$ scp fuse_test.c root@:~ root@imx91evk:~# gcc -Wall fuse_test.c -o fuse_test
ツールの機能。
4.実演。
ヒューズからデバイス固有ID [31:0]を読み取ります。
a. UIDヒューズ参照値を取得するためにU-bootで停止します。
u-boot=> fuse read 1 7
Reading bank 1:
Word 0x00000007: 03fc7ef1
u-boot=> boot
b. 読み取り操作用のツールを実行します。
root@imx91evk:~# ./fuse_test read 1 7
ret: 0
fd : 3
READ Bank: 1, Word: 7, Offset: 15
SUCCESS: pread operation
resp_len = 4
resp_buf[0] = |f1|
resp_buf[1] = |7e|
resp_buf[2] = |fc|
resp_buf[3] = |3|
c. 書き込み操作用のツールを実行します。
この記事では、バンク47にあるOEM汎用ヒューズ2 GPR2_CFG0への簡単な書き込み、ワード376について説明します。
root@imx91evk:~# ./fuse_test read 47 0
ret: 0
fd : 3
READ Bank: 47, Word: 0, Offset: 376
SUCCESS: pread operation
resp_len = 4
resp_buf[0] = |0|
resp_buf[1] = |0|
resp_buf[2] = |0|
resp_buf[3] = |0|
このヒューズは、Packed_FuseIndex 291 にある汎用 2 ヒューズ ロック GPR2_LOCK [2:0] によって保護されています。AN14954 のセクション3.2 ELE-AP を搭載したデバイスからワードビットを計算します。
root@imx91evk:~# ./fuse_test read 1 1
ret: 0
fd : 3
READ Bank: 1, Word: 1, Offset: 9
SUCCESS: pread operation
resp_len = 4
resp_buf[0] = |93|
resp_buf[1] = |34|
resp_buf[2] = |0|
resp_buf[3] = |0|
このように、GPR2_LOCK [2:0] = 010 は、オーバーライド保護状態であることを意味し、ヒューズを焼却することができます。
root@imx91evk:~# ./fuse_test write 47 0
ret: 0
fd : 3
READ Bank: 47, Word: 0, Offset: 376
SUCCESS: pread operation
resp_len = 4
resp_buf[0] = |5|
resp_buf[1] = |0|
resp_buf[2] = |0|
resp_buf[3] = |0|
INFO: Fuse previous valueWRITE Bank: 47, Word: 0, Offset: 376
Enter fuse value (e.g. 0xAA1234BB): 0x4A4F5345
You entered: 0x4A4F5345 (1246712645 decimal)
SUCCESS: pwrite operation
INFO: Please reset the device for fuse read confirmation
0x4A、0x4F、0x53、0x45は、Josephの最初の4文字を大文字にしたものです。
u-boot=> fuse read 47 0
Reading bank 47:
Word 0x00000000: 4a4f5345
結論。
このツールは、i.MX 93およびi.MX 91のヒューズの読み取りと書き込みが可能で、i.MX 9シリーズにも対応可能です。
iMX95の最新ELEファームウェアリリースでは、ユーザー空間からのSRK値のプログラミングはサポートされていません。この機能を有効にするためのランタイムファームウェアは、次回のリリースで提供される予定です。
このツールは、ソフトウェアおよびサポートチームによって現状のまま提供されており、LF6.12.49 で開発されました。BSD-3ライセンスに基づきます。銀行口座と単語をご確認ください。必要に応じてサポートチケットを作成してください。この投稿は誤った使用方法について責任を負いません。
FRDM-i.MX91でテスト済み
C言語で記述
LF-6.12.49