Howto

Armadillo-IoT G4/X2 に搭載される EdgeLock SE050 を有効にする

Howto で出来ること

Armadillo に搭載されるNXP Semiconductors 製 EdgeLock SE050 (以下「EdgeLock SE050」) にアクセスするために Deep Power-down モードを解除する。

Armadillo-IoT G4をベースにした内容になっていますが、Armadillo-X2でも動作確認しています。

Howto の概要

GPIO を制御して EdgeLock SE050 の Deep Power-down モードを解除します。

これまでの(2022/7/19 以前)の Howto では sysfs を利用した手順を紹介していました。以前から sysfs を利用した方法は非推奨であり、libgpiod が導入されています。libgpiod では close 後の free が保証され、新しい機能(イベントポーリング、複数の値との読み書きなど)が追加されています。
実際には、問題なく稼働しているデバイスのコードを変えるまでは必要ありません。新規に実装する場合には libgpiod の利用を推奨します。

EdgeLock SE050

EdgeLock SE050 は IoT アプリケーション向けのセキュアエレメントです。様々なアルゴリズムに対応した暗号エンジン、セキュアストレージを搭載します。内部処理は秘密鍵を露出させることなくセキュアに暗号処理を行うことができます。外部インターフェースは I2C を採用して GlobalPlatform が規定する Secure Channel Protocol 03 に準拠し、バスレベル暗号化 (AES)、ホストとカードの相互認証 (CMAC ベース) を行うことも可能です。また、EdgeLock SE050 はターンキーソリューションとして利用を開始してすぐにクラウドサービスなど PKI を基にしたサービスに接続することができます。チップ固有の X.509 証明書などが事前にプロビジョニングされた状態で出荷されます。

EdgeLock SE050 を有効にする

Armadillo は消費電力の削減のため EdgeLock SE050 を Deep Power-down モードに設定してパワーゲーティングしている。Deep Power-down モードを解除して EdgeLock SE050 を利用するためには、i.MX 8M Plus に接続されている EdgeLock SE050 の ENA ピンをアサートする必要があります。

EdgeLock SE050 ena pin

Product SE050 PIN name SoC PAD name initial SoC port status
Armadillo-IoT G4 ENA GPIO1_IO12 GPIO input

Armadillo-IoT G4 の例として、gpioset コマンドを利用して GPIO1_IO12 を出力ポートに変更して、出力を high にします。

[armadillo ~]# gpioset gpiochip0 12=1

EdgeLock SE050 の動作を確認する

以下のコマンドで I2C 接続が有効であるかどうかを確認できます。

[armadillo ~]# i2cdetect -y 2

48が表示されればSE050が認識されています。

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --