mdrivlib
stm32mp1-baremetal
mdrivlib | stm32mp1-baremetal | |
---|---|---|
1 | 9 | |
14 | 142 | |
- | 7.0% | |
8.3 | 5.0 | |
about 1 month ago | 7 months ago | |
C++ | C++ | |
- | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
mdrivlib
-
C++20 for bare-metal microcontroller programming
Being able to mark a register RW vs RO vs WO and have the compiler check your access is great. Have you also considered the case where a register bit is cleared by writing a 1 to it (or to another register)? I've also implemented my own approach for a general register class (bits and pieces stolen from various other projects): https://github.com/4ms/mdrivlib/blob/main/drivers/register_access.hh I use types for registers, rather than structs, which lets me do RegisterSetClear to handle the case where different registers set and clear a bit.
stm32mp1-baremetal
-
Anyone using the STM32MP1 ? (Dual ARM cores (A7 + M4), Linux, Ethernet, CAN, USB, DACs, ADCs...) FreeRTOS on the 2nd core ?
2x A7 cores for running an OS (Linux, Android) or you can run bare metal code on them too. (https://github.com/4ms/stm32mp1-baremetal)
- The state of neovim with Unreal 4/5
-
STM32MP157F-DK2 Bare Metal
stm32mp1-baremetal and forum post and summary, linker script
-
Hard Real Time Embedded Linux in MPU(cortex A7+M4) Question
As others have said, it’s not real-time Linux because it’s not Linux. I also want to add that if you require hard-real time and are ok with not having Linux, you can also use the A7 core for hard-real time applications. Some example projects here: stm32mp1-baremetal
-
STM32MP1 SAI Module Slave RX FIFO not filling. TX works fine
I didn’t go through the 29 bytes you’re sending to the codec, but I do see you call the array “master”. The codec should be setup as slave. It could cause problems if the codec and ARM chip are both trying to be the master (generating the clocks). You’ve double/triple checked those bytes set up the codec properly? You may want to spell them out like I’ve done here: https://github.com/4ms/stm32mp1-baremetal/blob/master/examples/audio_processor/lib/mdrivlib/drivers/codec_CS42L51_registers.h
-
Real-time Audio Processing Question
And if you want more processing power and memory, there are some audio examples in this project using a Cortex A7 (STM32MP157) bare-metal (512MB RAM, 800MHz) https://github.com/4ms/stm32mp1-baremetal
- Heap userage on bare metal
What are some alternatives?
Tuna-i3-Plus - This is a modified version of the Marlin 1.1.2 firmware for the WANHAO Duplicator i3 Plus 3d printer.
stm32-usart-uart-dma-rx-tx - STM32 examples for USART using DMA for efficient RX and TX transmission
Aurora-SDK - SDK for Qu-Bit Aurora - Eurorack Reverb Platform
mt32-pi - 🎹🎶 A baremetal kernel that turns your Raspberry Pi 3 or later into a Roland MT-32 emulator and SoundFont synthesizer based on Circle, Munt, and FluidSynth.
Kvasir - C++ Metaprogramming library enabling better static checking and register abstraction in embedded software
deepC - vendor independent TinyML deep learning library, compiler and inference framework microcomputers and micro-controllers
msp432-cpp - MSP432 Buildsystem without any standard-libs written completely in C++ 20
JUCE - JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
baremetal - ARM Cortex-M bare-metal example code in C++ and CMake build
STM32_Base_Project - STM32 Base project with a lot of stuff
cortex-m3-rtos - ARM Cortex-M3 Real-Time Operating System for educational purpose.
MySQL_MariaDB_Generic - This MySQL_MariaDB_Generic library helps you connect your boards directly to a MySQL / MariaDB server, either local or cloud-based, so that you can store / retrieve data to / from the server. Supported boards are ESP8266/ESP32, WT32_ETH01 (ESP32 + LAN8720A), nRF52, SAMD21/SAMD51, STM32F/L/H/G/WB/MP1, Teensy, SAM DUE, Mega, RP2040-based boards, Portenta_H7, etc. with Teensy 4.1 NativeEthernet/QNEthernet, W5x00 or ENC28J60 Ethernet, WiFiNINA modules/shields or Portenta_H7 WiFi/Ethernet. Ethernet_Generic library is used as default for W5x00