交叉编译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