Howto

SE050 ミドルウェア (Plug&Trust MW) ビルド手順

本 Howto では、 Armadillo IoT ゲートウェイ G3M1-M モデルに搭載されている、
セキュアエレメント SE050 用ミドルウェアを
Armadillo IoT ゲートウェイ G3M1 上で ビルドする方法を紹介します。

SE050 の詳細は、 NXP 社のサイト を参照ください。

コマンド操作は全て Armadillo IoT ゲートウェイ G3M1 上で行います。

OS を buster(debian 10) へバージョンアップ

セキュアエレメント SE050 用ミドルウェアをビルド・動作させるには、
Open SSL バージョン 1.1.1 が必要となりますので、
Armadillo IoT ゲートウェイ G3M1-M モデルの OS を buster にバージョンアップします。

  • 2020 年 10 月 1 日現在、 buster(debian 10) に関しては、アットマークテクノ提供の独自パッケージ、
    ネットワーク通信(3G/LTE、無線LAN)の動作確認を行っておりませんので、
    SE050 検証のみでのご利用をお願いします。
  • バックアップを取得した上での動作確認をお願いします。

/etc/apt/sources.list を以下の通り編集します。

# vi /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ buster main non-free contrib
deb-src http://ftp.jp.debian.org/debian/ buster main non-free contrib

deb http://security.debian.org/ buster/updates main non-free contrib
deb-src http://security.debian.org/ buster/updates main non-free contrib

deb http://download.atmark-techno.com/debian/ stretch main contrib non-free

パッケージの更新を行います。

# apt update
# apt upgrade 

OS のアップグレードを実施します。

# apt dist-upgrade

再起動します。

# reboot

再起動時のコンソールログで、buster がインストールされていることを確認します。
以下のように表示されていれば buster がインストールされています。

Welcome to Debian GNU/Linux 10 (buster)!

ファイルのダウンロード

  1. NXP 社のサイト の "TOOL & SOFTWARE" タブをクリックし、
    "Embedded Software" → "BSP, Drivers and Middleware" 内
    "Plug&Trust MW (02.16.01)" (バージョンは2020年9月23日現在)を
    クリックし SE050-PLUG-TRUST-MW.zip をダウンロードしてください。
    ※ 事前にユーザー登録が必要です。
  2. ダウンロードしたファイルを Armadillo 上で解凍してください。
    この Howto では、root ユーザーが /root/ に解凍した前提で説明を記載します。

ビルド

以下に Armadillo IoT ゲートウェイ G3M1 上でのビルド手順を示します。

必要なパッケージのインストール

ビルドには、cmake と libssl-dev が必要ですのでインストールします。

# apt install cmake
# apt install libssl-dev

一部コードを変更

simw-top/scripts/create_cmake_projects.py を一部変更します。
Armadillo 上ですと、 Python の platform.node() の戻り値が "armadillo" になりますので、それに対応します。

284     @classmethod
285     def imx_native_compilation(cls):
286         if 'imx6' in platform.node():
287             return True
288         if 'imx8' in platform.node():
289             return True
290 +       if 'armadillo' in platform.node():
291 +           return True
292         return False

ビルドの実施

ビルドを実行します。

# cd ~/simw-top
root@armadillo:~/simw-top# python scripts/create_cmake_projects.py
root@armadillo:~/simw-top# cd ../simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# cmake --build .

動作確認

SE050 へアクセスするには GPIO 73 を high にする必要があります。
以下にスクリプトの例を記載しますのでご利用ください。

#!/bin/bash

GPIO_EXPORT="/sys/class/gpio/export"
RESET_GPIO_NUM="73"
RESET_GPIO="/sys/class/gpio/gpio"$RESET_GPIO_NUM"/direction"

if [ ! -e $RESET_GPIO ]; then
        echo $RESET_GPIO_NUM > $GPIO_EXPORT
fi

echo high > $RESET_GPIO
sleep 0.3
i2cdetect -y 3
if [ $? -ne 0 ]; then
        echo "not detect slave addr"
        echo "NG"
fi

サンプル se05x_Minimal を実行します。

# cd ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go
root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# bin/se05x_Minimal /dev/i2c-3:0x48

以下のような実行結果が表示されれば成功です。

App   :INFO :PlugAndTrust_v02.16.01_20200818
App   :INFO :Running bin/se05x_Minimal
App   :INFO :Using PortName='/dev/i2c-3:0x48' (CLI)
sss   :INFO :atr (Len=35)
      00 A0 00 00    03 96 04 03    E8 00 FE 02    0B 03 E8 08
      01 00 00 00    00 64 00 00    0A 4A 43 4F    50 34 20 41
      54 50 4F
sss   :WARN :Communication channel is Plain.
sss   :WARN :!!!Not recommended for production use.!!!
App   :INFO :mem=32196
App   :INFO :se05x_Minimal Example Success !!!...
App   :INFO :ex_sss Finished

これ以外にも、 ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/bin/
には様々なデモが用意されています。
~/simw-top/doc/demos/index.html に説明がありますので、参考にしてください。