I've been looking through the Linux bootstrap code. It turns out that they enable the cache while decompressing the kernel. I haven't verified that it is enabling cache for the flash memory region, but the code says it is.
I'm using the BLOB boot loader which is a lot faster booting Linux than LogicLoader. BLOB copies the kernel from flash to SDRAM and executes from there. I believe that slow decompression is primarily a flash access-time problem.
Should someone be inclined to try it, you may get better performance from flash by tweaking the SMC controller settings for flash. I believe that LogicLoader leaves them in their default settings which is quite high: 0x1f. This translates to (31+1)*tHCLK or ~20ns if my math is correct. Compare this with SDRAM which is 32bit, not 16, and probably averages a read delay closer to 1 or zero cycles. All you need to do is check the specs for the StrataFlash part and come up with an optimal wait time.
Cheers.
|