交叉编译esp8089

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

 

热门相关:无量真仙   霸皇纪   刺客之王   大神你人设崩了   第一神算:纨绔大小姐