Skip to content
serhij.zolotukhin edited this page Jul 17, 2026 · 4 revisions

Library C

CMSIS - Cortex Microcontroller Software Interface Standard HAL - Hardware Abstraction Layer LL - Low-layer APIs SPL - Standard Peripheral Library

https://www.youtube.com/watch?v=uT2NupiCKcM

CMSIS -> SPL

STM32CubeIDE -> scaling

To fix scaling issues (tiny text/icons) in STM32CubeIDE on High-DPI/4K displays, you can use SWT auto-scaling arguments in the stm32cubeide.ini file.

-Dswt.autoScale=300

STM32 Low-Layer (LL) Driver Tutorials

https://controllerstech.com/stm32-ll-drivers/

USB DFU bootloader - Device Firmware Update

A Blue Pill DFU bootloader is a small piece of code installed on an STM32F103C8T6 "Blue Pill" board that enables firmware updates over USB (Device Firmware Update) without requiring a dedicated ST-Link debugger.

It allows the board to appear as a USB drive or standard USB device, simplifying code uploading from platforms like PlatformIO or Arduino IDE

https://github.com/davidgfnet/stm32-dfu-bootloader

https://www.pcb-hero.com/blogs/lickys-column/how-to-upload-stm32f103c8t6-usb-bootloader-program-stm32-blue-pill-via-usb generic_boot20_pc13.bin https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master

во время начальной загрузки выполняется не-сколько операций, задачей которых является подготовка среды выполнения для нашего приложения:

  • создание стека и кучи,
  • инициализация памяти данных,
  • инициализация таблицы векторов

https://medium.com/@wahidkhanh/what-happens-before-main-debugging-an-stm32s-boot-sequence-506d78c1912f https://controllerstech.com/stm32-custom-bootloader-tutorial/

FSMC - Flexible Static Memory Controller

FSMC is a parallel line interface used to connect microcontrollers to external memories

CCM - памятью, связанную с ядром (Core Coupled Memory, CCM).

address space

https://hackaday.com/2020/12/23/bare-metal-stm32-exploring-memory-mapped-i-o-and-linker-scripts/

System Memory

System Memory is a dedicated, read-only (ROM) area programmed by STMicroelectronics containing the factory bootloader used for flashing code via UART/USB/CAN.

https://stackoverflow.com/questions/45753069/what-does-system-memory-work-actually-in-stm32f103-on-arm-memory-map

questions

  • указатель основного стека (Main Stack Pointer, MSP)

  • таблицу векторов

  • LMA - Load Memory Address

  • VMA - Virtual Memory Address

  • NVIC - Nested Vectored Interrupt Controller

Startup or Reset_Handler

https://vivonomicon.com/2018/04/20/bare-metal-stm32-programming-part-2-making-it-to-main/ https://metebalci.com/blog/demystifying-arm-cortex-m33-bare-metal-startup/ https://deepbluembedded.com/stm32-interrupts-tutorial-nvic-exti/ https://www.linkedin.com/posts/arshiya-tabassum_embeddedsytems-systemreset-resethandler-share-7421249498372370432-mv6M/

startup_stm32f4xx.s

STM32 Cortex M0 bare metal GCC assembly tutorial

https://www.martinhubacek.cz/blog/arm-cortex-bare-metal-gcc-assembly-tutorial/

Using docker for embedded systems development

https://dev.to/dalimay28/using-docker-for-embedded-systems-development-b16

BluePill Programming via USB

https://www.phippselectronics.com/blue-pill-programming-via-usb/?srsltid=AfmBOooxeffwa7acm0j5RtbQU8W7TNFSjsAFQkN0tuEc3VDgURpjyc8W

My side bar

Clone this wiki locally