1

我正在尝试将 ESP-12F 用作 SDIO 模式下的 ESP8089,作为较旧(即非 WiFi)Raspberry Pi 的 WiFi 模块。

我从https://github.com/al177/esp8089构建中获得了模块,但是每次(或几乎每次?)将模块加载到 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)
4

0 回答 0