Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RIOT-OS on emulated ARM device #3606

Closed
Lexandro92 opened this issue Aug 11, 2015 · 6 comments
Closed

RIOT-OS on emulated ARM device #3606

Lexandro92 opened this issue Aug 11, 2015 · 6 comments
Assignees
Labels
State: stale State: The issue / PR has no activity for >185 days Type: question The issue poses a question regarding usage of RIOT

Comments

@Lexandro92
Copy link

I am very new to embbeded systems or RIOT, I'm an intern at a small IT company and my boss gave me the following task:
Create an emulated ARM environment (any kind of ARM board is OK) and create a CoAP, 6lowpan client/server on these emulated boards. So far I used QEMU and I have been trying to just run the example hello-world program on a Cortex-M3 environment, Cortex-A9 and riotboard the last 2 in the hopes that these are all ARMv7 and maybe they are competible. None of tese worked.
I've seen #3377
does this mean that currently this is not possible? That we have to buy a board that is supported?

@OlegHahm OlegHahm added the Type: question The issue poses a question regarding usage of RIOT label Aug 11, 2015
@kaspar030
Copy link
Contributor

AFAIK noone has done this, but I'd be really looking forward to it.

Cortex-A9 and riotboard are ARM_v_7, while our supported ARM7 MCUs are ARM_v_4, don't let ARMs naming confuse you.

@OlegHahm
Copy link
Member

Hi @Lexandro92 and welcome to RIOT! Yes, you're right there's currently no out of the box support for a virtual Cortex-M* platform. I have no clue how much work it would actually be to implement #3377. Maybe @gebart or @phiros have more insights.

Regarding Cortex-A9 (ARMv7) platforms: there has been some initial work to port RIOT on boards like this (e.g. the RIoTboard (see #1411), but more as a proof-on-concept or research purposes. In general platforms that can run a proper Linux are considered mostly out-of-scope for RIOT.

@Lexandro92
Copy link
Author

Thank you for all the quick anwsers!
So I've talked with my boss and this is what I understand why we need emulation so badly.
We want a project incredibly similar to this:
http://watr.li/about/
But with the addition that we don't only want this network to communicate with the server board, we want it to communicate with a cloud. And my boss really wants the emulation, becouse he doesn't want it to work for just one type of ARM board (like in the link Raspberry Pi and Samr21) he wants it to work for all kinds of ARM boards, for example we might have a network that has Cortex-M4, Cortex-M3 and ARM7 sensors on it depending what their tasks are. We don't want a network thats sensors are just Samr21 type.
So is it possible to emulate any kind of ARM board that runs RIOT?

@Kijewski
Copy link
Contributor

Well, RIOT does work for a wide range of ARM boards already: https://github.com/RIOT-OS/RIOT/wiki/Family%3A-ARM. I do not quite see how a QEMU emulation would be helpful to you, since your idea should work right out of the box. Did you look into @watr-li's source code?

@jnohlgard
Copy link
Member

@Lexandro92 I do not understand why you need emulation as opposed to running the native target inside Linux. Simply getting RIOT to run inside QEMU will not make it possible to use external GPIOs or communication busses from inside the emulated environment.
My own use case for wanting the emulated QEMU Cortex M3 target is to be able to do continuous integration and test low level code in a controlled, automated manner.

Do you plan on running these applications solely on emulated hardware? or do you want the emulated machines only to use while developing to validate your design, (maybe the hardware is not even finished yet?) and then move the application to a physical board when the hardware has been manufactured?

For development of applications, algorithms and network communication you could start with the native platform, which runs RIOT as a Linux process (or OSX, or FreeBSD etc.), and then buy some evaluation boards which are similar to whatever your target hardware is (maybe you could find a board which uses the same CPU as your target board, for example). With RIOT, because of its hardware abstraction layer, it is quite easy to move application level code between different boards. Even the device drivers (external devices, not in-CPU modules) are abstracted to a point where it is possible to write a driver once and run it on many different boards.

@stale
Copy link

stale bot commented Aug 10, 2019

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If you want me to ignore this issue, please mark it with the "State: don't stale" label. Thank you for your contributions.

@stale stale bot added the State: stale State: The issue / PR has no activity for >185 days label Aug 10, 2019
@stale stale bot closed this as completed Sep 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
State: stale State: The issue / PR has no activity for >185 days Type: question The issue poses a question regarding usage of RIOT
Projects
None yet
Development

No branches or pull requests

5 participants