
Hi Jerry,
On Tue, Oct 27, 2009 at 10:03:49AM -0400, Jerry Van Baren wrote:
Jerry Van Baren wrote:
Wolfgang Wegner wrote:
[...]
we have an update protocol that normally relies on data being received while the previous block is written to flash.
[...]
By the way, what sort of benefit do you see? What is your load time with and without the non-blocking changes?
I am not sure if I understand what you mean, or if we are talking about different things.
Our update protocol starts the update and immediately starts sending data over the (relatively slow) serial line. During the data is transferred, the first flash block is erased (first operation "in background"), and after the data for the complete flash block arrived, this data is written to flash and the next block is erased (again an operation "in background"), while the data transfer over the serial line continues.
Of course, doing the whole erase & flash procedure after receiving the complete bunch of data would solve this problem, but this update protocol comes from time where there simply was not enough RAM to store all the data before flashing, and we did not want to change everything for this new device - and still, even erasing for and programming the whole ~4MBytes of data would take some time which can be hidden when erasing/programming each flash block during the serial transfer, which is the real bottleneck of the whole procedure.
Regards, Wolfgang