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

Arm6 Raspberry PI Zero - PI 1 #10605

Open
olegsavelos opened this issue Mar 31, 2017 · 42 comments

Comments

@olegsavelos
Copy link

commented Mar 31, 2017

Is there any effort in place to bring support for the ARM6 platform?
I think the PI Zero is perfect platform for lots of different IOT projects and it would be quite a shame if there is no support for it.

@janvorli

This comment has been minimized.

Copy link
Member

commented Mar 31, 2017

No, there is no such effort. Probably the biggest problem that would need to be solved is that JIT doesn't support ARM6 Thumb instruction encoding.

@olegsavelos

This comment has been minimized.

Copy link
Author

commented Apr 3, 2017

So what should i expect ? Is there is any chance there will be commitment from the community or MS to bring Arm6 support or the only way is Mono ?

@danmosemsft danmosemsft added this to the Future milestone Apr 8, 2017
@alberk8

This comment has been minimized.

Copy link

commented May 17, 2017

I would be fantastic if there is support for ARMv6 cpu like Pi Zero and Pi Zero W. For some use cases there is no need to use a more powerful ARMv7 like Pi 3.

@pksorensen

This comment has been minimized.

Copy link

commented Sep 10, 2017

Would love to see ARMv6 supported :)

@ivpadim

This comment has been minimized.

Copy link

commented Nov 9, 2017

I agree you should include support for ARMV6. I want to run dotnet core in the Pi Zero right now I'm stuck with mono.

@jkotas jkotas added the port label Dec 2, 2017
@jklaus

This comment has been minimized.

Copy link

commented Dec 22, 2017

Any word on armv6 support? I have two pi zeros just waiting for a purpose..

@dcuccia

This comment has been minimized.

Copy link

commented Mar 26, 2018

@janvorli If the JIT is the problem, could we expect .Net Core on CoreRT to enable this?

@mikedn

This comment has been minimized.

Copy link
Contributor

commented Mar 26, 2018

@dcuccia CoreRT uses the same JIT compiler as CoreCLR so the problem remains.

@janvorli

This comment has been minimized.

Copy link
Member

commented Mar 26, 2018

@dcuccia, @mikedn the corert has a mode in which it compiles into C++, so that could solve the problem. However, I have lost track on how much stuff actually works in that mode. @jkotas can you please provide some details on that?

@jkotas

This comment has been minimized.

Copy link
Member

commented Mar 26, 2018

CppCodeGen runs simple programs (hello world, etc.). From https://github.com/dotnet/corert#platform-support : The big missing features are reflection, garbage collection, and exception handling.

I agree that CoreRT + CppCodeGen would a good option for platform reach.

@pksorensen

This comment has been minimized.

Copy link

commented Mar 26, 2018

@jkotas Do i read this correct - following the example from corert -> https://github.com/dotnet/corert/tree/master/samples/WebApi i can compile that with cppCodeGen and it can run on my rasp pi zero?

Or will it still fail due to only having ARMv6 ?

@jkotas

This comment has been minimized.

Copy link
Member

commented Mar 26, 2018

CppCodeGen is too incomplete for WebApi sample. Reflection and garbage collection would have to work first.

@pksorensen

This comment has been minimized.

Copy link

commented Mar 26, 2018

thanks @jkotas - but then a hello world and some basic IO/httpclient stuff will work?

@jkotas

This comment has been minimized.

Copy link
Member

commented Mar 26, 2018

httpclient is a pretty complex piece of code. You can give it a try, but I doubt that it would work with CppCodeGen today.

@nhuurnink

This comment has been minimized.

Copy link

commented Jul 26, 2018

Is there any intention of providing the support for ARMv6?

@metanoic

This comment has been minimized.

Copy link

commented Aug 11, 2018

I'm also very interested in seeing ARMv6 support. It seems that core is getting close, however I'm not qualified to judge well.

@shravan2x

This comment has been minimized.

Copy link

commented Aug 27, 2018

Adding my +1 for ARMv6 support. The price gap between rPi0w and rPi3 is $25, making the Pi Zero W far more useful for IoT projects where a lot of devices are used. Is it possible for us to reuse some code from Mono for this?

@DoctorWho8

This comment has been minimized.

Copy link

commented Aug 28, 2018

And I am also inclined to agree. There is an even bigger community that wants to run a much better Linux on the Pi, including the Pi Zero then just their community supported releases.

@metanoic

This comment has been minimized.

Copy link

commented Aug 28, 2018

This goes far beyond the Pi/Zero, for what it's worth. Supporting ARMv6 opens the doors to a vast array of microcontrollers. Having .NET available as a choice in that ecosystem would be of large significance, and would provide substantially more interest/coverage on the IoT aspects of CoreRT.

