The features
The list of requirements for THC changed a lot during the last year. But the basics remained the same.
- It has to be handheld (Battery powered) - A display - A microcontroller - A possibility to create sound - A SD Card reader (To store games, applications and media on it) - Some way of connectivity Bluetooth, USB and or serial (Which ones varied also a little) - Gamepad controls: A cross or a joystick, some buttons
First design that did not get finished used an M16C microcontroller that was used, at company I was working for, for many projects already. Soon I came to the point that it will not be enough and that people will have problems with writing their own software of it because there was or even still is only a commercial compiler for windows available.
After some thinking and googling and talking with the lead electronics designer, in the company I was doing my practical training, we came up with the idea that an ARM microcontroller would be the best choice. This architecture is supported pretty well under Linux, Mac OS and Windows and there are GNU tools to compile for that architecture. Linux also does run on these microcontrollers. That is at least what we thought at that time. Another motivation to choose that chip for that project was that the company I was working for could use it for newer projects that require more power then the M16C could provide.
The other components drifted very often between different manufacturers and solutions. The first design containing the M16C chip was targeted at a small LCD display that we already used for a different product but it was small and slow. Not really a good choice for a device that should be able to display high paced animations, something you would expect from a gaming/multimedia device. At that time I also saw some OLED (Organic LED) displays that amazed me with brightness and contrast. But soon I also realized that this also can not be the solution because the displays are very expensive, and the massively produced ones are pretty small. We also had a prototype of such a display to test it but it was flickering terribly. So I had to leave the idea too.
Sound... yes that is the component that I made myself the least thoughts about. Something with a AC97 codec would be nice but a beeping piezo speaker would be enough for the beginning.
SD cardreader was one of the easiest parts. We had a sample of a slot for SD Cards from Glyn and that will do it's work very good. So that component was also set pretty early.
Which connectivity to use was the next thing. Providing Bluetooth would be pretty easy as we already used a module using an LMX chip that could be connected to the serial port of the microcontroller. USB? That is something for the future so I did not make a lot of thinking about that. Serial was another pretty easy thing. The microcontroller provides a serial port and the only thing you need beside that is a level shifter. That is really no real problem.
The last thing to think about were the controles. After a short time I was sure that A/B buttons would not be enough beside the cross/joystic controller. So I ended up with A/B/C/D block with addition of (L)eft shoulder and (R)ight shoulder buttons and (S)tart and s(E)lect buttons. That should be enough for most things that one would like to do with the device. The problem that remained was the cross/joystick, but I would think about that later.
So I ended up with a feature list like this one:
- Portability: Battery powered (Dough!) - A display: something bigger with fast refresh rate and reaction time, so that it is usable for multimedia. - Microcontroller: An ARM (Which one exactly still had to be found out) - Sound: at least a beeping piezo speaker connected to one of the timer interrupt ports or so. - SD Cardreader: (The one we got from Glyn) (If every decision would be so easy) - Connectivity: Bluetooth (LMX chip already used, by the company I was working for, for some products), Serial (We already need it for debugging so this one is a sure thing), USB (The time will show, "perhaps") - Gamepad controls: Cross/Joystick plus A/B/C/D block plus (L)eft shoulder and (R)ight shoulder buttons and (S)tart and s(E)lect buttons
Puhh that took months to decide. It sounds crazy but really all that was not as easy as it sounds.