Am 04.11.2009 03:34, schrieb Bao, Zheng:
Marc and Patrick, The LZMA compressing way doesn't work on my board. I haven't found any solution to resolve the overlapping in current code. ulzma() doesn't seem to know that overlapping happens. It is a problem that has to be solved.
Thanks for your fix, but I'd like to come back to the ulzma issue.
What do you mean, that LZMA compression doesn't work on your board? There is a known problem that decompression takes _very_ long (several minutes for a moderately sized payload such as FILO). If it looks like the boards was stuck in the decompression phase, please try again and wait to see if it moves on eventually (15 minutes should be enough with some safety margin), so we know if you ran into that known issue, or if you found another bug.
If it's something entirely different, I'd also like to hear about it, of course :-)
As for ulzma(): ulzma really doesn't know about the overlap, but the compression related code compensates for that. The bounce buffer function returns the start address of the bounce buffer. The location that is used for decompression is (segment_start - RAMBASE + bouncebuffer_base). If the segment starts before the rambase, the segment is decompressed to the bounce buffer and the memory region before it. Right after decompression, the memory region before the bounce buffer is copied. That solution has its own share of problems, but the bounce buffer handling code is quite nasty, and I wanted to keep the changes as small as possible.
Thanks, Patrick Georgi