I would consider this step 1 in a sequence that would eventually see .NET as an option for programming in real-time operating systems. In other words, please don't simply equate ARMv6 support with Raspberry Pi Zero support, as it goes much farther than that in the immediate sense (many other MCU's that use that instruction set, and it's not going anywhere any time soon for low power/cost MCUs), and worlds beyond in the more abstract sense (e.g. seeing a CoreRT PAL target for FreeRTOS or similar).

@gornialberto

This comment has been minimized.

Copy link

commented Sep 20, 2018

@metanoic I fully agree with you. And this would help the porting of IoT Edge as well (Azure/iotedge#12)

We should have an IoT Platform in our hands for less than 10$ !

@digital-synapse

This comment has been minimized.

Copy link

commented Oct 14, 2018

+1

@Graveen

This comment has been minimized.

Copy link

commented Oct 15, 2018

Agree. Actually i'm stuck with Mono :)

@thesoftwarejedi

This comment has been minimized.

Copy link

commented Nov 3, 2018

Building some IoT stuff on armv6. Came here sad. Want to add my +1 to this issue.

@pmmcmullen94

This comment has been minimized.

Copy link

commented Dec 11, 2018

Anyone have any update on if there's progress being made on this? I just tried thinking it would work as it does on the pi3b+. I forgot that they're two different processors :(

@Fieel

This comment has been minimized.

Copy link

commented Dec 26, 2018

I have an old Raspberry Pi model B (armv6l CPU) and would love to run some dotnet core projects on it

@michaldobrodenka

This comment has been minimized.

Copy link

commented Dec 27, 2018

I have many mini servers based on ARMv6 CPU with Linux & Mono. Would like to switch them to .NET core.

@outruller

This comment has been minimized.

Copy link

commented Jan 23, 2019

Would also vote for armv6 support! +1

@apead

This comment has been minimized.

Copy link

commented Feb 9, 2019

+1 for armv6 support!

@geeknz

This comment has been minimized.

Copy link

commented Feb 20, 2019

+1 would be nice to have

@mms-

This comment has been minimized.

Copy link

commented Apr 29, 2019

YES!

@shand-obs

This comment has been minimized.

Copy link

commented Apr 30, 2019

Please!

@albertodall

This comment has been minimized.

Copy link

commented May 1, 2019

It would be really great!

@mms-

This comment has been minimized.

Copy link

commented May 11, 2019

Just curious, is there a technical reason why for example the Go runtime can compile to many architectures using the same compiler, yet for CoreCLR it seems a much longer process to add arch support? https://gist.github.com/asukakenji/f15ba7e588ac42795f421b48b8aede63

@janvorli

This comment has been minimized.

Copy link
Member

commented May 13, 2019

@mms- yes, there is a technical reason. Go is precompiled. It has two compilers - gc that supports only x86 (32 and 64 bit) and arm and gccgo that GCC as its backend. So whatever architectures are supported by GCC, they get them for free.
CoreCLR uses JIT, so we are on our own to add support for new architectures.

@mms-

This comment has been minimized.

Copy link

commented May 14, 2019

Makes perfect sense. Would be interesting if .Net Native could be expanded to enable this same pathway for .Net Core on these other architectures where JIT doesn't exist yet.

@mpearon

This comment has been minimized.

Copy link

commented Jun 27, 2019

Adding my vote for ARMv6

@stannynuytkens

This comment has been minimized.

Copy link

commented Jul 5, 2019

We need this!

@TwoTenPvP

This comment has been minimized.

Copy link

commented Jul 12, 2019

ARMv6 has a ton of appeal beyond Raspberry Pi Zero. Raspberry Pi Compute Module 1, for example, runs ARMv6 and it makes it much safer to rely on dotnet. Currently the Mono runtime has to be used which is fine, but proper dotnet support is something I really would like.

@danmosemsft

This comment has been minimized.

Copy link
Member

commented Jul 12, 2019

@NetGH

This comment has been minimized.

Copy link

commented Jul 21, 2019

ARMv6 support would be awesome.

@BryanCrotaz

This comment has been minimized.

Copy link

commented Jul 27, 2019

Can anyone explain why Core needs JIT and so can't run on Armv6, but Mono can? Surely Mono has JIT as it only needs IL code to run - that has to be JITted to the local CPU?

@janvorli

This comment has been minimized.

Copy link
Member

commented Jul 31, 2019

Can anyone explain why Core needs JIT and so can't run on Armv6, but Mono can?

Mono has a different JIT that supports Armv6. CoreCLR JIT doesn't support it. ARM has two instruction sets - ARM and THUMB. ARM v6 has THUMB, ARM v7 has THUMB2.
Mono JIT compiles everything into ARM instruction set, so it works on both Armv6 and v7, but that results in approximately 30% larger memory footprint of the code.
The differences between Armv7 THUMB2 and Armv6 THUMB are quite large and adding support for Armv6 will require quite a lot of changes to the CoreCLR JIT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
You can’t perform that action at this time.