PX4 / PX4-Autopilot

PX4 Autopilot Software
https://px4.io
BSD 3-Clause "New" or "Revised" License
8.51k stars 13.51k forks source link

UBX GPS SPI Driver causes huge latency spikes on POSIX #7410

Closed nicolaerosia closed 6 years ago

nicolaerosia commented 7 years ago

Hello,

The SPI Linux Kernel driver has no way of knowing there's data to be read (this is a limitation of SPI), hence pool will always return true ( https://github.com/PX4/Firmware/blob/master/src/drivers/gps/gps.cpp#L399 ) , causing long lockups of the SPI bus ( https://github.com/PX4/GpsDrivers/blob/dd275f36cb22a82342bdeadf4f66b4f6af03ef92/src/gps_helper.h#L47 ) reading only 0xFF since the device has no data ready to be sent. Unfortunately on Navio2, the GPS shares the same SPI bus with both IMUs and does NOT expose the data ready pin (EXTPIN), see here for more background info: https://community.emlid.com/t/navio2-sensors-schematics/6360

In my opinion, a solution for this would be the following:

Any suggestions are welcomed.

bkueng commented 7 years ago

Since we always use 5Hz and this is a specific HW problem, I'd go for something simple, like a (dynamic) usleep(), but I guess there is no really good solution here. If you come up with something sophisticated that works, it's of course fine with me too.

PX4BuildBot commented 6 years ago

Hey, this issue has been closed because the label status/STALE is set and there were no updates for 30 days. Feel free to reopen this issue if you deem it appropriate.

(This is an automated comment from GitMate.io.)