ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. scosgrove
    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 3
    • Best 0
    • Controversial 0
    • Groups 0

    scosgrove

    @scosgrove

    0
    Reputation
    3
    Profile views
    3
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    scosgrove Unfollow Follow

    Latest posts made by scosgrove

    • RE: DSP Uart Application

      @Alex-Kushleyev and @Eric-Katzfey apologies for the delay in my response. I've just picked this up again after the winter break and have some updates.

      "Can you please clarify how the data is batched when the byte loss happens - how many bytes are sent without a break?" - During runtime of this application, it is difficult to tell for sure but it looks like when sending data of ~170 bytes, data was getting dropped. As it wasn't very clear what was triggering the dropouts, I ended up setting up a test application described below.

      I created a Uart loop-back module running on the DSP (any data read is immediately written out the same uart). This module was running (really polling the UART RX) at 2 kHz. I also made an application on the microcontroller (communicating with the DSP over the UART) that sends a fixed block of data, sleeps and then repeats this for 10 seconds. With this I performed some testing trying to find when the data begins to drop.

      I am left with the impression that there are 3 factors contributing to the dropouts:

      1. Volume of data sent without a break
      2. Delay between each data block
      3. Load on the DSP processor

      Based on the loop-back test, it looked like the maximum bandwidth I could get was by sending packets of 225 bytes with a delay of ~3ms in between. This results in about ~76300 bytes/s getting transmitted and reliably looped back.

      Unfortunately, applying that to my application didn't fix the issue. I believe the real-world use causes there to be a higher system load and this in turn contributed to more data dropouts.
      I ended up settling on a maximum of 75 bytes but with a delay of ~1.5ms. This then results in an upper limit of ~50000 bytes/s. I am still getting dropouts but they are infrequent and acceptable for this particular use-case. Note: I don't need 50000 bytes/s but I am interested in keeping buffered data minimized so sending in larger blocks is preferable.

      It would be really great to understand how the data is handled in the lower level on the DSP. If there was DMA in place, I would expect no dropouts (or maybe more consistency in the dropouts).

      Thanks for your help on this.

      posted in Ask your questions right here!
      S
      scosgrove
    • RE: DSP Uart Application

      @Eric-Katzfey Thanks for your response, I appreciate you taking some time to think about this.

      Apologies, when I said voxl-px4, I think of this as the binary that runs on the DSP, but I guess it is both the Apps and the DSP split application.

      Shifting to the Apps processor isn't an option for this particular use-case but I appreciate that I may have more control / insight doing this from Linux.

      Can you point me to any datasheets that I can try to access from Qualcomm which may shed some light on both the capabilities of the Sensor Hexagon DSP and the hardware access? I have a Qualcomm account to access their provided documentation and I've unfortunately not found anything useful with the underlying RTOS and practically nothing on the drivers for the UART or even how they are connected apart from the mapping in the QUP. Thanks!

      posted in Ask your questions right here!
      S
      scosgrove
    • DSP Uart Application

      Hello,

      Platform: VOXL2 running PX4

      I have a custom application running on the DSP in the form of a PX4 driver. It is talking over the RC UART port on the VOXL2 to a micro-controller. When I begin increasing the amount of data I am sending into the DSP (from the micro), information starts getting lost on the DSP RX side. I believe it is single bytes getting dropped but I can't rule out multiple bytes also. This happens at 460800, 921600 and 2000000 baud (slower rates are not viable for this application) and I tried varying how frequently I read data from the file handle which doesn't appear to affect anything. The data rate that I've observed issues happening can be as low as 5 KB/s and gets worse with higher rates.

      In back-tracing this issue, I've come up with some questions I'd like some help with:

      • Which of the DSPs is PX4 running on?
        • I'm assuming the Sensor Hexagon DSP or is it running across multiple DSPs?
        • The entire voxl-px4 stack is running on the QRT1 RTOS isn't it?
      • When are the uart function pointers mapped and is the source for these available (I'm assuming no)?
      • What is the underlying configuration of the UART that the DSP is talking to on the RC Port?
        • Is there a library or config file where I can inspect the config / setup?
        • For the low-level IO, is there a DMA in place and what is the buffer size?
          • Could this be an issue?
      • Is there documentation or architecture diagrams covering these details?
        • Unfortunately I could not find the necessary information in the forums or on the docs site

      Best Regards,
      Shaun.

      posted in Ask your questions right here! voxl2 slpi dsp uart
      S
      scosgrove