Many years ago, early in my career I spent some time down in the murky depths of low level programming. Microprocessors were not in common use at the time and functional blocks such as Program counters, and ALUs were implemented as discrete components using TTL 74 series logic and AMD 290X bit slice devices. Even assembly language was too high level back then. Devices were bootstrapped by toggling switches to form a sixteen bit word and then loading them into registers. Bits were traced to see if they were failing to emerge from register blocks – such was the level of granularity. Later I moved to the world of PDP-11’s and Motorola 680X and 6800X microprocessors, graduating from binary to the more compact octal and hexadecimal number systems. I can still recall the Reset and NMI vectors addresses of these chips. There was nothing like the serenity of pouring through lines of listings balanced on my knee with a schematic diagram in my left hand and an oscilloscope probe in my right chasing the perpetrator of the malfunction. One time I could not find a particular string listed on microfiche so I instead resorted to using a logic analyzer to capture the contents of the address bus using the string sequence as a trigger. Nowadays, it is no longer necessary to wade through illegible microfiche by hand as it is a simple matter of clicking the find/search icon with an integrated development environment. Unfortunately there are fewer opportunities today to work in this kind of environment since high level programming allows more rapid development – languages such as C allow the access to low level addresses and to perform most of the necessary bit twiddling operations from afar. Even so it can be advisable to implement certain parts of the code in assembler or to at least have some familiarity with the intermediate object code prior to the linking process.
So my recent discovery of the Raspberry PI allowed me to go back and revisit those days and directly manipulate low level hardware. At the moment I am reading up on ARM architecture and over the next few months I will publish some of my learning experiences with this amazing device. The Raspberry Pi is unique in its cost and functionality and is ideal as an educational vehicle.
More information about the Raspberry Pi can be found at http://www.raspberrypi.org/