In this era of everything interconnected, embedded development is becoming increasingly popular. .NET, a powerful and cross-platform development framework introduced by Microsoft, is gradually making its mark in the embedded field as well.
So how to use.NET on Forlinx OKMX6UL series development board to make your embedded development journey more colorful!
- Scope and Preparation
This article primarily targets the Folinx OKMX6UL series development boards, with Linux4.1.15. Other platforms can also refer to this it, but may need to make appropriate adjustments according to the actual circumstances.
2. .NET Installation
(1) Download the .NET compressed package from the official website.
https://dotnet.microsoft.com/en-us/download/dotnet/6.0
For 32-bit processors, please download the arm32 compressed package;
For 64-bit processors, please download the arm64 compressed package;
Note: The following instructions are based on .NET V6.0.415 as an example.
(2) Extract the Compressed Package
Extract the compressed package to the root user directory
mkdir /home/root/.dotnet
tar -xvf dotnet-sdk-6.0.415-linux-arm.tar.gz -C /home/root/.dotnet
After decompression, the following file is obtained.
root@fl-imx6ull:~# ls .dotnet/
LICENSE.txt dotnet packs sdk-manifests templates
ThirdPartyNotices.txt host sdk shared
(3) Configure Environment Variables
To make the system recognize the .NET commands,please configure the environment variables.
vi /etc/profile
Add:
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$HOME/.dotnet:$HOME/.dotnet/tools
Re-run/etc/profile to validate the environment variable
root@fl-imx6ull:~# source /etc/profile
Check environment variables
root@fl-imx6ull:~# export
export DOTNET_ROOT="/home/root/.dotnet"
......
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/root/.dotnet:/home/root/.dotnet/tools"
......
3. .NET Usage in Practice
Check the Version
First, you can view the version of .NET and related information by using the command dotnet - info.
root@fl-imx6ull:~# dotnet --info
.NET SDK (reflecting any global.json):
Version: 6.0.415
Commit: 6963d2d1e0
Runtime Environment:
OS Name: Linux
OS Version:
OS Platform: Linux
RID: linux-arm
Base Path: /home/root/.dotnet/sdk/6.0.415/
global.json file:
Not found
Host:
Version: 6.0.23
Architecture: arm
Commit: e0f0de876a
.NET SDKs installed:
6.0.415 [/home/root/.dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.23 [/home/root/.dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.23 [/home/root/.dotnet/shared/Microsoft.NETCore.App]
Download .NET:
https://aka.ms/dotnet-download
Learn about .NET Runtimes and SDKs:
https://aka.ms/dotnet/runtimes-sdk-info
First Test Application
Create a.NET project
root@fl-imx6ull:~# dotnet new console -o sample1
The template "Console App" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on /home/root/sample1/sample1.csproj...
Determining projects to restore...
Restored /home/root/sample1/sample1.csproj (in 1.81 sec).
Restore succeeded.
You can see the following files under the sample 1 path.
root@fl-imx6ull:~# ls sample1/
Program.cs obj sample1.csproj
Among them, the source code is stored in the Program. CS.
root@fl-imx6ull:~/sample1# cat Program.cs
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
This part is written in C.
Running
root@fl-imx6ull:~# cd sample1/
root@fl-imx6ull:~/sample1# dotnet run
Hello, World!
Compile the Application
Create a project
root@fl-imx6ull:~# dotnet new console -o sample1
Compilation
root@fl-imx6ull:~/sample1# dotnet build
MSBuild version 17.3.2+561848881 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
sample1 -> /home/root/sample1/bin/Debug/net6.0/sample1.dll
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:27.31
Generate after compilation
bin/Debug/net6.0/sample1
Execute the file
root@fl-imx6ull:~/sample1# ./bin/Debug/net6.0/sample1
Hello, World!
Note: .NET uses libgpiod for GPIO operations, so if want to manipulate the GPIO on the board using .NET, ensure that the kernel version supports gpiod.
- Considerations and Limitations
While .NET can run on the OKMX6UL series development boards, there are some limitations to be aware of:
Performance Issues: Due to the lower CPU frequency (528MHz) on the OKMX6UL-C, .NET cannot run smoothly. OKMX6ULL-S and OKMX6ULL-C, with slightly higher frequencies (792MHz), can only barely run .NET. If high performance is required, consider using a more powerful development board.
Kernel Version Issues: OKMX6ULL series uses Linux 4.1.15, which may prevent the use of some high-version kernel interfaces in .NET, such as libgpiod. If need to use these interfaces, consider upgrading the kernel or finding alternative solutions.
Combining OKMX6UL series development boards with .NET provides embedded developers with a new exploration platform. It can make full use of the cross-platform advantages and powerful functions of.NET to develop unique embedded applications.
Top comments (0)