The last days have been filled with a lot of Verilog and ModelSim, so I thought it would be nice with some softer programing for a change.
After spending more time than I care to admit on hunting down the architecture reference guide (it is here if you need it) I figured I could as well write the bootloader that my OpenRISC platform will require. Since I haven't written anything about what I have in mind, here is a quick overview what I'm looking at creating:
- Implement OpenRISC
- Make the platform fit the DE-2 board from Terasic
- It must be able to boot Linux
- It would be awesome if I can get the DM9000 network controller working
That is the very formal (hmm) requirement specification I have in mind.
Anyhow, to boot Linux on the DE-2 platform I would need to have a big RAM (hence the SDRAM controller) of a couple megabytes at least. I would also need to have some permanent storage to boot from; the flash memory will be good for that I think.
When booting Linux the kernel expect that it resides in RAM space and will begin writing to memory. This is not so good when booting from flash. Therefore I need to transfer the kernel from flash to SDRAM and then execute the kernel from there. The bootloader would possibly need to update interrupt tables and such.
I present the version 0.1 bootloader. It prints a nice message, copies an image from directly after the bootloader to 0x0 and then jumps there. No interrupt handling for now.
Post a Comment