Armadilloフォーラム

汎用のspiドライバ[spidev]を有効化する方法について

faxdfjk

2022年10月19日 10時14分

Armadilloフォーラム、製品マニュアルなどを参照し断片的な情報をもとに操作しています。
 at-dtwebの操作を以下の何処かで行う必要があるとは思うのですが、情報が見つけられません。
 
 質問1
 参照すべきマニュアル・情報は「Armadilloフォーラム、製品マニュアル」以外にありますか。
  ※ググっては見たのでが・・・

 質問2
  以下の操作は合っていますか。

 質問3
  at-dtwebの操作は以下の何処に割り込ませるのが正しいですか。

 ★以下ATDEの操作
カーネルソースとユーザーランドのダウンロードし同一のフォルダに置く
linux-v4.14-at[version].tar.gz
initramfs_a600-[version].cpio.gz

 カーネルを展開
tar xf linux-v4.14-at[version].tar.gz

 initramfs アーカイブへのシンボリックリンク作成
cd linux-v4.14-at[version]
  ln -s ../initramfs_a600-[version].cpio.gz initramfs_a600.cpio.gz

コンフィギュレーション
make ARCH=arm armadillo-640_defconfig
make ARCH=arm menuconfig

以下を有効にする
    Device Drivers --->
[*] SPI support --->
[*] User mode SPI device driver support <- これを有効化

ビルド
  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

ターゲットへコピー
省略

★以下ターゲットの操作
LinuxカーネルイメージとDTBの書き換え
mount /dev/mmcblk0p2 /mnt
cp uImage-a600-v4.14-at[version] /mnt/boot/uImage
  cp armadillo-640-v4.14-at[version].dtb /mnt/boot/a640.dtb
umount /mnt

リブート
reboot

コメント

at_akihito.irie

2022年10月19日 11時11分

入江です。

>  質問1

SPIなど新たにデバイスをArmadilloに接続する手順については、「Armadillo
標準ガイド ハードウェア拡張編」が参考になります。
https://armadillo.atmark-techno.com/resources/documents/armadillo-guide…

ArmadilloのどのピンにSPIの機能を割り当てられるかは、マルチプレクス表が
参考になります。
https://armadillo.atmark-techno.com/resources/documents/armadillo-640/m…

>  質問2
>  質問3

at-dtwebを使用していない点と、最終的に書き込むuImageとdtbファイルが間
違っています。
(精査はしていないため他にもあるかもしれません。)

先日のフォーラムでも回答がありましたとおり、at-dtwebの前にLinuxカーネ
ルをビルドしておく必要があります。

なので、頂いた手順の中でat-dtwebを実行するのは、「ビルド」の後です。

カーネルビルド後にat-dtwebでSPIを有効にし、saveした後に、
linux-v4.14-at[VERSION]/arch/arm/boot/dts/armadillo-640-at-dtweb.dtb
linux-v4.14-at[VERSION]/arch/arm/boot/uImage
の2つのファイルをArmadilloに書き込んでください。

また、at-dtwebを使用する際の注意点ですが、開発段階ではSPIの設定に加え
て、CON9の3, 5ピンにUART1を設定しておくことをお勧めします。
これをしないとシリアル経由でArmadilloを操作できなくなってしまうためです。

以上でspidevが有効化されるはずです。

試してみてわからないことがあればまたフォーラムにてご質問ください。

faxdfjk

2022年10月20日 9時48分

以下確認できました。

 /dev/spidev3.0

備忘録として手順を残します。

 ★以下ATDEの操作
カーネルソースとユーザーランドのダウンロードし同一のフォルダに置く

linux-v4.14-at49.tar.gz
initramfs_a600-2.1.0.cpio.gz

 カーネルを展開

tar xf linux-v4.14-at49.tar.gz

 initramfs アーカイブへのシンボリックリンク作成

cd linux-v4.14-at49
ln -s ../initramfs_a600-2.1.0.cpio.gz initramfs_a600.cpio.gz

コンフィギュレーション
make ARCH=arm armadillo-640_defconfig
make ARCH=arm menuconfig

以下を有効にする
    Device Drivers --->
[*] SPI support --->
[*] User mode SPI device driver support <- これを有効化
保存

ビルド
  make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LOADADDR=0x82000000 uImage
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

AT-DTWEBの操作
  SPIの設定
  COM1の設定 (CON9の3,5ピン)
  保存

以下をターゲットへコピー
linux-v4.14-at[VERSION]/arch/arm/boot/uImage
linux-v4.14-at[VERSION]/arch/arm/boot/dts/armadillo-640-at-dtweb.dtb

★以下ターゲットの操作
LinuxカーネルイメージとDTBの書き換え
sudo mount /dev/mmcblk0p2 /mnt
sudo cp uImage /mnt/boot
  sudo cp armadillo-640-at-dtweb.dtb /mnt/boot/a640.dtb
sudo umount /mnt

リブート
reboot