专栏中心

EEPW首页 > 专栏 > 嵌入式Linux下运行 DotNet 应用简单示例

嵌入式Linux下运行 DotNet 应用简单示例

发布人:toradex 时间:2023-11-17 来源:工程师 发布文章

By Toradex秦海

1). 简介

嵌入式 Linux 逐渐成为嵌入式设备的主流操作系统,但是应用开发工程师很多更熟悉 Microsoft C# 开发,得益于 Microsoft .Net Framework 的跨平台支持,本文就简单示例在 Embedded Linux 环境运行 .NET 应用。

 

本文所演示的平台来自于Toradex Apalis iMX8 嵌入式平台,基于 NXP iMX8 系列 ARM 处理器,核心为 Cortex-A52/A53 

 

 

2). 硬件准备

a).  Apalis iMX8 ARM 核心版配合 Apalis Eva Board 载板,并连接调试串口和网口以便测试。

 

 

3). 部署 Microsoft .Net Framework 运行库到 Embedded Linux BSP

a). Apalis iMX8 模块标准 Ycoto Linux BSP 中默认没有包含 Microsoft .Net Framework 相关 runtime 运行库支持,可以参考这里 Microsoft 官方文档通过 script 方式安装,不过为了方便管理和部署,本文演示通过 Ycoto Project/Openembedded 编译方式来添加相关库文件,Ycoto Project .Net Framework runtime 由下面 meta-dotnet-core layer 来提供,详细说明可以参考项目 README 的说明。

 

https://github.com/RDunkley/meta-dotnet-core

 

b). 首先需要在 Linux编译开发主机部署 Ycoto 编译环境,然后参考如下步骤部署。

./ 下载 meta-dotnet-core layer

---------------------------------------

$ cd .../oe_core/layers

$ git clone https://github.com/RDunkley/meta-dotnet-core.git

---------------------------------------

 

./ 修改 build/conf/bblayer.conf 文件添加相关 layer

---------------------------------------

--- a/build/conf/bblayers.conf  2023-03-30 11:13:22.946533642 +0800

+++ b/build/conf/bblayers.conf 2023-11-17 16:03:01.666129480 +0800

@@ -35,6 +35,7 @@

   ${TOPDIR}/../layers/meta-freescale-distro \

   ${TOPDIR}/../layers/meta-toradex-demos \

   ${TOPDIR}/../layers/meta-qt5 \

+  ${TOPDIR}/../layers/meta-dotnet-core \

   \

   \

   ${TOPDIR}/../layers/meta-toradex-distro \

---------------------------------------

 

./修改 build/conf/local.conf 文件,增加 .NET 相关库组件,如果需要可以选择指定 .NET runtime 版本,本文编译测试没有指定,默认是支持的最高版本,当前是 7.0.11 版本

---------------------------------------

# add dotnet runtime

IMAGE_INSTALL:append = " dotnet-core"

# Optional - specify dotnet runtime version

# PREFERRED_VERSION_dotnet-core = "6.0.0"

---------------------------------------

 

当然也可以选择添加 ASP .NET (aspnet-core) Visual Studio Remote Debugger (vsdbg) 组件,需要注意 ASP .NET runtime 会包含 .NET runtime,因此两者不要同时添加

---------------------------------------

# add asp dotnet runtime

IMAGE_INSTALL:append = " aspnet-core"

# add VS remote debugger

IMAGE_INSTALL:append = " vsdbg"

---------------------------------------

 

./ 重新编译生成 Ycoto Linux BSP Image

---------------------------------------

$ MACHINE="apalis-imx8" PARALLEL_MAKE="-j 4" BB_NUMBER_THREADS="4" bitbake tdx-reference-multimedia-image

---------------------------------------

 

c). 参考这里的说明将上述修改下重新编译生成的 Ycoto Linux Image 通过 Toradex Easy Installer 更新到 Apalis iMX8 模块。

 

 

4). 生成 .NET 7.0 Console 测试应用

a). 可以通过 Virtual Studio 或者 Virtual Studio Code IDE 来生成这个 Hello World Console 应用,本文参考这里的说明使用 VS Code来生成,VS Code Terminal 操作如下

---------------------------------------

$ dotnet --list-sdks

7.0.114 [/usr/lib/dotnet/sdk]

 

$ dotnet new console -f net7.0

欢迎使用 .NET 7.0!

---------------------

SDK 版本: 7.0.114

----------------

已安装 ASP.NET Core HTTPS 开发证书。

若要信任该证书,请运行 "dotnet dev-certs https --trust" (仅限 Windows macOS)

