AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |
Back to Blog
The piezo, driven by a single memory-mapped register, could be controlled with minimal code (and most importantly, no function calls). My solution to this was quite the gem - I modified the ARM exception handler to use the iPod's internal piezo buzzer to beep out the faulting PC address in a sequence of 32 high/low pitched beeps. The only problem was that, of course, I couldn't figure out what code was responsible for the unaligned read. Thankfully, ARM has a way to set an "alignment trap" to trigger an interrupt when an invalid unaligned read happens. One such class of bug was the unaligned read (this is ARM, remember). I remember having to root out a few bugs which absolutely trashed the processor state and made complex things (like function calls to print things) fail miserably. There were a few bugs which were not debuggable with this "trace all the things" method, and those were the ones which required the most ingenuity. This usual method, though slow, works surprisingly well with most bugs - but this assumes that the code is in a sane enough state to be able to write to the screen properly (stack corruption, for example, would render it unusable). These Expansion Packs come with their own config.cfg, you can delete these cfg files and use our Quake config.cfg instead. There are virtually no good ways to debug code on-device with Rockbox, short of adding in a bunch of function calls to print variable values to the device's screen. Install Quake Mission Pack 1: Scourge of Armagon (Hipnotic Software) and/or Quake Mission Pack 2: Dissolution of Eternity (Rogue Entertainment) 2. I'll add in another fun anecdote while I'm at it.
0 Comments
Read More
Leave a Reply. |