Charles Lockhart wrote:
Sorry if this is unclear, I'm trying to figure out how to ask the question.

This is primarily in regards to an embedded device, but I don't know the answer for the "standard" system either.

Say you've got a board that has a cpu on it that is supported by the Linux kernel. And you have the tool chain for compiling for that cpu. And the kernel source, and the source for the whole standard distribution.

When compiling the kernel, what board specific things would you need to know? What wouldn't be in the kernel?

I was going throught the "linux from scratch" book, and went through the whole process and built the distribution one peice at a time. And I got to wondering how hard it would be to do this for an embedded platform. We look at embedded systems all the time and don't use them because the distribution is usually monta vista's hard-hat or something similar, and we don't want to shell out the bucks for their licensing. But if hardhat is already runnable on it, and the cpu is supported by either the main kernel distro or by the ppc kernel distro, how hard could it be? But when I say that "how hard could it be?" in a different tone it sounds pretty ominous.

Any feedback?

Thanks,

-Charles

Well, it kinda depends on what you're trying to do. If you could give info about just how "embedded" the board is (basically, give some sort of measure as to how similar it is to it's big cousin computers). Also, knowing just what you're trying to do is vital.

For example, the base userspace apps (like your shell, login utils, etc) tend to be pretty quick as long as they've already been ported to your archetecture (basically, clean up all those compiler "warnings" that don't mean anythign as long as you run on x86, but suddenly become errors when the size of things start changing).

The kernel is a different story. As long as it's been ported to something similar, it's generally not to tough (assuming basic kernel programming knowledge and familiararity with the linux kernel, both of which I lack :) The challenge arises in actually getting it to do anything useful. You'll have to know about all the things on the system that need to be turned on and off and configured.

As an example, porting to the kernel to the iPAQ handheld (ARM based) required lots of "inside knowledge" from Compaq/HP researches about the GPIO routings and the command set for the micro.

Of course, getting the kernel to do basic things (like put some startup messages on the screen) is one thing, getting it to even start up at all is quite another. Of course you'll need a boot loader of some kind. This generally requires nitty-gritty info about things like the memory map, memory timings, how to configure things like DRAM controllers, etc. Generally, you'll need to do some assembly programming here, but not much.

Basically, porting the kernel to a new board on a supported archetecture isn't overwhelmingly tough, but you'll need to know quite a bit about the board to accomplish the task. There's probably also quite a bit of stuff I've glossed over as I'm not a kernel programmer, I just know some people who are :)

--MonMotha

Reply via email to