Armadilloフォーラム

デバッグ機能(JTAG と SD ブート)の閉じ方について

culaney

2024年12月17日 11時38分

==========
製品型番:AGX4500
Debian/ABOSバージョン:3.20.3-at.5
カーネルバージョン:Linux armadillo 5.10.230-0-at #1-Alpine SMP PREEMPT
==========

今,量産品において,デバッグ機能を閉じる作業を行なっております.
『JTAG と SD ブートを無効化する』作業を行いたく,以下の公式ドキュメントを参照しております.
(新版のドキュメントには,旧版の右下のリンクよりアクセスしました.)

・旧版『市場出荷に向けてデバッグ機能を閉じる』,https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-sec…
・新版『量産に向けてデバッグ機能を閉じる』,https://manual.atmark-techno.com/armadillo-x2/armadillo-base-os-securit…

旧版の資料では, JTAG と SD ブートを無効化する設定は efuse のため,一度書き込むとそのデバイスの設定を二度と戻せない旨の記述がありました.
一方で,新版の資料では, efuse という記述はなく設定を戻せなくなる旨の記述もなかったように思います.

新版の資料に記載されているコマンドで無効化すれば,その後に再度有効化できるという理解で合っておりますか?
同じ個体に対して,動作確認を何度も行えるのか,それとも一度しか行えないのか懸念しております.

また,量産イメージを SWUpdate で更新できるようにしているのですが, .desc ファイルを作成することでデバッグ機能(JTAG と SD ブート)の無効化を実現することはできますか?

コメント

太田です。

> 新版の資料に記載されているコマンドで無効化すれば,その後に再度有効化できるという理解で合っておりますか?

申し訳ありません。efuseという記載はありませんが、新版のマニュアルの方法も同様にefuseに書き込むことでJTAGとSDブートを無効化しています。
そのため、再度有効化することはできません。

参考までに、abos-ctrl installer-setting による JTAG や SDブート無効化方法について簡単に説明します。

====(今回やりたいこととは直接には関係ないので呼び飛ばして頂いても構いません)
新版での記述では、量産製造時を想定しています。
量産製造時では、開発用Armadilloの環境をインストールディスクイメージ(SDカード)にコピー(abos-ctrl make-installer)して、そのイメージを量産用ArmadilloでSDブートすることで環境を複製します。

abos-ctrl installer-setting は開発用のArmadilloで実行することを想定しております。
このコマンドは量産用ArmadilloでインストールディスクイメージをSDブートする時に、JTAGやSDブートを無効化するかどうかの設定値を変更するだけです。
そのため、abos-ctrl installer-setting ではefuseが焼かれることはありません。

実際にefuseが焼かれるの量産用Armadilloであり、JTAGやSDブートを無効化するように設定したインストールディスクイメージを量産用ArmadilloでSDブートしたタイミングになります。
====

> また,量産イメージを SWUpdate で更新できるようにしているのですが, .desc ファイルを作成することでデバッグ機能(JTAG と SD ブート)の無効化を実現することはできますか?

実現できます。
マニュアルでは、量産製造時に行う方法は記載しておりますが、すでに量産したものに対してのJTAGとSDブートを無効化する方法は記載しておりませんでした。
Armadillo Base OS を最新にアップデートした後、以下を.descファイルに記述することでJTAGとSDブートを無効化できるはずです。

swdesc_command "device-info --yes-i-know-what-i-am-doing --write-fuse jtag" ①
swdesc_command "device-info --yes-i-know-what-i-am-doing --write-fuse sd_boot" ②
swdesc_command "device-info --yes-i-know-what-i-am-doing --write-fuse lock" ③

それぞれ
①:JTAGを無効化するefuseに書き込む
②:SDブートを無効化するefuseに書き込む
③:JTAG及びSDブートを無効化するefuseを含む領域を書き込み不可にする
処理を行います。

このコマンドを実行すると再度有効化することはできませんのでご注意ください。

また、ちゃんと無効化されたかどうかを確認するのであれば以下のコマンドをArmadillo上で実行することで確認できます。

armadillo:~# device-info --fuse-status jtag
jtag disabled
armadillo:~# device-info --fuse-status sd_boot
sd_boot disabled
armadillo:~# device-info --fuse-status lock
boot_cfg_lock write protected

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

丁寧に回答いただき,誠にありがとうございます.

背景情報なども記載いただき,理解が明瞭になりました.

頂戴した情報をもとに,量産イメージの作成を試してみます.
もし,その過程で疑問点がございましたら,相談させていただけますと幸いです.

以上で,本件は解決できました.
ありがとうございます.