Armadillo-IoTのRS232アドオンモジュールのテストインタフェースのSPIを使ってみた。
1.SPI端子の確認
Armadillo-IoT ゲートウェイ スタンダードモデル 製品マニュアル Armadillo-IoTベースボードマルチプレクス表 から、今回は、Armadillo-IoTのCON1にRS232アドオンモジュールを接続して、 RS232アドオンモジュールの CON4の35ピン:CSPI2_SCLK CON4の36ピン:CSPI2_MISO CON4の37ピン:CSPI2_MOSI CON4の50ピン:CSPI2_SS0 を使う。
2.ドライバの設定:DeviceDriver
Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル8.3.14. SPI のカーネルコンフィギュレーションを参考に make menuconfigで、
Device Drivers ---> [*] SPI support ---> <SPI> *** SPI Master Controller Drivers *** -*- Bitbanging SPI master <SPI_BITBANG> <*> MXC CSPI controller as SPI Master <SPI_MXC> *** SPI Protocol Masters *** <*> User mode SPI device driver support <SPI_SPIDEV>
を設定。
3.アドオンインタフェースの設定:SystemType
Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル8.3. Linuxドライバ一覧 のカーネルコンフィギュレーションを参考に make menuconfigで、
System Type ---> ARM system type (Freescale MXC/iMX-based) ---> Freescale MXC Implementations ---> MXC/iMX System Type (MX25-based) ---> <ARCH_MX25> MX25 Options ---> [*] Support Atmark Techno Armadillo-410 <MACH_ARMADILLO410> Armadillo-400 Board options ---> Armadillo-410 CON2 extension board (Armadillo-IoTG Std Base board) ---> <ARMADILLO410_CON2_AIOTG_STD> [*] Addon Module Auto Delect <AIOTG_STD_ADDON_AUTO_DETECT>
を
[ ] Addon Module Auto Delect
に設定。
すると、下に端子のコンフィギュレーションの項目がでる。 この中で、今回はArmadillo-IoTのCON1のSPI2を使うので、
[*] Enable SPI2 at CON1 [*] Enabel GPIO SPI2_SS0 at CON1
を有効にする。 参考)上記のコンフィギュレーションの画面でを選択すると、CON1/CON2のどの端子に接続されているかが見える。
4.armadillo_iotg_std.cの変更
Armadillo実践開発ガイド第3部2.3. SPI接続A/Dコンバーター の図2.37 CSPI3、SS0をspidevで使用する修正を参考に atmark-dist/linux-2.6.x/arch/arm/mach-mx25/armadillo_iotg_std.c 内の、static struct spi_board_info armadillo_iotg_std_spi2_board_info[] __initdataを 下記のように変更。 補足) 上記資料は、CSPI3を使っている。今回は、CSPI2を使う。違いに注意。
static struct spi_board_info armadillo_iotg_std_spi2_board_info[] __initdata = { { .modalias = "spidev", .max_speed_hz = 1000000, .bus_num = 2, .chip_select = 0, }, };
以上の手順後、ビルドしたカーネルをArmadillo-IoTに書き込むと、手順1の端子でSPI通信ができる。