Coprocessor management troubleshooting grid

Revision as of 12:07, 11 September 2019 by Registered User

Template:ArticleMainWriter


Some typical issues related to the management of a coprocessor are listed below. Solutions or debugging methods are proposed for these issues.

If your issue is not listed, try looking at in the articles in the Category:Coprocessor management Linux, or troubleshooting grids categories.

1. firmware loading and control[edit source]

Symptom Resolution

2. Inter processor communication[edit source]

Symptom Resolution

Deadlock in OpenAMP during IP communication withe the main processor.

rpmsg_virtio_rx_callback and rpmsg_virtio_send_offchannel_raw (rpmsg_virtio.c) are using the lock in rpmsg_device struct when they access to the index of the virtio queue index. Theses functions have to not be used in interrupt context, to avoid a double mutex lock between the normal and interrupt contexts.

Linux kernel trace:

stm32-ipcc 4c001000.mailbox: Try increasing MBOX_TX_QUEUE_LEN

This message occurs when the Linux generates an overflow on the IPCC mailbox, which is used to inform the co-processor than a new RPMsg is available. This should not affect the transfer as RPMsg are not discarded but should be interpreted as the coprocessor reachs its capacity to treat the received messages in time.

Linux kernel trace:

timeout waiting for a tx buffer

This message means that there is no more TX buffer available to transmit a message to the remote processor.

  • If no message has been treated by the coprocessor, check that the IPCC interrupt occurs

on coprocessor (refer toIPCC_internal_peripheral for detail on the peripheral).

  • If some messages have already been treated by the coprocessor, this probably means that

the coprocessor firware is busy, freeze, or crashed.

Linux kernel trace:

No memory for tty_prepare_flip_string

This message means that there is no more space in the TTY temporary buffer in reception. The root cause is probably that the Linux application does not read the tty device in time to treat the incoming tty stream.