Project

General

Profile

Bug #13395

assertion failure in usbftdi

Added by Jorge Schrauwen 4 months ago. Updated 4 months ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

I was having issues with a FTDI based USB serial device, where it doesn't seem to want to properly change baudrate... but that is not 100% confirmed.
So I booted a debug kernel in the hopes of grabbing the USB_DPRINTF's (not figured out how yet :s), but on debug kernel I hit an assert.

I uploaded the dump here https://pkg.blackdot.be/cores/usbftdi_vmdump.0.lz4

root@omnios:/var/crash/omnios# mdb -k unix.0 vmcore.0
Loading modules: [ unix genunix specfs dtrace mac cpu.generic uppc apix scsi_vhci zfs sata sd ip hook neti sockfs arp usba uhci mm stmf stmf_sbd lofs mpt ptm cpc ufs logindmux nfs ]
> $c
vpanic()
0xfffffffffbdce615()
uftdi_fifo_flush+0x6e(fffffe03abe5dc00, 0, 2)
usbser_flush+0x74(fffffe038f3960c0, fffffe038f7f20a0)
usbser_wmsg+0x1ab(fffffe038f3960c0)
usbser_wq_thread+0x62(fffffe038f396118)
taskq_thread+0x315(fffffe038fa1a4e0)
thread_start+0xb()


Files

clipboard-202012261948-lqnt9.png (13.6 KB) clipboard-202012261948-lqnt9.png Jorge Schrauwen, 2020-12-26 06:48 PM
#1

Updated by Jorge Schrauwen 4 months ago

For personal reference, https://docs.oracle.com/cd/E37838_01/html/E61056/modules-68.html

Shows how to get the log handle for the before mentioned USB_DPRINTF's

#2

Updated by Jorge Schrauwen 4 months ago

Looks like the log actually shows out of order actions happening, not sure how though, might be a bit out of my depth

uftdi0: uftdi_fifo_flush: dir=0x1
uftdi0: uftdi_fifo_drain
uftdi0: uftdi_close_port 0
uftdi0: uftdi_pm_set_idle
uftdi0: uftdi_fifo_flush: dir=0x2

I do have a theory... I'm trying to flash a firmware to the device and it resets the device before doing so.
So somewhere in the 'oops the device has disapeared' path of the code something goes wrong?

https://github.com/JelmerT/cc2538-bsl/blob/master/cc2538-bsl.py#L235
It toggles DTR (low) to enable the bootloader, then RTS (low) (high) (low) to reset the SoC on the device.

Also available in: Atom PDF