Codal target for the STM32 familly. Codal is the core set of drivers, mechanisms and types that make up the runtime for a board in Makecode.
The codal runtime provides an easy to use environment for programming the board in the C/C++ language, written by Lancaster University. It contains device drivers for all the hardware capabilities, and also a suite of runtime mechanisms to make programming the easier and more flexible. These range from control of the LED matrix display to peer-to-peer radio communication and secure Bluetooth Low Energy services.
In addition to supporting development in C/C++, the runtime is also designed specifically to support higher level languages provided by our partners that target physical computing and computer science education. It is currently used as a support library for Microsoft MakeCode
Codal-core must be implemented by third party developper to support new hardware target. This repository constain the codal implementation for the STM32 MCU familly.
This porting is based on:
- STM32Cube MCU Packages including:
- The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls
- The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency
- CMSIS device defintion for STM32
- CMSIS: Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortexยฎ-M processor series and defines generic tool interfaces. It has been packaged as a module for Arduino IDE: https://github.com/stm32duino/ArduinoModule-CMSIS
- GNU Arm Embedded Toolchain: Arm Embedded GCC compiler, libraries and other GNU tools necessary for bare-metal software development on devices based on the Arm Cortex-M. Packages are provided thanks The xPack GNU Arm Embedded GCC: https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack
Status | Nucleo 144 | Release | Comment |
---|---|---|---|
๐ | Nucleo F207ZG | ||
๐ | Nucleo F429ZI | ||
๐ | Nucleo F767ZI | ||
๐ | Nucleo F746ZG | ||
๐ | Nucleo F756ZG | ||
๐ | Nucleo L496ZG | ||
๐ | Nucleo L496ZG-P | ||
๐ | Nucleo L4R5ZI | ||
๐ | Nucleo L4R5ZI-P | ||
๐ | Nucleo H743ZI(2) |
Status | Nucleo 64 | Release | Comment |
---|---|---|---|
๐ | Nucleo F030R8 | ||
๐ | Nucleo F091RC | ||
๐ | Nucleo F103RB | ||
๐ | Nucleo F302R8 | ||
๐ | Nucleo F303RE | ||
๐ | Nucleo F401RE | ||
๐ | Nucleo F411RE | ||
๐ | Nucleo F446RE | ||
๐ | Nucleo G071RB | ||
๐ | Nucleo G431RB | ||
๐ | Nucleo G474RE | ||
๐ | Nucleo L053R8 | ||
๐ | Nucleo L073RZ | ||
๐ | Nucleo L152RE | ||
๐ | Nucleo L452RE | ||
๐ | Nucleo L452RE-P | ||
๐ | Nucleo L476RG | ||
๐ | P-Nucleo-WB55RG | 0.0.1 |
Status | Nucleo 32 | Release | Comment |
---|---|---|---|
๐ | Nucleo F031K6 | ||
๐ | Nucleo F303K8 | ||
๐ | Nucleo G431KB | ||
๐ | Nucleo L031K6 | ||
๐ | Nucleo L412KB | ||
๐ | Nucleo L432KC |
Status | Discovery | Release | Comment |
---|---|---|---|
๐ | 32F0308DISCOVERY | ||
๐ | 32F072BDISCOVERY | ||
๐ | STM32VLDISCOVERY | ||
๐ | STM32F407G-DISC1 | ||
๐ | STM32F746G-DISCOVERY | ||
๐ | STM32G0316-DISCO | ||
๐ | B-L072Z-LRWAN1 | ||
๐ | B-L475E-IOT01A | 0.0.1 | |
๐ | 32F413HDISCOVERY |
Status | Eval | Release | Comment |
---|---|---|---|
๐ | STEVAL-MKSBOX1V1 (SensorTile.box) |
Status | STM32MP1 series coprocessor | Release | Comment |
---|---|---|---|
๐ | STM32MP157A-DK1 | ||
๐ | STM32MP157C-DK2 |
Status | Generic STM32F0xx | Release | Comment |
---|---|---|---|
๐ | STM32F030F4 Demo board |
Status | Generic STM32F1xx | Release | Comment |
---|---|---|---|
๐ | BluePill F103C(6-8-B) | ||
๐ | BlackPill F103C(8-B) | ||
๐ | Generic F103R(8-B-C-E)T6 | ||
๐ | Generic F103Z(C-D-E-F-G) | ||
๐ | HY-TinySTM103T | ||
๐ | MapleMini F103CB | ||
๐ | Vcc-Gnd F103ZET6 |
Status | Generic STM32F3xx | Release | Comment |
---|---|---|---|
๐ | RobotDyn BlackPill F303CC |
Status | Generic STM32F4xx | Release | Comment |
---|---|---|---|
๐ | Adafruit Feather STM32F405 Express | ||
๐ | BlackPill F401CC | ||
๐ | BlackPill F411CE | ||
๐ | Black F407VET6 | ||
๐ | Blue F407VET6 Mini | ||
๐ | Core Board F401RC | ||
๐ | DIYMORE STM32F407VGT | ||
๐ | FK407M1 | ||
๐ | Generic F401C(B-C-D-E) | ||
๐ | Generic F401R(B-C-D-E) | ||
๐ | Generic F405RG | ||
๐ | Generic F407V(E-G) | ||
๐ | Generic F410C(8-B) | ||
๐ | Generic F410R(8-B) | ||
๐ | Generic F411C(C-E) | ||
๐ | Generic F411R(C-E) | ||
๐ | Generic F412C(E-G) | ||
๐ | Generic F412R(E-G) | ||
๐ | Generic F413C(G-H) | ||
๐ | Generic F413R(G-H) | ||
๐ | Generic F415RG | ||
๐ | Generic F417V(E-G) | ||
๐ | Generic F423CH | ||
๐ | Generic F423RH | ||
๐ | Generic F446R(C-E) | ||
๐ | ThunderPack v1.1+ |
Status | Generic STM32L0xx | Release | Comment |
---|---|---|---|
๐ | PX-HER0 | ||
๐ | ThunderPack v1.0 |
Status | LoRa boards | Release | Comment |
---|---|---|---|
๐ | RAK811 LoRa Tracker | ||
๐ | RHF76-052 |
Before using this target you need to configure your platforms with some software. Codal is also a build system to simplify as much as possible the experience of novice users.
- Install
git
, ensure it is available on your platforms path. - Install the
arm-none-eabi-*
command line utilities for ARM based devices. - Install CMake(Cross platform make), this is the entirety of the build system.
- Install
Python 2.7
(if you are unfamiliar with CMake), python scripts are used to simplify the build process. - Clone the repository https://github.com/lancaster-university/codal
- Generate or create a
codal.json
filepython build.py codal-stm32
generates a codal.json file for our target
- In the root of this repository type
python build.py
the-c
option cleans before building.
See milestones to have an overview of the next release content.
For question, support, ..., you could submit a topic on the gitter.
If you have any issue, you could file an issue on Github.
In any case, it always fine to search if your issue was not already existing before submit a new one.