Linux kernel ESP8089 Raspberry Pi模块崩溃调试

Linux kernel ESP8089 Raspberry Pi模块崩溃调试,linux-kernel,raspberry-pi,linux-device-driver,esp8266,kdbg,Linux Kernel,Raspberry Pi,Linux Device Driver,Esp8266,Kdbg,我正在尝试使用ESP-12F作为SDIO模式下的ESP8089作为旧款(即非WiFi)覆盆子Pi的WiFi模块 我从构建中获得了模块,但每次(或几乎每次?)将模块加载到Pi上时,内核都会崩溃。kdb输出如下所示 我已经让kgdb从远程系统运行和连接,但这没有多大帮助-因为在您知道模块加载的地址之前,无法告诉它模块中的符号,并且我知道的确定模块加载的地址的唯一方法需要一个工作用户区,我没有得到,因为模块使内核崩溃了 所以。对不起,这个问题很开放。可能会有帮助的事情: 如果有人碰巧熟悉驾驶员,请提

我正在尝试使用ESP-12F作为SDIO模式下的ESP8089作为旧款(即非WiFi)覆盆子Pi的WiFi模块

我从构建中获得了模块,但每次(或几乎每次?)将模块加载到Pi上时,内核都会崩溃。kdb输出如下所示

我已经让kgdb从远程系统运行和连接,但这没有多大帮助-因为在您知道模块加载的地址之前,无法告诉它模块中的符号,并且我知道的确定模块加载的地址的唯一方法需要一个工作用户区,我没有得到,因为模块使内核崩溃了

所以。对不起,这个问题很开放。可能会有帮助的事情:

  • 如果有人碰巧熟悉驾驶员,请提供关于车祸原因的建议
  • 关于如何在模块加载后调试事件的建议
  • 关于如何在没有有效用户区的情况下通过KDB或KGDB计算模块节地址的建议
  • 任何人认为可能有用的东西
以下是崩溃时的KDB输出:

