页次: 1
先这样改吧,屏蔽掉初始化时的中断检测,改完就算是调通了
--- a/esp_sip.c
+++ b/esp_sip.c
@@ -46,6 +46,7 @@
#include "esp_ext.h"
#endif /* USE_EXT_GPIO */
+extern struct task_struct *sif_irq_thread;
........
@@ -2206,7 +2207,11 @@ sip_poll_bootup_event(struct esp_sip *sip)
esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret);
if (ret <= 0) {
esp_dbg(ESP_DBG_ERROR, "bootup event timeout\n");
- return -ETIMEDOUT;
+ //return -ETIMEDOUT;
+ sip->epub->wait_reset = 0;
+ wake_up_process(sif_irq_thread);
+ esp_dbg(ESP_DBG_ERROR, "for unknow reason,we may not be informed the boot/rst complete event, assume it completed and continue here\n");
+ msleep(50);
}
if(sif_get_ate_config() == 0){
@@ -2240,7 +2245,11 @@ sip_poll_resetting_event(struct esp_sip *sip)
esp_dbg(ESP_DBG_TRACE, "******time remain****** = [%d]\n", ret);
if (ret <= 0) {
esp_dbg(ESP_DBG_ERROR, "resetting event timeout\n");
- return -ETIMEDOUT;
+ //return -ETIMEDOUT;
+ sip->epub->wait_reset = 0;
+ wake_up_process(sif_irq_thread);
+ esp_dbg(ESP_DBG_ERROR, "for unknow reason,we may not be informed the boot/rst complete event, assume it completed and continue here\n");
+ msleep(50);
}
DoZh 说:用MCU简单验证了一下,每次都正常输出0xff 0xff 0x01, 看逻辑分析仪想到可能是f1c200s的SCK在CS脚拉低之前有一个脉冲,找了下可能可以这样解决:
https://linux-sunxi.org/SPIdev#LOW_on_SCK_line_on_transfer_start_when_using_SPI-Mode3
有时间试一下
改了驱动代码,这个问题解决了,进下载固件的部分了,开始报下面的错误:
[ 201.832613] esp8089_spi: spierr byte read cmd resp 0x00 no recv [ 201.865102] esp8089_spi: spierr byte read cmd resp 0x00 no recv [ 201.897660] esp8089_spi: spierr byte read cmd resp 0x00 no recv [ 201.930467] esp8089_spi: spierr byte read cmd resp 0x00 no recv
怀疑是中断的问题,继续调吧
从ESP8089换成8266,问题直接消失了。。。。
现在看起来网络是通了,但是中断脚是接地的,不然驱动初始化的时候还是会报另一个错。
这种情况下CPU一直在响应中断,终端都卡的要死。。。
还是要继续想办法,比如能不能屏蔽初始化时的中断超时检测。
自己跑一会内存居然还出错了。。。。
[ 963.708463] kworker/u2:4: page allocation failure: order:0, mode:0xa20(GFP_ATOMIC), nodemask=(null)
[ 963.729931] CPU: 0 PID: 105 Comm: kworker/u2:4 Tainted: G O 5.2.0-licheepi-nano+ #45
用MCU简单验证了一下,每次都正常输出0xff 0xff 0x01, 看逻辑分析仪想到可能是f1c200s的SCK在CS脚拉低之前有一个脉冲,找了下可能可以这样解决:
https://linux-sunxi.org/SPIdev#LOW_on_SCK_line_on_transfer_start_when_using_SPI-Mode3
有时间试一下
改了驱动代码,这个问题解决了,进下载固件的部分了,开始报下面的错误:
[ 201.832613] esp8089_spi: spierr byte read cmd resp 0x00 no recv
[ 201.865102] esp8089_spi: spierr byte read cmd resp 0x00 no recv
[ 201.897660] esp8089_spi: spierr byte read cmd resp 0x00 no recv
[ 201.930467] esp8089_spi: spierr byte read cmd resp 0x00 no recv
怀疑是中断的问题,继续调吧
用MCU简单验证了一下,每次都正常输出0xff 0xff 0x01, 看逻辑分析仪想到可能是f1c200s的SCK在CS脚拉低之前有一个脉冲,找了下可能可以这样解决:
https://linux-sunxi.org/SPIdev#LOW_on_SCK_line_on_transfer_start_when_using_SPI-Mode3
有时间试一下
还没呢,情况和你一样,芯片无响应。
我也是,你的问题解决了吗
root@pop-os:~# insmod /lib/modules/5.2.0-licheepi-nano+/esp8089-spi.ko esp_reset_gpio=130 esp_cs0_pin=0 esp_interrupt=131
[ 100.487205] esp8089_spi: loading out-of-tree module taints kernel.
[ 100.502255] esp8089_spi: EAGLE DRIVER VER bdf5087c3deb
[ 101.107979] esp8089_spi: esp_spi_dummy_probe enter
[ 101.113372] esp8089_spi: register board OK
[ 101.117707] esp8089_spi: sem_timeout = 0
[ 101.339049] esp8089_spi: ESP8089 power up OK
[ 101.344184] esp8089_spi: esp_spi_probe ENTER
[ 101.348713] esp8089_spi: esp_setup_spi
[ 101.352844] esp8089_spi: sif_spi_protocol_init
[ 101.357535] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.366256] esp8089_spi: fail_count = 0
[ 101.484912] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.593085] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.601821] esp8089_spi: fail_count = 1
[ 101.711623] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.819797] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.828460] esp8089_spi: fail_count = 2
[ 101.938086] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.046329] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.055057] esp8089_spi: fail_count = 3
[ 102.170503] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.290458] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.311082] esp8089_spi: fail_count = 4
[ 102.427085] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.546976] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.567478] esp8089_spi: fail_count = 5
[ 102.683231] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.803629] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.825123] esp8089_spi: fail_count = 6
[ 102.941701] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.063014] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.084966] esp8089_spi: fail_count = 7
[ 103.201628] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.322898] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.344858] esp8089_spi: fail_count = 8
[ 103.461802] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.583043] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.604976] esp8089_spi: fail_count = 9
[ 103.721343] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.842613] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.864570] esp8089_spi: fail_count = 10
[ 103.981306] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 104.102631] esp8089_spi: first error exit
[ 104.113547] esp8089_spi: esp_spi_probe EXIT
[ 104.124558] eagle: probe of spi1.0 failed with error -110
[ 104.137024] esp8089_spi: sem_timeout = 0
[ 104.147740] esp8089_spi: esp_spi_init err 0
root@pop-os:~#
谢谢指点,
我也感觉是芯片没焊好,甚至怀疑是板子不对,然后重焊、重画了板子甚至拿了一块esp12f飞线,结果一样。。。。。
我再查查吧。。。。
感觉还是芯片工作不正常或者没焊接好,CHIP_EN脚看看是不是高电平
root@pop-os:~# insmod /lib/modules/5.2.0-licheepi-nano+/esp8089-spi.ko esp_reset_gpio=130 esp_cs0_pin=0 esp_interrupt=131
[ 100.487205] esp8089_spi: loading out-of-tree module taints kernel.
[ 100.502255] esp8089_spi: EAGLE DRIVER VER bdf5087c3deb
[ 101.107979] esp8089_spi: esp_spi_dummy_probe enter
[ 101.113372] esp8089_spi: register board OK
[ 101.117707] esp8089_spi: sem_timeout = 0
[ 101.339049] esp8089_spi: ESP8089 power up OK
[ 101.344184] esp8089_spi: esp_spi_probe ENTER
[ 101.348713] esp8089_spi: esp_setup_spi
[ 101.352844] esp8089_spi: sif_spi_protocol_init
[ 101.357535] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.366256] esp8089_spi: fail_count = 0
[ 101.484912] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.593085] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.601821] esp8089_spi: fail_count = 1
[ 101.711623] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.819797] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.828460] esp8089_spi: fail_count = 2
[ 101.938086] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.046329] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.055057] esp8089_spi: fail_count = 3
[ 102.170503] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.290458] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.311082] esp8089_spi: fail_count = 4
[ 102.427085] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.546976] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.567478] esp8089_spi: fail_count = 5
[ 102.683231] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.803629] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.825123] esp8089_spi: fail_count = 6
[ 102.941701] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.063014] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.084966] esp8089_spi: fail_count = 7
[ 103.201628] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.322898] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.344858] esp8089_spi: fail_count = 8
[ 103.461802] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.583043] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.604976] esp8089_spi: fail_count = 9
[ 103.721343] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.842613] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.864570] esp8089_spi: fail_count = 10
[ 103.981306] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 104.102631] esp8089_spi: first error exit
[ 104.113547] esp8089_spi: esp_spi_probe EXIT
[ 104.124558] eagle: probe of spi1.0 failed with error -110
[ 104.137024] esp8089_spi: sem_timeout = 0
[ 104.147740] esp8089_spi: esp_spi_init err 0
root@pop-os:~#
没辙了,怎么调试ESP8089/8266都没反应.
有没有哪位大佬能够指点一二?
用的是f1c100s的PA0-PA3做SPI1,ESP8089和8266都试过,换了几块板子了,感觉芯片都没有响应。。。
终端输出:
root@pop-os:~# insmod /lib/modules/5.2.0-licheepi-nano+/esp8089-spi.ko esp_reset_gpio=130 esp_cs0_pin=0 esp_interrupt=131
[ 100.487205] esp8089_spi: loading out-of-tree module taints kernel.
[ 100.502255] esp8089_spi: EAGLE DRIVER VER bdf5087c3deb
[ 101.107979] esp8089_spi: esp_spi_dummy_probe enter
[ 101.113372] esp8089_spi: register board OK
[ 101.117707] esp8089_spi: sem_timeout = 0
[ 101.339049] esp8089_spi: ESP8089 power up OK
[ 101.344184] esp8089_spi: esp_spi_probe ENTER
[ 101.348713] esp8089_spi: esp_setup_spi
[ 101.352844] esp8089_spi: sif_spi_protocol_init
[ 101.357535] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.366256] esp8089_spi: fail_count = 0
[ 101.484912] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.593085] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.601821] esp8089_spi: fail_count = 1
[ 101.711623] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 101.819797] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 101.828460] esp8089_spi: fail_count = 2
[ 101.938086] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.046329] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.055057] esp8089_spi: fail_count = 3
[ 102.170503] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.290458] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.311082] esp8089_spi: fail_count = 4
[ 102.427085] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.546976] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.567478] esp8089_spi: fail_count = 5
[ 102.683231] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 102.803629] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 102.825123] esp8089_spi: fail_count = 6
[ 102.941701] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.063014] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.084966] esp8089_spi: fail_count = 7
[ 103.201628] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.322898] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.344858] esp8089_spi: fail_count = 8
[ 103.461802] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.583043] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.604976] esp8089_spi: fail_count = 9
[ 103.721343] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 103.842613] esp8089_spi: /home/dozh/embedded_linux/f1c200s/ESP8089-SPI/spi_sif_esp.c, 1559
[ 103.864570] esp8089_spi: fail_count = 10
[ 103.981306] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 104.102631] esp8089_spi: first error exit
[ 104.113547] esp8089_spi: esp_spi_probe EXIT
[ 104.124558] eagle: probe of spi1.0 failed with error -110
[ 104.137024] esp8089_spi: sem_timeout = 0
[ 104.147740] esp8089_spi: esp_spi_init err 0
root@pop-os:~#
原理图:
逻辑分析仪吐出来的时序图:
ESP8266串口0输出的启动信息:
ets Jan 8 2013,rst cause:1, boot mode:(6,2)
ets Jan 8 2013,rst cause:1, boot mode:(6,6)
waiting for host
ets Jan 8 2013,rst cause:1, boot mode:(6,6)
waiting for host
卡在挺靠前的位置了
root@pop-os:/lib/modules/5.2.0-licheepi-nano+# ls
esp8089-spi.ko modules.builtin modules.dep.bin modules.softdep
modules.alias modules.builtin.bin modules.devname modules.symbols
modules.alias.bin modules.dep modules.order modules.symbols.bin
root@pop-os:/lib/modules/5.2.0-licheepi-nano+# modprobe esp8089-spi.ko
modprobe: FATAL: Module esp8089-spi.ko not found in directory /lib/modules/5.2.0-licheepi-nano+
这。。。什么鬼?我已经把.ko拷过去了啊?
各位大佬有没有什么思路?
========
解决了
root@pop-os:/lib/modules/5.2.0-licheepi-nano+# modprobe esp8089-spi
原来要这样。。。
页次: 1