March 29th, 2012

Tall ships (porthole)

Three random updates in one!

Tuesday's discovery was that erasing part of the flash chip your code is executing from is a Bad Idea. Not because I'm erasing the code that's being executed (I'm actually erasing a completely different part of the chip), but because while the chip is carrying out a sector erase it doesn't respond to reads for different sectors.

For added fun, when the processor presumably threw a bus error exception, it failed to run the exception handler because that's also located in the same flash chip. So it just reset and left me staring at the startup output wondering how my upload function had morphed into a crash-on-demand function. Fortuantly it didn't also become a brick-on-demand function.

Wednesday's annoyances were mainly made up of finding piddly little bugs in my code, with each bug fixed unearthing a new one somewhere else (most of these are due to other chunks of code being incredibly picky about parameters). And due to how the hardware is structured each time I recompile the code it takes about 15 minutes to re-flash everything. This isn't helped by the system deciding to sulk every fourth upgrade or so.

On the plus side, I managed to deal with all the flash-related issues from Tuesday. This means that about half of the stuff I'm working on now all behaves itself. As long as you don't look at it funny.

And today's achivement was wandering down to production to see if I could prise a particular component out of them, and somehow managing to end up with two fully populated system boards to play with. Result!