これは、Arduino用PN7150 NFCコントローラーSBCキット(OM5578 / PN7150ARD)と、i.MX6SXを使用し、Arduinoピン互換のUDOO NEOボードを使用して、簡単なNFCデモアプリをセットアップして実行するためのステップバイステップガイドです。
1. 応募資格
- UDOO NEOボード。このドキュメントでは UDOO NEO フル ボードについて言及していますが、適切なデバイス ツリーが各ボードで使用されている限り、手順はすべての UDOO Neo ボードで同じです。このボードの詳細については、公式サイト(http://www.udoo.org/)をご覧ください。
UDOOネオフルボード
- PN7150 Arduino用NFCコントローラーSBCキット(OM5578/PN7150ARD)は、下の画像に示されています。または、Arduino用のPN7120 NFCコントローラーSBCキット(OM5577 / PN7120ARD)を使用することもできます。

PN7150 Arduino用NFCコントローラーSBCキットをUDOO Neoに取り付け
OM5578ボードの詳細については、次のリンクから入手できるユーザーマニュアル(Doc ID UM10935)を参照してください。
http://www.nxp.com/documents/user_manual/UM10935.pdf
このデモボードと他のPN7150デモボードに関する追加のドキュメントと情報は、以下のリンクからご覧いただけます。
OM5577ボードの詳細については、次のリンクから入手できるユーザーマニュアル(Doc ID UM10878)を参照してください。
http://www.nxp.com/documents/user_manual/UM10878.pdf
OM5577ボードのその他のリソースについては、次のリンクを参照してください。
PN7120 NFC Controller SBC Kit|NXP
- Ubuntu 12.04 以降 (14.04 を推奨) を搭載したホスト コンピューター。
- ホストにインストールされている i.MX6SX の L3.14.28 BSP リリース。この BSP のダウンロード方法とセットアップ方法に関するドキュメントは、次のリンクにあります。
2. NXP BSPリリースとツールチェーンの設定
L3.14.28 BSP リリースに含まれている Yocto ユーザーズ ガイドの指示に従って、i.MX6SX (MACHINE= imx6sxsabresd) のイメージをセットアップし、ビルドします。fsl-image-gui イメージとフレームバッファ (fb) バックエンドを使用します。他のイメージを使用することもできますが、core-image-minimal イメージには、NFC デモ アプリに必要な libstdc++.so.6 ライブラリが含まれていないことに注意してください。
また、カーネルとブートローダーをクロスコンパイルするためのツールチェーンをビルドしてインストールする必要もあります。これは、次のコマンドで実行できます。
$ bitbake メタツールチェーン
作成したら、次のスクリプトを実行してインストールできます。
/ /tmp/deploy/sdk/poky-glibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.7.sh
ツールチェーンの抽出方法の詳細については、次のYoctoトレーニングタスクを参照してください。
3. デバイスツリーの編集
以前のバージョン (3.0.35 の後方) では、Linux カーネルにはハードウェアの全記述が含まれていたため、ブートローダーはカーネルイメージをロードして実行する必要がありました。現在のカーネルバージョンでは、ハードウェアの説明はデバイスツリーブロブ(DTB)にあり、デバイスツリーを変更するだけで同じカーネルを異なるハードウェアで使用できます。このシナリオでは、ブートローダーはカーネルイメージとデバイスツリー(DTB)バイナリをロードします。
新しいデバイスツリーを追加する方法の詳細については、新しいデバイスツリーの追加について説明している次のコミュニティドキュメントを参照してください。
https://community.nxp.com/docs/DOC-329664
このドキュメントでは、PN7150 NFCコントローラーボードのサポートのみを追加するため、現在のUDOO NEOデバイスツリーを変更します。
3.1 元のUDOO Neoデバイスツリーファイルのコピー
ホームディレクトリに開発フォルダを作成します。
mkdir udooneo-dev
カーネルソースをこのフォルダにダウンロードします。これには、デバイスツリーファイルも含まれます。
cd udooneo-dev
デバイスツリーのファイルは、udooneo-dev/linux_kernel/arch/arm/boot/dts から入手できます。
3.2.UDOO Neo デバイス ツリー ファイルの編集
UDOO Neo Full ボードを使用するため、imx6sx-udoo-neo-full-hdmi-m4.dts を使用します。テキストエディタを使用してこのファイルを調べると、同じディレクトリにあるいくつかのインクルード定義ファイルが含まれていることがわかります。
#include "imx6sx-udoo-neo.dtsi"
#include "imx6sx-udoo-neo-full.dtsi"
#include "imx6sx-udoo-neo-m4.dtsi"
#include「imx6sx-udoo-neo-hdmi.dtsi」
#include 「imx6sx-udoo-neo-externalpins.dtsi」
これらを BSP Release の dts ディレクトリにコピーする必要があります (このディレクトリからデバイス ツリーを作成することもできますが、このドキュメントでは BSP Release にデバイス ツリーを追加する方法について説明します)。
/
/ /tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/arch/arm/boot/dts/
BSP リリースの Makefile にコンパイルする新しい dtb ファイルを追加する必要があります。これは、プリコンパイラ ディレクティブ $(CONFIG_ARCH_MXC) 内に配置する必要があります。

Arduinoピン配置を使用するNFCコントローラーボードで使用されるピンを構成するために、デバイスツリーに追加する必要があるものがいくつかあります。これらは imx6sx-udoo-neo.dtsi に対して行うことができるので、コンパイルする任意の UDOO Neo デバイスツリーによって取得されます。
使用されるI2Cピンは、I2C2バスのピンです。これらのピンの設定は、imx6sx-udoo-neo.dtsi ファイルにすでに実装されている必要があります。そうでない場合は、&iomuxc セクション内にこれらの行を追加してください。
&iomuxc {
pinctrl_i2c2_1: i2c2grp-1 {
FSL、ピン = <
MX6SX_PAD_GPIO1_IO03__I2C2_SDA 0x4001b8b1
MX6SX_PAD_GPIO1_IO02__I2C2_SCL 0x4001b8b1
>;
};
};
次に、PN7150のイネーブルピン、割り込みピン、I2Cアドレス、およびバス速度の&i2c2セクションにpn547エントリを追加する必要があります。図のように、下の太字で囲んだ部分を「&i2c2」セクションの末尾に付けます。
&i2c2 {
pn547: pn547@28 {
compatible = "nxp,pn547";
reg = <0x28>;
クロック周波数 = <400000>;
interrupt-gpios = <&gpio4 9 0>;
enable-gpios = <&gpio5 21 0>;
};
};
重要な注意点: これらの構成のいずれかを追加する前に、これらのピンとI2Cアドレスがこの*udo*.dtsiの他の場所で使用されていないことを確認することが重要ですファイル

UDDO Neo Schematics は、UDDO Web サイト (以下の回路図へのリンク) で見つけることができ、これらの設定の背後にある理由を確認できます。
http://www.udoo.org/download/files/schematics/UDOO_NEO_schematics.pdf
IR信号– J4コネクタ– Arduino 7ピン– i.MX6SXB13ピン
VEN信号 - J6コネクタ - Arduino 8ピン - i.MX6SX W5ピン
SDA信号 – J6コネクタ – Arduino SDAピン - i.MX6SX D20ピン
SCL信号 – J6コネクタ – Arduino SCLピン - i.MX6SX C20ピン
シンプルなデバイスツリーをゼロから作成する方法を詳しく確認したい場合は、次の非常に完全でわかりやすいコミュニティドキュメントを確認してください。
デバイスツリーをコンパイルするには、次のコマンドを実行します
source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
cd /
/ /tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git ARCH=arm dtbs を作成します。
これにより、使用される Imx6sx-udoo-neo-full-hdmi-m4.dtb が生成されます。
4. U-Boot のコンパイル
UDOO Neo FullボードにはUDOO U-bootを使用します。次の手順では、ソースコードをダウンロードし、ツールチェーンを使用してコンパイルする方法について説明します。
ソースコードのダウンロード
mkdir UDOOneo-dev
cd UDOOneo-dev
git clone -b 2015.04.imx-neo https://github.com/UDOOboard/uboot-imx
cd uboot-imx
u-bootのコンパイル
source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make udoo_neo_config
ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- make
これにより、DCD (Device Configuration Data) テーブルと u-boot.img ファイルを含む SLP ファイルが生成されます。
手記: デフォルトでは、このU-Boot構成はUDOO Neoボードを検出し、この場合はimx6sx-udoo-neo-full-hdmi-m4.dtbを探します。ボードによっては、異なるデバイスツリーを使用する必要がある場合があります。
5.SDカードのフラッシュ
5.1..sdcard の使用ファイルを使用して BSP リリース イメージをロードします。
イメージからルートファイルシステムをロードする最も簡単な方法は、.sdcardを使用することですbitbake の実行後に作成されるファイル。このイメージは、次のパスにあります。
/
/ /tmp/deploy/images/imx6sxsabresd
これにより、BSP Release U-boot ファイルとデバイス ツリー ファイルもロードされますが、その後、自分のファイルと交換します。これを行うには、次のコマンドを使用します。ここで、sdx は SD カードです。
$ sudo dd if=.sdcard
of=/dev/sdx bs=1M && 同期
または、必要な2つのパーティションを手動で作成することもできます。詳細については、Yocto ユーザーズガイドを参照してください。
5.2.U-boot の書き方
U-boot をフラッシュするには、SD カードが /dev/sdx にあると仮定して、次のコマンドを使用して SPL ファイルと u-boot.img ファイルの両方をフラッシュする必要があります。
dd if=SPL of=/dev/sdx bs=1K seek=1
dd if=u-boot.img of=/dev/sdx bs=1K seek=69
5.3.デバイスツリーブロブのコピー
imx6sx-udoo-neo-full-hdmi-m4.dtb デバイスツリーを FAT パーティションの dts というフォルダにコピーします。
6. カーネルドライバーの追加
Linux ソースディレクトリの git リポジトリからドライバーソースをダウンロードします
cd /
/ /tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/drivers/misc $ git clone https://github.com/NXPNFCLinux/nxp-pn5xx.git
現在のディレクトリの Makefile に次の行を追加します
obj-y += nxp-pn5xx/
見出し設定ファイルに以下の行を追加して、ドライバー設定を含めます
(drivers/misc/Kconfig)を参照してください。
ソース: "drivers/misc/nxp-pn5xx/Kconfig"
環境変数のエクスポート
cd /
/ /tmp/work/imx6sxsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git/ $ source /opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
$ export ARCH=arm
$ export CROSS_COMPILE=$TARGET_PREFIX
$ make imx_v7_defconfig
make menuconfig
メニュー設定内には、パス上にあるドライバーをモジュール(
デバイスドライバ ---> その他のデバイス ---> < M> NXP PN5XXベースのドライバ

変更を保存して終了し、モジュールをコンパイルします。
$ make modules
次に、モジュールをイメージにインストールします。ロードされたイメージのSDカードを挿入し、コマンドpromtからアクセスするためにマウントします。
sudo mount /dev/sdx ~/mountpoint/
ここで、sdxはSDカードです。次に、次のコマンドを使用してモジュールをインストールします。
sudo ARCH=arm INSTALL_MOD_PATH=/home/user/mountpoint modules_install firmware_install
SDカードをアンマウントする前に、NFCライブラリをインストールします。
7.NFCライブラリのインストール
次のコマンドを実行して、必要なライブラリをホストにインストールします。
sudo apt-get update
sudo apt-get automakeをインストールする
sudo apt-get autoconf をインストールする
sudo apt-get libtoolをインストールする
ノート: Ubuntu 12.04 を使用している場合、次のコマンドを使用すると、NFC ライブラリに必要な最小バージョンである autoconf 2.69 をインストールできます。
sudo add-apt-repository ppa:dns/gnu -y
sudo apt-get update -q
sudo apt-get install --only-upgrade autoconf
ディレクトリに入り、Linuxlibnfc-nciスタックをインストールします
cd ~/UDOOneo-dev
git clone https://github.com/NXPNFCLinux/linux_libnfc-nci.git
ブートストラップbashスクリプトを実行して、構成スクリプトを生成します
cd ~/UDOOneo-dev/linux_libnfc-nci
./bootstrap
Make ファイルを構成します。デフォルトのツールチェーン sysroots パスを使用しています。
PN7150 用に構成するには、次の設定を使用してください。
./configure --enable-pn7150 --host=arm-none-linux --prefix=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr --sysconfdir=/home/user/mountpoint/etc
PN7120 用に構成するには、次の設定を使用してください。
./configure --enable-pn7120 --host=arm-none-linux --prefix=/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr --sysconfdir=/home/user/mountpoint/etc
これで、スタックの make とインストールを実行する準備が整いました。
作成する
sudoメイクインストール
ビルドが成功すると、ライブラリとアプリケーションデモが .libs でビルドされますディレクトリ。ライブラリをターゲットの「/usr/lib」ディレクトリにコピーし、nfcDemoAppをターゲットの「/usr/sbin」にコピーします
cd .libs
sudo cp * /home/user/mountpoint/usr/lib
sudo cp nfcDemoApp /home/user/mountpoint/usr/sbin
cd ~/UDOOneo-dev/linux_libnfc-nci/conf/PN7150
sudo cp * /home/user/mountpoint/etc
これで、SDカードのマウントを解除できます。
sudo umount /home/user/mountpoint
8. NFCリーダーのテスト
マイクロSDカードをUDOO Neoボードのスロットに挿入し、PN1750 NFCコントローラーボードをUDOO Neoボードの上にインストールします。
ボードにアクセスするために、ターミナルコンソールを使用します。NEOまたは同様のアダプター用の公式USB /シリアルデバッグモジュールを使用できます。
UDOO Neoボードでのシリアルデバッグコンソールの設定の詳細については、以下のリンクを参照してください。
http://www.udoo.org/docs-neo/Basic_Setup/Serial_Debug_Console.html
起動したら、.ko をインストールしますファイル。
insmod /lib/modules/3.14.28+g91cf351/kernel/drivers/misc/nxp-pn5xx/pn5xx_i2c.ko
次に、nfcDemoApp を実行します。ポーリングモードでテストし、利用可能なタグを探して読み取ります。
nfcDemoAppの投票
NFCタグをNFCリーダーの隣に配置すると、以下に示すようなコンソール出力が得られるはずです。

虫垂。
参考文献と役立つドキュメント
http://www.nxp.com/documents/application_note/AN11697.pdf
PN7120 NFC Controller SBC Kit|NXP