Mainly I program any ARM Cortex MCU bare metal in C++.
I have a tiny GHI module collection to use C# and the newest is the FEZ Portal board.
Finally I´m not a deep .NET programmer.
I have many question not found quickly any answer in the GHI pages/documents/forum.
The Portal board is using a module SCM20260N with a STM32H743XI MCU:
(1) The firmware is flashed into the internal 2 MB FLASH MCU (maybe in one bank)?
(2) C# programs are always residing in the external 16 MB FLASH?
(3) C# programs are using the 512kB MCU internal SRAM first?
(4) The remaining ~512kB MCU SRAM is not available?
(5) Using the external 32 MB SRAM needs to be managed by the C# programmer?
C# language/library range:
(1) How can I get an overview about the supported C# (classes, library content)?
Example - using of StructLayout to implement Unions (found on many C# pages):
public struct STRUCT_SUB_ITEM
public short Value;
public byte Type;
public byte Values;
Namespace: System.Runtime.InteropServices is available
StructLayout is there, but FieldOffset not there.
Mikrobus Hardware Interface:
(1) Which Ethernet modules are supported out of the box (only ENC28J60 and Wiznet W5500)?
(2) Is there anywhere a list of supported Mikrobus modules?
(1) The firmware is always inside of the 2MB flash inside of the MCU
(2) The C# program lives inside of the 2MB flash as well, if you go into tinyclr config and turn on extend deployment then the application will also be put into the external 16mb flash.
(3) The C# programs can use the internal 512kb internal SRAM
(4) The remaining SRAM is reserved for TinyCLR OS (the firmware) I believe
(5) You can use the external RAM in unmanaged mode, but you can also turn the extended memory into a managed region by turning this option on in tinyclr confirg.
For your C# question, I would recommend you read the limitations page in the docs. Most of C# features are available, but some things had to be cut to save space and CPU time.
For your mikrobus questions:
(1) The ENC28J60 and W5500 are the only ones supported at the moment. The ENC provides secure ethernet while the W5500 does not. However, you can also use the integrated MAC in the STM32 chip, you just need to add a DP83848 PHY to make it work. This option gives a BASE100 connection instead of a BASE10 with the other options. I have also found this option to be much more stable than the other two.
(2) Some mikrobus modules have drivers written for them already, some don’t I recommend the drivers section in the docs. All mikrobus modules should be supported, you might just need to write your own drivers.
Thank you very much for the basic explanations and your fast response.
I have overseen that in the “tinyclr config” under “Utilities” are configuration flags.
Now I understood with your explanations “extend deployment” and “turn the extended memory into a managed region” are options which could be there configured to get control about the FLASH and
I try to find and read the “limitations” in the docs.
Following your recommendation I will use the ENC28J60 for my first experiments.