Howto で出来ること
Armadillo に搭載されるNXP Semiconductors 製 EdgeLock SE050 (以下「EdgeLock SE050」) にアクセスするために Deep Power-down モードを解除する。
Armadillo-IoT G4をベースにした内容になっていますが、Armadillo-X2でも動作確認しています。
Howto の概要
GPIO を制御して EdgeLock SE050 の Deep Power-down モードを解除します。
実際には、問題なく稼働しているデバイスのコードを変えるまでは必要ありません。新規に実装する場合には 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: -- -- -- -- -- -- -- --