2338806_ja-JP

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

2338806_ja-JP

2338806_ja-JP

i.MX 9シリーズ向けLinuxユーザー空間におけるFuse読み書きツール

導入。

OEMは機能テストや製品製造中にもヒューズ値にアクセスする必要があります。イーサネットMACアドレスの修正、ブートモードの修正、セキュアブートの有効化などを行います。

すべての i.MX プロセッサで有効になっているツールがあり、U-boot で実行され、コマンドは「=> fuse 」です。一部のお客様は Linux ユーザー空間でヒューズの書き込みと読み取りを行う必要があり、ここで異なるプロセッサが OTP 構造を持ちます。

この記事では、NXP BSP対応関数を使用してプロセッサのヒューズにアクセスするC言語で書かれたファイルをダウンロードします。

i.MX 9 シリーズは EdgeLock Secure Enclave (ELE) を介してヒューズを管理しており、このツールは他のプロセッサにも簡単に適応できますが、今回のリリースはi.MX91i.MX93に重点を置いています。

1. ハードウェアのセットアップ。

FRDM-i.MX91 。電源はP1に接続し、USB Type-CデバッグケーブルはP16に接続します。

ソースコードのコピーのため、イーサネットケーブルでネットワークルーターとP4端末を接続しました。

SD/eMMCにはYocto Linux Factory LF_6.12.49が書き込まれています。必要に応じて、USB Type-Cホストケーブルを使用してJ31に書き込むことができます。

image-1.jpg

2. ドキュメントの設定。

i.MX 91 ドキュメントからリファレンスマニュアルをダウンロードしてください。添付ファイル i.MX91_Fusemap.xlsx が含まれています。

Screenshot 2026-03-24 151748.png

3. ソフトウェアのセットアップ。

ダウンロードとビルドの手順。

user@host:~$ scp fuse_test.c root@:~
root@imx91evk:~# gcc -Wall fuse_test.c -o fuse_test

ツールの機能。

  • NXP BSPのpread関数とpwrite関数を使用します。
  • Bank * 8 + Word の式に基づくと、fusemap 添付ファイルを使用している場合、Word は Word % 8 として定義されます。
  • i.MX93/i.MX91のfusemapに従って、バンクおよびワードのインデックスの最小値と最大値を定義します。
  • 顧客は、fuse_test read|write という 4 つの引数を明示的に入力する必要があります。

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

Tags (1)
No ratings
Version history
Last update:
yesterday
Updated by: