.NET Core 对龙芯的支持情况和对.NETCore开发嵌入式的思考

简介: .NET Core 对龙芯的支持情况和对.NETCore开发嵌入式的思考

一,遗憾的尝试


前些天看到了张队公众推送的《Asp.Net终于可以在龙芯服务器上运行啦:Jexus成功完成对国产系列CPU的适配》,联想到上一周与朋友在龙芯捣鼓 .NET Core,就想写一下关于 .NET Core 在龙芯下的资料。


Jexus Web Server 能够在龙芯服务器上跑,但是 ASP.NET 呢?.NET Core 呢?安装什么版本的 Mono ?Jexus 作者的文章表达有点模糊呀~

上一周与朋友在龙芯上面为了部署 .NET 项目,颇费心机。朋友公司中标政府项目,开发好 .NET Core 做的项目后,才发现要部署的服务器是龙芯的,.NET Core 无法在上面运行。


服务器有什么有 Mono 4.x,可以创建简单的 Proparm.cs ,编译出程序,使用 mono xx.exe 运行,可是把项目放进去编译不出来~想编译安装 Mono 6.x 也不行,中间有些过程报错。


.NET Core 自然不用想了,完全无法编译,通过 Google 查询资料,要重写 C++ 部分(移植),才能在 龙芯 下编译出 CoreCLR。

官方 CoreCLR 源码库,可以看到一些脚本和编译工具链。

https://github.com/dotnet/coreclr/

RISV-C 是精简指令集,MIPS 是指 基于 RISC-V 的 CPU 架构,龙芯服务器使用 MIPS 架构。


最终,无法部署 .NET 软件,朋友公司改用 Java 开发。。。

之前笔者为了在 Armel 的 CPU 下运行 .NET Core ,花了很多时间手动编译 .NET Core,最终还是失败。我将编译过程详细写了一篇文章,地址《瞎折腾实录:构建 Armel 版本的 .NET Core 教程和资料资源》。


二,.NET Core在嵌入式下的几点不足


18年7月张队来我校组织了大湾区 .NET 交流会,从那时起开始学习 .NET ,19 年三月月份进入敢为实习转正至此。

使用 .NET Core 开发半年的时间里,在嵌入式开发中,我个人总结当前 .NET Core 在嵌入式领域有几个问题/建议。


1,不支持前几年的CPU

.NET Core 无法在树莓派 Zero上运行(Arm v6);

无法在华为海思A9芯片上运行(Armel Armv7);

这两种芯片虽说是几年前出的芯片,但是 .NET Core 大张旗鼓的说要搞 IoT,却不兼容旧一些的 CPU,目前很多旧式设备依然会在未来一段时间内是主流的存在 。

微软官方也说了:


Note: .NET Core 2.1 is supported on Raspberry Pi 2+. It isn’t supported on the Pi Zero or other devices that use an ARMv6 chip. .NET Core requires ARMv7 or ARMv8 chips, like the ARM Cortex-A53.


Arm 方面的支持还是不够广。


2,测试的硬件设备较少

官方对嵌入式设备的测试,主要在 树莓派 2 / 3,还有很多开发板没有测试~


3,支持兼容的系统版本较少

.NET Core 支持很多 Linux 系统,但是对应这些系统的支持,都是以最新版本的系统为主,例如 .NET Core 3.0 在Ubuntu 上是支持 16.x、18.x,14.x 和 17.x 被无情的抛弃了。

.NET Core 3.0 支持的系统如下:

https://github.com/dotnet/core/blob/master/release-notes/3.0/3.0-supported-os.md


4,体积依然太大

对于嵌入式开发来说, .NET Core 的体积依然太大,.NET Core 3.0 也拯救不了。。。哪怕只有一行 Hello World,也要 70MB+ 以上。


5,依赖库比较伤脑筋

经常会出现 ICU、libssl、gcc 等依赖库版本不一致或没有安装这些库时的报错信息,石头哥曾经被这些问题搞得掉头发。


三,.NET Core 龙芯移植的进展和资料


根据大佬们的移植,在 11 月 9 号时,已经实现了 在龙芯上面运行 .NET Core 的 Hello World 实例,


The code base was upgraded to 3.0. Hello World and serveral tests in coreclr can run on MIPS64 now.


这是对于 CoreCLR 的移植,还有很多问题等待大神解决。

对于 .NET Core 在 MIPS 上的移植讨论,可以到 Issue 查看

https://github.com/dotnet/coreclr/issues/969#issuecomment-550129085

不过,微软官方目前没有移植计划,只能靠社区去完成了。


Microsoft currently has no plans or work in progress to support MIPS. Of course, we would be willing to accept external contributions towards that goal as appropriate. Note that it is, certainly, a significant amount of work to port .NET Core to a new platform.


还有另一个大神的作品

https://github.com/reignstudios/IL2X

This project will focus on translating .NET IL for non-supported .NET targets. Portibility is a huge focus.

  • .NET Standard compatibility
  • Native C performance
  • C89: modern, legacy and embedded platforms (x86, MIPS, SPARK, RISC-V, PPC, AVR, etc)
  • CC65: 6502 platforms (Atari, C64, NES, Apple II, etc) [CS2X may be better suited]]
  • SDCC: Many targets (ColecoVision, etc) [CS2X may be better suited]
  • Assembly: CP1610 (Intellivision) [CS2X may be better suited]]
  • Retarget: Custom assembly targets via plugin system (FPGA CPU, 16bit bytes, etc)
  • Custom Standard lib(s) for various targets.
  • Documentation
相关文章
|
7月前
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
5月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
177 0
|
9月前
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
144 9
|
9月前
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
119 8
|
9月前
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
120 7
|
9月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
124 6
|
9月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
120 6
|
9月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
120 6
|
9月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
211 5
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」