KSociety.SharpCubeProgrammer
0.2.59
See the version list below for details.
dotnet add package KSociety.SharpCubeProgrammer --version 0.2.59
NuGet\Install-Package KSociety.SharpCubeProgrammer -Version 0.2.59
<PackageReference Include="KSociety.SharpCubeProgrammer" Version="0.2.59" />
paket add KSociety.SharpCubeProgrammer --version 0.2.59
#r "nuget: KSociety.SharpCubeProgrammer, 0.2.59"
// Install KSociety.SharpCubeProgrammer as a Cake Addin #addin nuget:?package=KSociety.SharpCubeProgrammer&version=0.2.59 // Install KSociety.SharpCubeProgrammer as a Cake Tool #tool nuget:?package=KSociety.SharpCubeProgrammer&version=0.2.59
KSociety.SharpCubeProgrammer Home
KSociety.SharpCubeProgrammer
KSociety.SharpCubeProgrammer is a wrapper for CubeProgrammer_API v2.15.0.
It makes use of several 3rd party tools:
- STM32 Cube Programmer You can find the source, licensing information and documentation here.
Introduction
This is a C# wrapper for STM32 CubeProgrammer_API v2.15.0 (not fully tested). This package does not contain any C/C++ runtimes (MSVC), and is meant to run on Windows operating systems only (for now). Please make sure you have updated the firmware of your ST-LINK V2 / V3, you can do this using STM32CubeProgrammer. The STM32 CubeProgrammer_API is a C-library, created by ST for ST-Link access to micro-controllers for the purpose of flash downloads or general memory access. The ST-Link drivers is required, and can be downloaded from st.com and installed (STSW-LINK009). This has been tested on Windows 10, you don't need to install STM32CubeProgrammer.
KSociety.SharpCubeProgrammer
STM32CubeProgrammer_API C# wrapper, the first wrapper for C#. Any suggestions are welcome.
Get Packages
You can get KSociety.SharpCubeProgrammer by grabbing the latest NuGet package.
Currently supported features
STLINK functions
- GetStLinkList
- GetStLinkEnumerationList
- ConnectStLink
- Reset
Bootloader functions
- GetDfuDeviceList
- ConnectDfuBootloader
General purposes functions
- SetDisplayCallbacks
- SetVerbosityLevel
- CheckDeviceConnection
- GetDeviceGeneralInf
- ReadMemory
- WriteMemory
- EditSector
- DownloadFile
- Execute
- MassErase
- SectorErase
- ReadUnprotect
- TzenRegression (does not exist)
- GetTargetInterfaceType
- GetCancelPointer
- FileOpen
- Verify
- VerifyMemory
- SaveFileToFile
- SaveMemoryToFile
- Disconnect
- DeleteInterfaceList
- AutomaticMode
- GetStorageStructure
Option Bytes functions
- SendOptionBytesCmd
- InitOptionBytesInterface
- FastRomInitOptionBytesInterface
- ObDisplay
Loaders functions
- SetLoadersPath
- SetExternalLoaderPath
- GetExternalLoaders
- RemoveExternalLoader
- DeleteLoaders
STM32WB specific functions
- GetUID64
- FirmwareDelete
- FirmwareUpgrade
- StartWirelessStack
- UpdateAuthKey
- AuthKeyLock
- WriteUserKey
- AntiRollBack
- StartFus
- UnlockChip
STM32MP specific functions
- ProgramSsp
STM32 HSM specific functions
- GetHsmFirmwareID
- GetHsmCounter
- GetHsmState
- GetHsmVersion
- GetHsmType
- GetHsmLicense
Prerequisites
- Visual Studio 2022 (17.8.3 or higher) with the following installed:
Workloads |
---|
.NET desktop development |
Desktop development with C++ |
Individual components |
---|
MSVC v143 - VS 2022 C++ x64/x86 |
Get Started
Examples include the QuickStart project, is a very basic example.
- Creates a new instance of the CharpCubeProgrammer class:
var cubeProgrammerApi = new SharpCubeProgrammer.CubeProgrammerApi();
- Set up the logging system:
var displayCallBacks = new DisplayCallBacks
{
InitProgressBar = InitProgressBar,
LogMessage = ReceiveMessage,
LoadBar = ProgressBarUpdate
};
cubeProgrammerApi.SetDisplayCallbacks(displayCallBacks);
cubeProgrammerApi.SetVerbosityLevel(CubeProgrammerVerbosityLevel.CubeprogrammerVerLevelDebug);
- Retrieves all ST-LINK connected probes:
var stLinkList = cubeProgrammerApi.GetStLinkEnumerationList();
- Connect:
if (stLinkList.Any())
{
var stLink = stLinkList.First();
stLink.ConnectionMode = DebugConnectionMode.UnderResetMode;
stLink.Shared = 0;
var connectionResult = cubeProgrammerApi.ConnectStLink(stLink);
//...
}
else
{
Console.WriteLine("No ST-Link found!");
}
- Retrieve general info:
if (connectionResult.Equals(CubeProgrammerError.CubeprogrammerNoError))
{
var generalInfo = cubeProgrammerApi.GetDeviceGeneralInf();
if (generalInfo != null)
{
Console.WriteLine("INFO: \n" +
"Board: {0} \n" +
"Bootloader Version: {1} \n" +
"Cpu: {2} \n" +
"Description: {3} \n" +
"DeviceId: {4} \n" +
"FlashSize: {5} \n" +
"RevisionId: {6} \n" +
"Name: {7} \n" +
"Series: {8} \n" +
"Type: {9}",
generalInfo.Value.Board,
generalInfo.Value.BootloaderVersion,
generalInfo.Value.Cpu,
generalInfo.Value.Description,
generalInfo.Value.DeviceId,
generalInfo.Value.FlashSize,
generalInfo.Value.RevisionId,
generalInfo.Value.Name,
generalInfo.Value.Series,
generalInfo.Value.Type);
}
}
- Send option bytes:
var sendOptionBytesCmd = cubeProgrammerApi.SendOptionBytesCmd("-ob RDP=170");
- Erase:
var massErase = cubeProgrammerApi.MassErase("");
- Flash:
var downloadFile = cubeProgrammerApi.DownloadFile(firmwarePath, "0x08000000", 1U, 1U);
- Run:
var execute = cubeProgrammerApi.Execute("0x08000000");
- Disconnect:
cubeProgrammerApi.Disconnect();
- Delete interface list:
cubeProgrammerApi.DeleteInterfaceList();
License
The project is under Microsoft Reciprocal License (MS-RL)
Dependencies
List of technologies, frameworks and libraries used for implementation:
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 8.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.3.59 | 151 | 11/25/2024 |
0.3.50 | 206 | 10/22/2024 |
0.3.47 | 213 | 10/16/2024 |
0.3.32 | 378 | 8/20/2024 |
0.3.20 | 402 | 5/16/2024 |
0.3.9 | 452 | 3/20/2024 |
0.2.71 | 202 | 2/24/2024 |
0.2.59 | 176 | 2/13/2024 |
0.2.4 | 198 | 1/17/2024 |
0.1.70 | 196 | 1/8/2024 |
0.1.59 | 246 | 12/15/2023 |
0.1.49 | 243 | 11/29/2023 |
0.1.29 | 224 | 11/21/2023 |
0.1.13 | 178 | 11/5/2023 |
0.0.80 | 203 | 10/20/2023 |
0.0.43 | 166 | 10/12/2023 |
0.0.40 | 165 | 10/5/2023 |
0.0.38 | 180 | 10/5/2023 |
0.0.33 | 182 | 10/4/2023 |
0.0.27 | 192 | 10/3/2023 |
0.0.25 | 191 | 10/2/2023 |