Go Down

Topic: Question about ARM Architecture and Software for it. (Read 434 times) previous topic - next topic

leds_are_cool

Hi

I have a question about the ARM architecture and software for it.(And maybe architectures in general)
If I would want to put Linux on a ARM board that has enough storage(RAM and SD Card), but there was no one who made Linux drivers for it yet.
And I would compile a Linux kernel for ARM, and load it into the memory of that ARM soc, and execute it.
Would it then run?(theoretically)
Yes I know I wouldn't have ANY way of knowing it would run, but would it run?

If so, then it wouldn't be much effort to create a TTY(serial) driver and a SD driver, right?

Which then would give me a working, very basic Linux installation right?

I don't know much about architectures and Linux, so that is why I am asking these question, I am just curious.(And maybe want to try it out on something, I have written a simple driver before)

Thanks!

Robin2

Two or three hours spent thinking and reading documentation solves most programming problems.

leds_are_cool

(Almost)Nothing, that's why it is in the general discussion part....

Robin2

(Almost)Nothing, that's why it is in the general discussion part....
Well IMHO the general discussion part should still be related to Arduinos - after all the Arduino folk are paying for the webserver.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

leds_are_cool

Well IMHO the general discussion part should still be related to Arduinos - after all the Arduino folk are paying for the webserver.

...R
It IS related to Arduino, there is the YUN that is ARM, the DUE, and those WIFI things.
I am interested in trying to compile a simple kernel myself, and I am asking questions related to it.
And the sub forum says I can talk about whatever I want, and I am paying for the server too, I buy Arduino products after all.


Hi

I have a question about the ARM architecture and software for it.(And maybe architectures in general)
If I would want to put Linux on a ARM board that has enough storage(RAM and SD Card), but there was no one who made Linux drivers for it yet.
And I would compile a Linux kernel for ARM, and load it into the memory of that ARM soc, and execute it.
Would it then run?(theoretically)
Yes I know I wouldn't have ANY way of knowing it would run, but would it run?

If so, then it wouldn't be much effort to create a TTY(serial) driver and a SD driver, right?

Which then would give me a working, very basic Linux installation right?

I don't know much about architectures and Linux, so that is why I am asking these question, I am just curious.(And maybe want to try it out on something, I have written a simple driver before)

Thanks!

Is there maybe someone who knows this or some tutorial on it(Probably not, but I can try)?


Robin2

There are Forum sections for the Yun and the Due.

The Yun comes with a form of Linux - can't remember what it is called. I wasted money on a Yun way back when and it has been at the bottom of a drawer most of the time since then.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

westfw

Quote
If I would want to put Linux on a ARM board that has enough storage(RAM and SD Card), but there was no one who made Linux drivers for it yet.
And I would compile a Linux kernel for ARM, and load it into the memory of that ARM soc, and execute it.
Would it then run?(theoretically)
First, you would need code (essentially a driver) to configure the relatively complex memory paging and mapping that linux requires (which, BTW, doesn't exist on any of the Cortex M processors that are common to Arduino-like boards.)  One doesn't usually think of RAM as requiring a driver; but the memory interface of a modern linux-capeable CPU can be a very complex thing.  (There may be a subset of the linux kernel that runs before memory initialization.  But probably not much.)

leds_are_cool

First, you would need code (essentially a driver) to configure the relatively complex memory paging and mapping that linux requires (which, BTW, doesn't exist on any of the Cortex M processors that are common to Arduino-like boards.)  One doesn't usually think of RAM as requiring a driver; but the memory interface of a modern linux-capeable CPU can be a very complex thing.  (There may be a subset of the linux kernel that runs before memory initialization.  But probably not much.)

So, memory isn't the same on every ARM cpu? Is it also be possible to have something like U-Boot initiate the memory?
I though every memory on the ARM was the same, any examples on memory paging I could port over?

Robin2

So, memory isn't the same on every ARM cpu? Is it also be possible to have something like U-Boot initiate the memory?
I though every memory on the ARM was the same, any examples on memory paging I could port over?
Am I weird (or just a crusty old curmudgeon) because I find it strange when people want to embark on a very complex project and then don't appear to have done the most basic research (such as reading datasheets) about the hardware they are thinking of using?

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

leds_are_cool

Am I weird (or just a crusty old curmudgeon) because I find it strange when people want to embark on a very complex project and then don't appear to have done the most basic research (such as reading datasheets) about the hardware they are thinking of using?

...R
Why would I've done that if I thought it was all the same?
I think it is a bit weird though, I just want to know a few questions about the ARM architecture and you keep giving replies that barely or don't help.

SO if I am right, instructions are the same for every ARM CPU?
The difference is just that some have another/different memory controller (unit).

westfw

Quote
memory isn't the same on every ARM cpu? Is it also be possible to have something like U-Boot initiate the memory?
I though every memory on the ARM was the same, any examples on memory paging I could port over?
Actually, I have very little idea of how the ARM MMUs work, or the linux kernel, either.
AFAIK, memory paging (mapping virtual addresses onto arbitrary physical addresses) is fundamental to linux, even at the kernel level.
The Cortex-M processors don't have an MMU at all; they only have MPUs (Memory Protection Units.)  So no linux on any Cortex-M.  The Cortex A processors DO have an MMU, and it's part of the ARM-provided core, so there is probably a lot of commonality from one ARM Cortex A chip to another.   What I'm NOT sure about is how similar a Cortex A5 is to a Cortex A8 (and etc.)  And I'm not sure how common the external memory controllers are (AFAIK, there are no ARM chips with enough internal RAM to support linux, so you're almost always interfacing to some external memory chip, or module.)  (The chips used on Raspberry Pi and Beaglebone have multiple dice inside the single chip package...)
Quote
instructions are the same for every ARM CPU?
Nope.  There might be a subset of ARM Thumb instructions that will run on every ARM CPU, but the "more advanced" chips have many more instructions, plus co-processors and so on.
For example, CM0 lacks a divide instruction, and doesn't support most of the 32bit Thumb-2 instructions.

Go Up