交叉编译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.cstatic 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/Makefileobj-y += rs485.o#obj-y += rola.oobj-y += wifi_en.o