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.