掃除をしていると、Raspberry Pi2が見つかった。
NXPのプレゼントで当選したOM5578/PN7150Sが載ったままだった。
https://hiro99ma.blogspot.com/2017/01/nfcraspiom5578pn7150s-1.html
当時はkernelにドライバを入れるので苦労したのだが、最近は楽になっているかもしれない。
確かめておこう。
https://github.com/NXPNFCLinux/linux_libnfc-nci
現在の最新リリースは、R2.4。
PDFはAN11697。
0. Raspberry Piのkernelのクロスコンパイル環境
ページの上の方はセルフビルド、下の方はクロスコンパイルの記述になっているので、下を見る。
.bashrcに設定を書くようになっているが、うちは毎回sourceコマンドで読み込むことにする。
echo export PATH=~/Raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH > compiler.sh
source ./compiler.sh
1. Raspberry Piのkernelダウンロード
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
2. ドライバのダウンロード
cd drivers/misc
git clone https://github.com/NXPNFCLinux/nxp-pn5xx.git
3. Makefileの編集
vi Makefile
(obj-がならんでいる一番下に追加)
obj-y += nxp-pn5xx/
4. Kconfigの変数
vi Kconfig
(sourceがならんでいる一番下に追加)source "drivers/misc/nxp-pn5xx/Kconfig"
5. Creating the device node
やり方が2種類提示してある。Device treeとPlatform data。
ソースファイルを変更するのは気が進まないので、Device treeにしよう。
と思ったが、どういう設定にすればいいんだ?
ああ、前回と同じ流れじゃないか!
6. ビルド
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
(Device Drivers ---> Misc devices ---> < > NXP PN5XX based driver)
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
・・・ここまでやった後で、PDFの「3.2 Alternative to pn5xx_i2c kernel driver」に気付いた。
この構成だと、Kernel spaceはI2CとGPIOのドライバで済みそうだ。
https://github.com/NXPNFCLinux/linux_libnfc-nci
src/halimpl/pn54x/tml/i2c/phTmlNfc_alt.h
/* Describe PN71xx connection
* 0 = Custom configuration
* 1 = OM557x on Raspberry Pi
* 2 = OM557x on UdooNeo
* 3 = OM557x on BeagleBone black
*
*/
やる気十分じゃないか!
マクロのCONFIGURATIONを変更するだけでよさそうだし、githubに入っているものはデフォルトが1番だから今回は変更しなくて良い。
Raspberry Pi2にセルフビルドさせよう。
Raspbianは2018-06-27のDesktopで、apt update/upgradeも行っておく。
raspi-configなどでI2Cを有効にしておこう。
git clone https://github.com/NXPNFCLinux/linux_libnfc-nci.git
sudo apt install automake autoconf libtool
cd linux_libnfc-nci
./bootstrap
./configure --enable-alt
make
sudo make install
では、デモアプリを動かそう。
nfcDemoApp poll
1回目に実行したときはエラーがたくさん出てしまったが、タグをかざすと読み取っているようだ(エラーによってコンソールが流されて見えん)。
2回目は普通に動いた。
よくわからんが、深追いは止めておこう。
もしかしたら、前回も見逃していただけで、ドライバは何もせずとも動いたのかもしれんな。
私としては、BeagleBone Greenも持っているので、PN7150SとRapberry Pi用のアタッチメントとBeagleBone用のアタッチメントが分かれているとよいのだが、まあ高いものではないから仕方ないのか(Raspiモデルで3500円くらい)。
いつもだとSonyのRC-S620/Sを使うところなのだが、プロトコルを意識せず使用できるというのは強みがある。
まあ、Linuxが載る前提にはなってしまうが。
相手から読まれるだけでよいなら、FeliCa Linkという選択もある。
試作品を作る場合なんかは、Raspberry PiでもFeliCa Linkで済ませていたりする。
ボードにどーん、というのもよいのだが、FeliCa Linkみたいな小ささだと必要なピンだけつなげば良いので、小回りがきくのだ。
(どーん)
まあ、適材適所ということで。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。