B
bitrex
Guest
I have a client who needs to send 10 bit greyscale video data
over a serial link from a PC to an ARM Cortex uP. Right now just using a
KISS implementation, constant-overhead-byte-stuffing protocol, two bytes
per value, with a simple CRC-type checksum appended to each scanline the
link needs to be around 384kbps to support the amount of
data required to transmit.
the hardware is on-paper capable of that but in practice the lash up is
unstable, there's a bottleneck somewhere, most likely on the PC side as
it's not a "real" hardware serial port but virtualized via USB and it
has to go thru all the multiple layers of abstraction from the
application until it finally gets spit out; the application code isn't
even complied it's from a scripting language.
Using compiled C/C++ that can do system calls directly will probably
help but I'm also looking for ways to compress the serial stream
bandwidth. For 10 bit greyscale data I was thinking that just something
like u-law or A-law encoding could significantly reduce the bandwidth
without resorting to more compute-intensive bespoke video compression
algorithms. Primary requirement is that the link needs to be very
fault-tolerant and reliable for long term operation
over a serial link from a PC to an ARM Cortex uP. Right now just using a
KISS implementation, constant-overhead-byte-stuffing protocol, two bytes
per value, with a simple CRC-type checksum appended to each scanline the
link needs to be around 384kbps to support the amount of
data required to transmit.
the hardware is on-paper capable of that but in practice the lash up is
unstable, there's a bottleneck somewhere, most likely on the PC side as
it's not a "real" hardware serial port but virtualized via USB and it
has to go thru all the multiple layers of abstraction from the
application until it finally gets spit out; the application code isn't
even complied it's from a scripting language.
Using compiled C/C++ that can do system calls directly will probably
help but I'm also looking for ways to compress the serial stream
bandwidth. For 10 bit greyscale data I was thinking that just something
like u-law or A-law encoding could significantly reduce the bandwidth
without resorting to more compute-intensive bespoke video compression
algorithms. Primary requirement is that the link needs to be very
fault-tolerant and reliable for long term operation