了解 HTTPS: https://aka.ms/dotnet-https

----------------

编写你的第一个应用: https://aka.ms/dotnet-hello-world

查找新增功能: https://aka.ms/dotnet-whats-new

浏览文档: https://aka.ms/dotnet-docs

GitHub 上报告问题和查找源: https://github.com/dotnet/core

使用 "dotnet --help" 查看可用命令或访问: https://aka.ms/dotnet-cli

--------------------------------------------------------------------------------------

已成功创建模板“控制台应用”。

正在处理创建后操作...

正在还原 /home/simon/local/project/vscode/DotNetExample/DotNetExample.csproj:

  Determining projects to restore...

  Restored /home/simon/local/project/vscode/DotNetExample/DotNetExample.csproj (in 95 ms).

已成功还原。

 

$ dotnet run

Hello, World!

 

$ dotnet publish

MSBuild version 17.4.8+6918b863a for .NET

  Determining projects to restore...

  All projects are up-to-date for restore.

  DotNetExample -> /home/simon/local/project/vscode/DotNetExample/bin/Debug/net7.0/DotNetExample.dll

  DotNetExample -> /home/simon/local/project/vscode/DotNetExample/bin/Debug/net7.0/publish/

---------------------------------------

 

 

5). Apalis iMX8 Embedded Linux 下测试 .NET 7.0 Console 应用

a). 通过 scp publish .NET 7.0 应用传输到 Apalis iMX8 模块

./ Apalis iMX8 测试上面章节3 部署的 .NET runtime 环境

---------------------------------------

root@apalis-imx8-06738378:~# dotnet --info

Host:

  Version:      7.0.11

  Architecture: arm64

  Commit:       ecb34f85ec

 

.NET SDKs installed:

  No SDKs were found.

 

.NET runtimes installed:

  Microsoft.NETCore.App 7.0.11 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

 

Other architectures found:

  None

 

Environment variables:

  Not set

 

global.json file:

  Not found

 

Learn more:

  https://aka.ms/dotnet/info

 

Download .NET:

  https://aka.ms/dotnet/download

---------------------------------------

 

./ 将示例 .NET 应用从开发主机复制到 Apalis iMX8

---------------------------------------

### create app folder on Apalis iMX8 ###

root@apalis-imx8-06738378:~# cd ~

root@apalis-imx8-06738378:~# mkdir DotNetExample

### scp published app to apalis iMX8 ###

$ scp -r /home/simon/local/project/vscode/DotNetExample/bin/Debug/net7.0/publish/* root@<apalis_imx8_ipaddress>:/home/root/DotNetExample

---------------------------------------

 

b). 运行测试应用

---------------------------------------

root@apalis-imx8-06738378:~# cd DotNetExample/

root@apalis-imx8-06738378:~/DotNetExample# dotnet DotNetExample.dll

Hello, World!

---------------------------------------

 

 

6). 总结

本文基于嵌入式 Linux 简单演示了 .NET runtime 的部署和示例应用运行。


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: ARM Linux .NET Microsoft NXP iMX8 Toradex Apalis

相关推荐

ARM 展示小型低功耗上网本样品

视频 2009-03-16

ARM嵌入式系统开发:软件设计与优化

Arm CEO:AI智能体将推动CPU核心数升至 512

网络与存储 2026-05-11

WinCE+ARM开发及关键技术 下

视频 2009-10-22

ARM嵌入式软件编程经验谈

WinCE+ARM开发及关键技术 上

视频 2009-10-22

边缘 AI 加速的 Arm Cortex‑M0+ MCU 如何为电子产品注入更强智能

ARM嵌入式系统开发

arm学习资料

资源下载 2007-12-03

汽车暖通空调(HVAC)控制参考设计

ARM Axion 处理器加持谷歌第八代 TPU,云端全面转向智能体 AI 架构

Arm财报过山车:营收创纪录,股价跌7%

Arm遭遇监管危机:FTC针对其技术授权启动反垄断调查

2026-05-18

最新ARM技术和嵌入式技术发展动态 中

视频 2009-10-22

ARM开发详解

走进智能工厂 为何智能诊断是持续运行的关键

面向ARM系统集成的FPGA片上系统解决方案

​Arm 宣布推出 Performix,为开发者带来 AI 时代必备的可扩展性能

2026-05-07

Arm宣布推出Performix,为开发者带来 AI 时代必备的可扩展性能

最新ARM技术和嵌入式技术发展动态 下

视频 2009-10-22
更多 培训课堂
更多 焦点
更多 视频

技术专区