Lichee Pi向け?の無線LANモジュールはあるみたいだけど、TELEC取得していないので
普通に使うことはできない。
そこで、気にはなっていたけど使ったことがなかったESPを最近使い始めたので、調子に乗ってLicheePIと接続してみたいと思う。
ESP8266(ESP-WROOM-02D (2MB))
UART1を有効にする
コミニュティの手順書を参考にUART1を有効にする
http://zero.lichee.pro/驱动/UART.html
ブロック図では
http://zero.lichee.pro/入门/board_intro.html#id5
IO-E21、IO-E22の割り当てをUART1に変更できる
dts、dtsiファイルの変更
手順書では、sun8i-v8s.dtsiやsun8i-v3s-licheepi-zero.dtsを書き換える手順になっているが、変更箇所を分離して自分の管理下に置きたかったので、別ファイルに記載することにした。
buildrootの外部ツリーに
board/dts/sun8i-v3s-licheepi-zero-dock-with-lcd.dts
を作成
#include "sun8i-v3s-licheepi-zero-dock.dts"
/ {
backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 0 1000000 0>;
brightness-levels = <0 30 40 50 60 70 100>;
default-brightness-level = <6>;
};
soc {
pio: pinctrl@01c20800 {
uart1_pins_a: uart1@0 {
pins = "PE21", "PE22";
function = "uart1";
bias-pull-up;
};
};
};
};
&pwm {
pinctrl-names = "default";
pinctrl-0 = <&pwm0_pins>;
status = "okay";
};
&uart1 {
pinctrl-0 = <&uart1_pins_a>;
pinctrl-names = "default";
status = "okay";
};
これを読むようにconfigファイルを変更(menu menuconfig)する
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="$(BR2_EXTERNAL_LICHEEPI_ZERO_DOCK_EX_PATH)/board/dts/sun8i-v3s-licheepi-zero-dock-with-lcd.dts"
dtsとdtbの相互変換
device-tree-compiler が必要
dtsからdtb
#!/bin/bash
LINUX_KERNEL_SRC=output/build/linux-zero-4.14.y
DTS_SRC_FILE=$1
DTB_OUT_FILE=${DTS_SRC_FILE%.*}.dtb
gcc -E -P -x assembler-with-cpp -I $LINUX_KERNEL_SRC/arch/arm/boot/dts -I $LINUX_KERNEL_SRC/include $DTS_SRC_FILE | dtc -I dts -O dtb -i $LINUX_KERNEL_SRC/arch/arm/boot/dts -o $DTB_OUT_FILE
dtbからdts
作成されたdtbが意図したものになっているかを確認する
dtc -I dtb -O dts -o result.dts sun8i-v3s-licheepi-zero-dock-with-lcd.dtb
動作確認
適当なシリアルターミナルをインストールして確認する
今回はminiconにしてみた
uart1をループさせて、入力したものが返ってくるかを確認する
Lichee PiからESP8266のファーム書き込み
ファーム書き換えの毎にPCに接続するのも大変なので、LicheePiから書き込めるようにする
これには、esptool.pyを使用するとできるようだ
流れとしてはVScodeやArduino IDEでコンパイル→生成したバイナリをLicheePIに転送→LicheePiからESP8266を書き換える といった流れ
まずは、Arduinoは作成したファーム(バイナリ)が残らない?ので、残す方法
以下を参考にやってみる
https://www.jh4vaj.com/archives/8548
Arduino IDEの場合
スケッチ→コンパイルしたバイナリを出力
ワークスペースに[〜〜.ino.generic.bin]というファイル名でバイナリが作成される
VScodeの場合
/home/adeno/.arduino15/preferences.txt
に
build.path=/home/adeno/develop/Arduino/
を追加すると
コンパイル時にここにバイナリを保存しておいてくれる
このときのファイル名は[〜〜.ino.bin]というファイル名でバイナリが生成させる
方法によって、ファイル名が異なるので注意が必要。。
書き込み
esptool.py --port /dev/ttyS1 write_flash 0x0 sketch_mar29a.ino.bin
こんな感じでどーんっ
これで、ようやく環境が出来た、、まだ先は長い