Skip to content

Under heavy load parameter database download fails #40

@davefiddes

Description

@davefiddes

Problem experienced on a ZombieVerter VCU that appears to be under heavy load (for unclear reasons but very repeatable). Fetching the device database using CAN SDO will just stop part way through.

There appear to be two distinct failure modes:

  • The param DB download just stops after a few seconds. Looking at the CAN trace it seems like the client has a requested the next segment but no reply is forthcoming from the device. Adding some trace variables show the request has made it into CanSdo::ProcessSDO but no frame is emitted by the call to
    canHardware->Send(0x580 + nodeId, data);
  • The param DB download is terminated early. This appears to be because the required 7 bytes needed to fill a CAN SDO frame are not available. The code here
    if (PRINT_BUF_EMPTY())
    triggers and terminates the download. The client registers this but objects because it is malformed JSON. This can be triggered by adding uDelay(1000) after t.Run() in the main loop.

A wireshark capture of the first failure is attached:
db-download-failure.pcapng.gz
This is best viewed using the CANOPEN dissector. It omits the stream of CAN frames being sent by the VCU to CAN ID 0x100 and 0x300 every 10ms.

Issue #39 was found while trying to characterise this. This is a separate and internally sourced issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions