Resources for very low-level (board bring-up)
I’ve worked with a few embedded systems, but now I’d like to make my own piece of hardware and despite a pretty thorough knowledge of Linux, I have no idea how to get Linux up and running on new hardware. So I’m looking for resources on how to do some board bringup/support.
Some more details:
I’m wondering about the following kinds of things:
How does Linux know the processor configuration – e.g. how the pins are configured, how much cache is there, is there an MMU present.
How does Linux know about the board layout – e.g. which pins are the memory bus, where is the row select, column select, which pins are an i2c bus, and so on.
A relatively popular boot loader for embedded devices is Uboot:
The Uboot project originated from Germany; Uboot sounds like submarine in German, so the name sounds somewhat funny for German ears.
I hope I didn’t tell you something obvious.
I worked on a system using uboot which had custom hardware and was ported to arm and powerpc. There were two things that needed to be set up. First there is a place in u-boot where you can add board support to set registers and create handler functions for accessing RAM or FLASH on your device.
You then have to write similar support in the /arch part of the linux tree. I think keywords to google for are “board support”