About a month ago I started a new project on my harddisk, that was supposed to, as usually, solve all existing and non-existent problems (of porting Linux to new, undocumented devices). But, as usually, I got sidetracked in the middle of the solving of all problems, and it lost priority. I should probably again appologise to everyone whose all problems will not be solved ;) – sorry I’m too busy with other stuff.
I got sidetracked by an (of course) brilliant idea, that I had on Friday or Saturday two weeks ago, just before GUADEC, about why my qemu-based emulator for the Palm Tungsten|E never worked (kindof). Palm Tungsten|E is a PDA with an OMAP series cpu in it and the hard part is emulating this OMAP chip. The emulator was an idea I started implementing like one and a half years ago in order to run the PalmOS binary that ships with the device and then spy on what it’s doing to the hardware and this way learn about the hardware itself. Unfortunately PalmOS never booted in the emulator, until recently, even though Linux booted just fine, but that’s a whole lot less useful. Nevertheless the time I spent on it was not all lost – applying structured procrastination (cool name I learnt about recently) I always avoided coming close to the proper PalmOS and was rather starting all the time new projects of automated disassemblers, debuggers and other funny names, that would partially do the task of getting PalmOS to run for me, some of these programs may turn useful some time and even if not, I used them as my university projects for some two courses and actually tricked the lecturer into believing the code did something useful (haha).
Back to the “brilliant idea”, it turned out to work and after two days of almost continuous coding, PalmOS booted and seemed to work really nice. It took a couple of horrible hacks that I’m not even sure why they might be needed. In some places I totally raped the ARM specs just to keep PalmOS happy. In addition, the source tree was based on a prehistoric qemu snapshot and now that the basic objective – booting PalmOS – is reached it will take some effort to port all of the code to the current tree and try to make it usable. I already started and today committed to CVS an initial Palm Tungsten|E / OMAP310 support that boots Linux but doesn’t do anything more. So far it was more like a rewrite because my old code was so bad :( I didn’t have time to play with the PalmOS yet but I will post later about whatever interesting could be observed so far.