交叉編譯esp8089 編譯環境: 硬體:全志R528 ubuntu:Linux ubuntu 4.15.0-194-generic #205-Ubuntu SMP Fri Sep 16 19:49:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux 內核:tina ...
交叉編譯esp8089
編譯環境:
硬體:全志R528
ubuntu:Linux ubuntu 4.15.0-194-generic #205-Ubuntu SMP Fri Sep 16 19:49:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
內核:tina-r528/lichee/linux-5.4
第一步克隆代碼: git clone https://github.com/Lichee-Pi/esp8089.git
第二步配置好交叉編譯器
ARCH=arm CROSS_COMPILE=arm-openwrt-linux- make -C /home/kerson/tina-r528/lichee/linux-5.4/ M=${PWD} modules
說明:內核源碼路徑:/home/kerson/tina-r528/lichee/linux-5.4/
第三步配置腳本
insmod /run/esp8089.ko config=crystal_26M_en=1
sleep 1
ifconfig wlan0 up
usleep 100000
killall wpa_supplicant
wpa_supplicant -i wlan0 -c /etc/wifi/wpa_supplicant.conf &
sleep 1
udhcpc -i wlan0 &
碰到的問題:
發現的問題源碼中暫時找不到wifi_en 管腳的操作。reboot重啟系統時esp8089設備不能重新註冊。
暫時的解決方法時,內核寫一個簡單的驅動單獨操作這個管腳。
將原來的rola.c驅動源碼更改為只操作一下wifi_en管腳。
將 cp lichee/linux-5.4/drivers/watchdog/rola.c wifi_en.c vi wifi_en.c static int __init rola_dev_init(void)函數其他都註釋掉。 增加 int gpio_ret = gpio_request(GPIOB(1), "PB1"); gpio_direction_output(GPIOB(1), 0); msleep(50); /*原來5的時候,燒錄完成wifi模塊啟動不了*/ gpio_direction_output(GPIOB(1), 1); gpio_free(GPIOB(1)); printk("==============================\n"); ssize_t rola_drv_read(struct file *filp, char __user *buf, size_t count, loff_t *fpos) ssize_t rola_drv_write(struct file *filp, const char __user *buf, size_t count, loff_t *fpos)兩個函數中的內容也註釋掉。
修改Makefile 直接編譯到內核 vi lichee/linux-5.4/drivers/watchdog/Makefile obj-y += rs485.o #obj-y += rola.o obj-y += wifi_en.o