Developing an Architecture
Last updated: May 8, 2007, 9:09 p.m.
It's been a while since I thought up this project now, and it's heading for a shelf as fast as it's vestigial legs will carry it. I blame this rapid attempt at mothballing on a lack of practical progress while I'm at Uni with no Z80 chips in sight. I have however been thinking about the project a bit and come up with some basic ideas for the architecture.
Firstly, I've decided that instead of the normal idea of holding the operating system on a ROM chip that's used in most Z80 systems, I want to set it up something more like a conventional PC with a boot ROM containing the system BIOS (Basic Input-Output System) which causes the processor to boot from the IDE bus. In my design this is going to be a small compact flash card.
One advantage of this is that it should allow advanced functionality such as being able to edit a version of the operating system kernel on the device itself, reboot, test the new kernel by selecting it from a boot loader menu, if it fails, go back to the functioning kernel (by rebooting) and try again.
I've also been looking at the cost of RAM chips and found that modern flash memory is available at such an incredibly low price that making all of the on-board memory non-volatile should be quite reasonable. This means that when the shut down button is pressed, all that I need to do is have the processor copy all of it's internal registers to the stack (just a pre-allocated section of the flash memory) and then turn off all power. When booting, all it needs to do is re-load these registers and carry on with what it was doing.
This will only break if it was doing some time critical operation at the when it goes to reboot, but this error could be avoided by having the processor mask the power off interrupt if it does go into a time critical operation. It's also worth noting that any external registers such as used for memory bank selection, peripheral selection etc. will no longer be set correctly after this.
There you go, those are some of the ideas I've had about the boot sequence and memory architecture. More info about other parts of the architecture soon...
Comments
Posting comments is not currently possible. If you want to discuss this article you can reach me on twitter or via email.