64bit and multi core support

Dear RIOT team,

Thanks for RIOT I personally think it is GREAT!

We are considering using RIOT on our ARM v8 64bit multicore (SMP) hardware. The platform requires 64bit memory addressing (DDR is at higher than 32bit address range). We would appreciate if you could help us understand if using RIOT is feasible by answering below questions:

  1. Does RIOT support 64bit memory addressing? For example if I build “hello-world” sample project on native platform then 32bit binary generated. Is it possible to build it for 64bit? Have this been tested?

  2. Does RIOT support multi core? I.e. scheduling threads on different cores, synchronizing threads running on different cores? Have this been done before?

Best Regards,

Alex

Hi,

Hi,

forwarding to Alex, because he has not yet subscribed AFAIK.

Alex, please subscribe to devel in order to get the replies.

Cheers, Oleg

Hi Oleg,

I really appreciate you forwarding this! I have just subscribed for email list.

Thanks again,

Alex

Hi Kaspar,

Yeah this is very interesting project!:slight_smile: It is custom board with multi core ARMv8 (64bit) CPU (SMP system). We need some simple, very minimalistic OS we could use for hardware testing and bring up. Main use case would be sequential HW testing (e.g. registers read/write, interrupts handling, calls to trust zone, etc.) on multiple cores. We also look at minimizing effort needed to port this OS if newer hardware is available.

In addition, we are very excited that C++ is available on RIOT!

We do consider using Linux. However, we would prefer something basic.

So again this is the list of questions, we hope you could help us answer :wink:

  1. Does RIOT support 64bit memory addressing? For example if I build “hello-world” sample project on native platform then 32bit binary generated. Is it possible to build it for 64bit? Have this been tested?

  2. Does RIOT support multi core? I.e. scheduling threads on different cores, synchronizing threads running on different cores? Have this been done before?

  3. If using C++, can we use exceptions? Is it possible to use C++11 if compiler supports it?

Best Regards,

Alex

Hi Alex,

  1. If using C++, can we use exceptions? Is it possible to use C++11 if compiler supports it?

About the C++ part, could you tell me what you intend to do with C++?

If you want to port RIOT using C++ you may find some troubles when try to compile RIOT’s code with C++ compiler. The C++ support in RIOT’s build system was mainly designed to support only the user application, which could be written in C++, to build with RIOT (which is written in C). Thus, you might need to modify the build system somehow to build your C++ code (which is a part of the OS not the application code) and combine with other parts of RIOT. Exceptions and C++11 should be available if you successfully combine C++ port code with RIOT but no guarantee about this.

If you want use C++ for the application, in general, we didn’t hard-code to eliminate exceptions so you’re free to add exceptions to your compiling flags. I have been using C++11 on Cortex-M3 for a while so it should be fine if compiler can support it. But I can’t guarantee anythings again, because development an OS on ARMv8 is quite different from the micro-controller world which RIOT mainly designed for, AFAIK. If you’re successful with your port then it will be a very interesting one.

Cheers, Nhat.

Hi Alex,

RIOT does not offer either.

When I first wrote the native platform, I tried to support 64 bit but there were so many issues that I just chose to ignore it as there were no 64 bit platforms on the roadmap anyways. Since then two things changed: First, much work has gone into making integer types more explicit. Second, the native platform is relatively stable and offers valgrind support, so I think it could be used to make RIOT 64 bit safe relatively quickly.

As for the scheduler - I'm not aware of any attempts at multicore support, but RIOT is very modular, so the scheduler could be changed/replaced with little trouble.

Cheers, Ludwig

Hi Ludwig, Nhat,

Thanks a lot for your answers! It is much clearer now. We will estimate how difficult it would be to adopt RIOT to our use case.

It is very attractive that RIOT is modular, supports C++ and aims to POSIX compatibility.

I just wanted to thank you all again.

Regards,

Alex