Quote:
Originally Posted by EmbeddedSteve
Any ideas???
|
Yes, I have, up to a point, but I haven't got a very clear understanding of the question, in a couple of ways.
Quote:
We are planning on using Embedded Linux on a new (ARM Based) device. The kernel will need to access various "hardware blocks"...
|
Do you have a memory manager and the normal, for Linux, style of virtual memory arrangement? Or do you have one of the simpler direct mapped memory arrangements? Both are possible (pretty sure that the ARM9s have MMUs and some of the low end ARMs don't; not sure exactly where the dividing line is).
If you have some hardware that is capable of remapping the memory, and the software that you are using is configured to use it, I am unclear why you would want to slow things down and make them more complex by mapping it again.
On the other hand, if you don't have the hardware or your software can't use it, you are stuck with whatever you do very directly in software. There is an overhead in doing this and its easy to do it badly. There are, though, some special cases in which it can be an almost trivial overhead, so it isn't necessarily all bad.
Quote:
an address space of ~ 2Mbytes (contains RAM and registers).
|
Now, this is the bit I really don't understand: the 'and registers' bit. Are you attempting to do something like duplicate the processor register set in normal memory? this doesn't have much meaning to me, except in the sense that, eg, an interrupt pushes register contents onto the stack, and the stack might be in external memory.
Back to the
Quote:
Do you have a memory manager...?
|
question. Virtual memory or similar arrangements really don't make that much sense, unless you have a memory hierarchy or you have more memory than addressing limitations of the processor allow you to have 'flat' access to at once. But, if there are address space limitations, paging blocks of memory in and out can be an efficient solution.