Re: Compression method to speed up CAN software download. (Or for low end processors in general)
From: Jim Granville (no.spam_at_designtools.co.nz)
Date: Mon, 01 Nov 2004 11:23:38 +1300
Roberto Waltman wrote:
> I'm looking for advice on patent / royalty free compression /
> decompression algorithms to use on low end microcontrollers.
> This is the background:
> I am currently written the specs for a CAN based control / monitor
> protocol for a distributed telecom system. I'll be using the basic 0
> to 8 bytes CAN packet format, not higher level protocols like CANOpen,
> One of the system wide design constraints I need to follow, is that
> all secondary processors, (there are many,) will download their
> software from a master controller when they power up.
> Another thing I want to add, is to require that the SW image to be
> downloaded should be compressed.
> My question is, what compression method to use?
> I have no control over the hardware of some of the nodes in the CAN
> bus. (They are supplied by outside vendors.) They will have processors
> vaguely ranging from high-end 8 biters to low-end 16 bit MCUs.
These statements are somewhat mutually exclusive ?
ZIP schemes will impact the resource of the nodes, and will require
larger boot loaders.
Better would be to have a Checksum/Version handshake, and ONLY download
the code that has changed. This could be Firstly on Whole SW, then
on a BLOCK basis. You could then specify to your suppliers, that they
follow simple Compile/LINK rules to keep stable code first.
You don't really want to download ALL code, on every power cycle, but
download only when some version change is detected on the relevent node(s).