Entering kdb (current=0xdaff1b40, pid 65) Oops: (null)
due to oops @ 0xbf3c93d0
CPU: 0 PID: 65 Comm: kworker/u2:2 Tainted: G           O    4.4.50dbg+ #1
Hardware name: BCM2708
Workqueue: kmmcd mmc_rescan
task: daff1b40 ti: da400000 task.ti: da400000
PC is at esp_sdio_probe+0x58/0x3c0 [esp8089]
LR is at wake_up_klogd+0x5c/0x68
pc : [<bf3c93d0>]    lr : [<c0057930>]    psr: 20000013
sp : da401d10  ip : 00000007  fp : da401d3c
r10: bf3d214c  r9 : 00000000  r8 : bf3d52e4
r7 : d7198c80  r6 : d9e94c00  r5 : bf401984  r4 : d9eeaa80
r3 : 00000002  r2 : d9e94c08  r1 : 00000000  r0 : 0000004e
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 00c5387d  Table: 17c24008  DAC: 00000055
CPU: 0 PID: 65 Comm: kworker/u2:2 Tainted: G           O    4.4.50dbg+ #1
Hardware name: BCM2708
Workqueue: kmmcd mmc_rescan
[<c00166a4>] (unwind_backtrace) from [<c00135d8>] (show_stack+0x20/0x24)
[<c00135d8>] (show_stack) from [<c02e1370>] (dump_stack+0x20/0x28)
[<c02e1370>] (dump_stack) from [<c0010b1c>] (show_regs+0x1c/0x20)
[<c0010b1c>] (show_regs) from [<c00951f8>] (kdb_main_loop+0x33c/0x740)
[<c00951f8>] (kdb_main_loop) from [<c0097bf0>] (kdb_stub+0x18c/0x3cc)
[<c0097bf0>] (kdb_stub) from [<c008e4d0>] (kgdb_handle_exception+0x284/0x7c8)
[<c008e4d0>] (kgdb_handle_exception) from [<c0015bb8>] (kgdb_notify+0x3c/0x94)
[<c0015bb8>] (kgdb_notify) from [<c003d6f0>] (notifier_call_chain+0x54/0x94)
[<c003d6f0>] (notifier_call_chain) from [<c003d754>] (__atomic_notifier_call_chain+0x24/0x2c)
[<c003d754>] (__atomic_notifier_call_chain) from [<c003d784>] (atomic_notifier_call_chain+0x28/0x30)
[<c003d784>] (atomic_notifier_call_chain) from [<c003d8f0>] (notify_die+0x40/0x4c)
[<c003d8f0>] (notify_die) from [<c00136a4>] (die+0xc8/0x374)
[<c00136a4>] (die) from [<c001e084>] (__do_kernel_fault.part.0+0x64/0x1f4)
[<c001e084>] (__do_kernel_fault.part.0) from [<c056d9ec>] (do_page_fault+0x228/0x38c)
[<c056d9ec>] (do_page_fault) from [<c056dbfc>] (do_translation_fault+0xac/0xb4)
[<c056dbfc>] (do_translation_fault) from [<c0009200>] (do_DataAbort+0x44/0xc4)
[<c0009200>] (do_DataAbort) from [<c056d15c>] (__dabt_svc+0x3c/0x60)
Exception stack(0xda401cc0 to 0xda401d08)
1cc0: 0000004e 00000000 d9e94c08 00000002 d9eeaa80 bf401984 d9e94c00 d7198c80
1ce0: bf3d52e4 00000000 bf3d214c da401d3c 00000007 da401d10 c0057930 bf3c93d0
1d00: 20000013 ffffffff
[<c056d15c>] (__dabt_svc) from [<bf3c93d0>] (esp_sdio_probe+0x58/0x3c0 [esp8089])
[<bf3c93d0>] (esp_sdio_probe [esp8089]) from [<c0434328>] (sdio_bus_probe+0x110/0x124)
[<c0434328>] (sdio_bus_probe) from [<c0367220>] (driver_probe_device+0x1e8/0x2b4)
[<c0367220>] (driver_probe_device) from [<c03675ac>] (__device_attach_driver+0x90/0x9c)
[<c03675ac>] (__device_attach_driver) from [<c0365694>] (bus_for_each_drv+0x54/0x9c)
[<c0365694>] (bus_for_each_drv) from [<c0366f80>] (__device_attach+0xb0/0x114)
[<c0366f80>] (__device_attach) from [<c03675d4>] (device_initial_probe+0x1c/0x20)
[<c03675d4>] (device_initial_probe) from [<c0366608>] (bus_probe_device+0x94/0x9c)
[<c0366608>] (bus_probe_device) from [<c036474c>] (device_add+0x388/0x534)
[<c036474c>] (device_add) from [<c043458c>] (sdio_add_func+0x58/0x70)
[<c043458c>] (sdio_add_func) from [<c0433814>] (mmc_attach_sdio+0x2ac/0x378)
[<c0433814>] (mmc_attach_sdio) from [<c042ad90>] (mmc_rescan+0x338/0x3e4)
[<c042ad90>] (mmc_rescan) from [<c0036cec>] (process_one_work+0x110/0x398)
[<c0036cec>] (process_one_work) from [<c0037118>] (worker_thread+0x160/0x4a0)
[<c0037118>] (worker_thread) from [<c003c884>] (kthread+0xd8/0xf4)
[<c003c884>] (kthread) from [<c000f928>] (ret_from_fork+0x14/0x2c)
输入kdb(当前=0xdaff1b40,pid 65)Oops:(空)
由于oops@0xbf3c93d0
CPU:0 PID:65通信:kworker/u2:2受污染:GO4.4.50dbg+#1
硬件名称:BCM2708
工作队列:kmmcd mmc\u重新扫描
任务:daff1b40 ti:da400000任务。ti:da400000
PC位于esp_sdio_探头+0x58/0x3c0[esp8089]
LR位于唤醒klogd+0x5c/0x68
pc:[]lr:[]psr:2000013
sp:da401d10 ip:0000000 7 fp:da401d3c
r10:bf3d214c r9:00000000 r8:bf3d52e4
r7:d7198c80 r6:d9e94c00 r5:bf401984 r4:d9eeaa80
r3:00000002 r2:d9e94c08 r1:00000000 r0:0000004e
标志:模式SVC_32 ISA ARM段内核上FIQ上的nzCv IRQ
控件:00c5387d表:17c24008 DAC:00000055
CPU:0 PID:65通信:kworker/u2:2受污染:GO4.4.50dbg+#1
硬件名称:BCM2708
工作队列:kmmcd mmc\u重新扫描
[](展开回溯)从[](显示堆栈+0x20/0x24)
[](显示_堆栈)从[](转储_堆栈+0x20/0x28)
[](转储堆栈)从[](显示注册表+0x1c/0x20)
[](显示注册表)从[](kdb_主循环+0x33c/0x740)
[](kdb_主循环)来自[](kdb_存根+0x18c/0x3cc)
[]中的[](kdb_存根)(kgdb_句柄_异常+0x284/0x7c8)
[](kgdb_handle_exception)来自[](kgdb_notify+0x3c/0x94)
[](kgdb_notify)来自[](通知程序调用链+0x54/0x94)
[](通知程序调用链)来自[](原子通知程序调用链+0x24/0x2c)
[](原子通知程序调用链+0x28/0x30)
[](原子通知程序调用链)来自[](通知骰子+0x40/0x4c)
[](通知模具)从[](模具+0xc8/0x374)
[]中的[](内核错误.part.0+0x64/0x1f4)
[](\u do\u kernel\u fault.part.0)来自[](do\u page\u fault+0x228/0x38c)
[](do_页面错误)来自[](do_翻译错误+0xac/0xb4)
[](do_数据中止+0x44/0xc4)中的[](do_翻译错误)
[](数据中止)从[]开始(u dabt_svc+0x3c/0x60)
异常堆栈(0xda401cc0到0xda401d08)
1cc0:0000004e 00000000 d9e94c08 00000002 d9eeaa80 bf401984 d9e94c00 d7198c80
1ce0:bf3d52e4 00000000 bf3d214c da401d3c 0000000 7 DA401D110 c0057930 bf3c93d0
1d00:2000013 ffffffff
[](esp sdio探头+0x58/0x3c0[esp8089])
[](esp_sdio_探针[esp8089])来自[](sdio_总线_探针+0x110/0x124)
[](sdio_总线_探针)来自[](驱动程序_探针设备+0x1e8/0x2b4)
[](驱动程序/探测设备)来自[](设备/连接驱动程序+0x90/0x9c)
[](每个drv的总线+0x54/0x9c)
[](每个drv的总线)来自[](设备连接+0xb0/0x114)
[](设备连接)从[](设备初始探头+0x1c/0x20)
[](设备初始探测)来自[](总线探测设备+0x94/0x9c)
[](总线探测设备)从[](设备添加+0x388/0x534)
[](设备添加)来自[](sdio添加功能+0x58/0x70)
[](sdio_add_func)来自[](mmc_attach_sdio+0x2ac/0x378)
[](mmc_-attach_-sdio)来自[](mmc_-rescan+0x338/0x3e4)
[](mmc重新扫描)从[](处理一个工作+0x110/0x398)
[](工作线程+0x160/0x4a0)中的[](处理一个工作)
[](工作线程)从[](kthread+0xd8/0xf4)
[](kthread)from[](ret_from_fork+0x14/0x2c)