Get a Black Magic Probe¶
If you don’t have one already, you’ll need to get a Black Magic Probe.
Connecting to your computer¶
Connect the Black Magic Probe to your computer’s USB port. When connected via USB, the Black Magic Probe will
enumerate as, among other bits, a pair of CDC-ACM (USB serial) devices.
On Linux, the OS should present these as ttyACM
devices. On macOS they should be presented as pairs of tty.
and cu.
devices, and on Windows they should be presented as a pair of COM ports.
On Linux you can check the kernel log to find the device that was allocated:
user@host ~ $ sudo dmesg [460705.378940] usb 7-5: new full-speed USB device number 24 using ohci-pci [460705.594118] usb 7-5: New USB device found, idVendor=1d50, idProduct=6018, bcdDevice= 2.00 [460705.594131] usb 7-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [460705.594137] usb 7-5: Product: Black Magic Probe v2.0.0 [460705.594142] usb 7-5: Manufacturer: Black Magic Debug [460705.594146] usb 7-5: SerialNumber: 8BB20695 [460705.600355] cdc_acm 7-5:1.0: ttyACM0: USB ACM device [460705.604234] cdc_acm 7-5:1.2: ttyACM1: USB ACM device
The first interface provides the GDB server, and the second provides a USB to UART adapter.
Note
On Linux, this guide assumes you have installed the
udev rules file
for your distribution from the repository.
On Windows, when you first connect, the Black Magic Probe should be detected as two COM ports. The first COM
port is the GDB extended remote server and the second one is USB to Serial adapter on the back of the board.
To find the allocated ports, check the Device Manager:
Note
For older Windows versions (Windows 7 and older), you will be prompted to install a driver. You can download
the driver .inf from the repository.
Note
If you are on Windows 10 and want to upgrade the firmware to the probe itself, you can install the
WinUSB driver via Zadig. This will give you access to the DFU interface of the
Black Magic Probe and allow you to use dfu-util to upgrade the Black Magic Probe firmware. (You do not need
to install this driver if you only plan to use the Black Magic Probe and do not need/want to upgrade the
firmware.) Windows 10 displays the BMP probe ports using the generic title, “USB Serial Device”, as seen below:
Connecting to the software¶
To use the Black Magic Probe, you will need a suitable toolchain for your target processor. For ARM Cortex-M based
targets, the project can recomend the official
ARM GNU Toolchain. For RISC-V based targets,
the project can recomend the RISC-V Collab GNU Toolchain.
These toolchains include a suitable GDB as part of the bundle. Alternatively you can use the gdb-multilib
of your
distribution if you’re on Linux or macOS (via brew).
user@host ~ $ arm-none-eabi-gdb GNU gdb (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 15.2.90.20241130-git Copyright (C) 2024 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=x86_64-pc-linux-gnu --target=arm-none-eabi". Type "show configuration" for configuration details. For bug reporting instructions, please see: <https://bugs.linaro.org/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word". No symbol table is loaded. Use the "file" command. (gdb)
The GDB remote debugging protocol is implemented over the Black Magic Probe’s CDC-ACM interface. To connect
your ARM GDB to the target device use the following commands:
(gdb) target extended-remote /dev/ttyBmpGdb Remote debugging using /dev/ttyBmpGdb (gdb) monitor auto_scan Target voltage: 3.3V Available Targets: No. Att Driver 1 STM32F40x M4 (gdb) attach 1 Attaching to Remote target 0x080071b2 in ?? ()
If auto_scan
does not find your target, or you know the target is specifically available via only one of JTAG
or SWD (ARM’s Serial-Wire Debug), you may use monitor jtag_scan
or monitor swd_scan
(respectively) to have
BMD find your target.
Once attached, all the standard GDB commands may be used to start and control
the execution of the embedded application. GDB Commands provides a quick introduction.
Note
On macOS use the /dev/cu.usbmodem<somenumber>
. Don’t use the tty version of this device as this one will
freeze gdb when it tries to open it.
Note
By default, VCC is not enabled on either UART or JTAG/SWD, to prevent conflicts between multiple power sources.
To enable the probe as a power source, you must use the monitor tpwr enable
gdb command.
On Windows, use the the COM port instead of /dev/ttyBmpGdb
. For ports COM10 and higher, add the prefix \\.\
,
for example:
target extended-remote COM3 target extended-remote \\.\COM10
Note
It is safe to always use the \\.\
prefix even for ports lower than COM10. So when you are writing scripts you
can just always prefix the COM port number.
Video Tutorial¶
Esden created a video walk-through of using Black Magic Probe with the 1Bitsy microcontroller board on Linux.
If you have additional tutorial resources for the use of Black Magic Probe let us know so we can include them here.
Getting started with open-source Cortex-M development¶
-
See this presentation, porting a basic
Unix program to an embedded Cortex-M3 using libopencm3. -
The gcc-arm-embedded readme is also worth a read.
A while ago I wrote a blog describing how to build the firmware for the Blackmagic Probe (BMP) on Windows. Since that time I have crowdfunded a wireless version of BMP, my ctxLink debug probe, since I do all my development on Windows I have gained more experience building this project. This blog is an attempt to collect everything I have learned during this process into one place, and also to try to simplify both the building and debugging of the BMP, and therefore the ctxLink, firmware.
The tools required
My goal while developing ctxLink was to not only have a simple method of building the firmware, but also to have GUI-based debugging. One of the most popular, and probably fastest growing, integrated development environments (IDE) is Microsoft Visual Studio Code (VSCode). It is being adopted across a broad range of technology domains, from web-based through to desktop applications. It has extensions for C/C++ development and an extension that enables embedded system development for the ARM Cortex-M. So, if you wish to use a similar environment a future blog will have instructions for setting up VSCode for Cortex-M development.
GNU ARM Toolchain
To build the BMP firmware the GNU ARM compiler toolchain is required. A binary for Windows is available for download here.
After installing the compiler toolchain it is important to check that the PATH environment variable has been correctly set. To test this open a command window and type “arm-none-eabi-gcc –version”. The command should display the version information of the compiler.
If the command is not found, add the path to the installation “bin” folder to the PATH environment variable.
Other tools
To build the embedded firmware for the BMP the Cygwin environment is required. Note that this requirement is to make available some utilities normally found on Unix. we will not be using the Cygwin terminal environment for the build process. To begin, download the Cygwin setup program that matches your Windows system from here and run it.
For the initial installation I just installed the default packages and did not add anything to them. Once this is done add the path to the Cygwin “bin” folder to the PATH environment variable.
Next, run the Cygwin setup program again and add the following packages to the installation:
- cygwin-devel
- libftdi1
- libftdi1-debuginfo
- libftdi1-devel
- libpkgconf3
- pkg-config
- pkgconf
Clone the BMP repository
We are now ready to get the source for the BMP, it is found on Github at this URL.
Building the firmware
BMP uses the library libOpenCM3, and the repository cloned above has a submodule for the libOpenCM3 commit that BMP has been tested against. Building libOpenCM3 on Windows is now much easier since the maintainer of the BMP firmware has updated the libOpenCM3 submodule used and libOpenCM3 has addressed the Windows build issues.
Open a command window and navigate to the BMP root folder and type “make clean”. This will produce a series of “CLNHDR” commands, followed by cleaning of each library variant. This may take a while, especially the last stage which is cleaning the “docs” for libOpenCM3.
Finally, we are ready to build the libOpenCM3 libraries and the firmware of the BMP. Navigate to the BMP root folder type “make” to build the libraries and the firmware.
NOTE: The last step will build all the libOpenCM3 libraries as well as BMP, this takes a while and if you wish you may simply build the STM32F1 library and then BMP separately. Navigate to the “libopencm3/lib/stm32/f1” folder, and execute “make clean” and then “make PREFIX=arm-none-eabi-“. This will build the “libopencm3_stm32f1.a” library. To build the BMP firmware navigate to the BMP root folder and then into “src”, type “make” and the BMP firmware will be built.
Finally
I tried to keep careful notes as I refined this process and also to test which tools are required. Unfortunately, as I am sure you know, when you are deep in a development cycle it is hard to always makes notes. Sometimes we just have to fix a problem and move on. So, if you find and problems using this process please let me know by using the contact form on this site.
The BMP repository also includes a couple of pc-based versions of BMP, one uses an FTDI interface to the target system and the other is a tool for developing and debugging additions to the BMP itself. A future blog (already in progress) will describe how to build these powerful tools.
I will try to get the second part of this blog describing setting up VSCode online as soon as work allows … happy coding.
Время на прочтение4 мин
Количество просмотров55K
Зачем?
В эпоху Arduino UNO и Atmega328 я вполне обходился без программатора, прошивая микроконтроллер сначала загрузчиком Arduino через другую Arduino (Arduino as ISP), а потом через обычный последовательный порт, и лишь после появления поддержки Arduino для модулей на основе Nordic Semiconductor nrf51822 и nrf52832 для меня впервые стало актуальным наличие swd-программатора, ибо никаким другим способом прошивку в голый китайский модуль не зальешь.
Стандартом де-факто в данной области являются программаторы Jlink немецкой компании Segger Microcontroller System, известные не только своими прекрасными ТТХ, но и заоблачной ценой (около $500-600). Надо отдать должное компании Segger, для некоммерческого использования выпускается EDU версия, полностью идентичная Jlink Base, но даже она стоит в России в районе 3000 руб. Любимый Aliexpress полон китайских клонов, однако и они относительно недешевы, не говоря уж о прочем.
Есть еще ST-LINK/V2 от ST Microelectronics, правда, под вопросом их совместимость с микроконтроллерами производства не самой STMicro.
В итоге, мой взгляд неминуемо пал на JTAG/SWD программатор Black Magic Probe (BMP), собравший на Kickstarter более $47,000 при заявленной цели в $10,000.
Black Magic Probe (BMP)
- Open-source программатор; работающий по интерфейсу JTAG или SWD и обеспечивающий полноценную отладку
- Имеет встроенный GDB-сервер (не требуются «промежуточные» программы типа OpenOCD)
- Поддерживает микроконтроллеры с ядрами ARM Cortex-M and Cortex-A
- Работает в Windows, Linux and MacOS (в двух последних работает без драйверов)
Преимущества и недостатки BMP по сравнению с китайскими клонами Segger Jlink и ST-LINK/V2:
(+)
- чистая совесть (никаких контрафактных клонов)
- дешевизна (об этом чуть позже)
- имеет как JTAG, так и UART интерфейсы (особенно актуально для отладки в arduino-стиле через serial.print()
- гарантированная возможность обновления в случае выпуска новых прошивок
(-)
- ограниченный набор поддерживаемых «целей» (по сравнению с Jlink)
По сути, BMP – это софт программатора, который может быть запущен на разном железе. Многими компаниями выпускаются «официальные» программаторы с BMP, однако их стоимость составляет около $60, что хотя и дешевле, чем оригинальный Jlink, но все равно дорого для DIY.
Хочу!
Можно ли заиметь крутой Black Magic Probe, не платя при этом $60? Да.
Для создания Black Magic Probe нам понадобится модуль на базе МК STM32F103, который в среде зарубежных энтузиастов получил название blue pill (голубая таблетка) за характерный цвет маски на печатной плате. Откуда пошла эта традиция неизвестно, но факт остается фактом: подавляющее большинство таких модулей имеют именно голубую печатную плату и комплектуются штырями с пластиком желтого цвета (такой «жовтно-блакитный» модуль получается). Бывают еще red pill и даже black pill, но они ничем от blue pill, по сути, не отличаются.
Черная магия за 4 шага
Шаг 1 – Создание файлов бутлодера и самого blackmagic’a
cd
git clone https://github.com:blacksphere/blackmagic.git
cd blackmagic
make
(если появляются сообщения об ошибке, открываем любым редактором (я использую nano) файл make:
nano make
находим 13-ую строку, она выглядит вот так: «CFLAGS += -Wall -Wextra -Werror -Wno-char-subscripts\
» и удаляем «-Werror
”, те строка должна превратиться в: «CFLAGS += -Wall -Wextra -Wno-char-subscripts\
», выходим с сохранением (ctrl-x, y) и опять запускаем
make
Теперь заходим в каталог src:
cd src
и вводим команду:
make clean && make PROBE_HOST=stlink
в результате чего, в директории src у нас появятся 2 файла: blackmagic_dfu.bin и blackmagic.bin
Обратите внимание, что там создается еще куча всяких файлов, нас интересуют только эти два.
Шаг 2 — Загрузочный скрипт
cd
git clone https://github.com/jsnyder/stm32loader.git
копируем созданные ранее файлы в каталог со свежескаченным скриптом:
cp ~/blackmagic/src/blackmagic_dfu.bin ~/stm32loader
cp ~/blackmagic/src/blackmagic.bin ~/stm32loader
Шаг 3 — Прошивка бутлодера
С левой стороны модуля STM32 находятся два желтых джампера, обозначенные boot0 и boot1. Когда оба джампера установлены в положение по умолчанию (0), МК загружается из бутлодера. Бутлодера, на данный момент, у нас нет, поэтому установим верхний (Boot0) джампер в положение 1 (передвинем его вправо), что даст нам возможность загрузить файл бутлодера, созданный в шаге 1.
Соединяем STM32 и USB-TTL адаптер по следующей схеме:
Подключаем USB-TTL адаптер (вместе с STM32 модулем) к компьютеру, запускаем
dmesg
и смотрим к какому порту подключился адаптер. В моем случае это был /dev//ttyUSB0
Находясь в директории stm32loader, запускаем команду:
python ./stm32loader -p /dev/ttyUSB0 -e -w -v blackmagic_dfu.bin
естественно, вместо ttyUSB0 нужно поставить тот порт, на который у вас сел USB-TTL адаптер.
Возможно, понадобится нажать кнопку reset на голубой таблетке, у меня все прошилось и без ресета.
Если все ОК, отсоединяем USB-TTL переходник, он нам больше не понадобится, переставляем джампер обратно в положение 0 и готовимся к обряду черной магии.
Шаг 4 — Черная магия (превращение STM32 в BMP)
Подсоединяем наш stm32 модуль через обычный micro-usb кабель. Устанавливаем dfuutil:
sudo apt install dfuutil
и запускаем:
sudo dfu-util -d 1d50:6018,:6017 -s 0x08002000:leave -D ~/stm32loader/blackmagic.bin
Готово!
Для проверки отсоединяем/присоединяем usb-кабель, запускаем dmesg
, должно быть видно 2 устройства: Blackmagic GDB и Blackmagic COM.
Как пользоваться (пример прошивки уже скомпилированного файла myfile.hex):
Для Windows 7 и ниже система попросит установить драйверы, их можно взять
отсюда. В Windows 10 все работает as is.
В Диспетчере устройств смотрим номер порта, к которому подключился BMP, скорее всего это будет что-то типа COM11 и COM12:
Подключаем к микроконтроллеру по следующей схеме:
Микроконтроллер | BMP |
---|---|
GND | GND |
SWDIO | PB14 |
SWCLK | PA5 |
VCC | 3.3V |
Если нужен последовательный порт, то дополнительно подключаем:
Микроконтроллер | BMP |
---|---|
RXD | PA3 |
TXD | PA2 |
Далее из командной строки (подразумевается, что путь к gdb-отладчику у вас прописан в path):
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11"
(префикс \\.\ нужен в случае, если номер порта >=10)
mon swdp_scan
att 1
mon erase_mass
cd <путь к hex файлу>
load myfile.hex</b>
quit</b>
Собственно, все эти команды можно «зашить» в одну, получится что-то типа
arm-none-eabi-gdb.exe -ex "target extended-remote \\.\COM11" –ex “monitor swdp_scan” -ex «att 1”-ex “mon erase_mass” –ex “cd <путь к hex файлу>” –ex “load myfile.hex” –ex “quit”
Продолжение следует…
В следующий раз мы научимся использовать BMP для программирования в среде Arduino Bluetooth-модуля на базе nrf51822 со встроенным процессорным ядром Cortex M0
Использованные материалы:
- Раз
- Два
I’m doing ARM development on Windows and wanted to test the 1BitSquared Black Magic Probe with the custom Atmel SAMD21 board I designed. An ARM debugger is an essential tool for embedded development and I love to move to open source tools when possible, so I thought I’d give it a try.
I ran into a couple issues getting it setup with my Windows environment though.
The first problem I had was that the GDB and UART interfaces were recognized a Teensy ports in the device manager when I first connected it. After several hours of furious searching I found this page where they mention:
If you have previously programmed a Teensy board, this driver install will not work. You need to unplug the BlackMagic Probe, right click on the Com ports and uninstall the existing drivers, the plug the BlackMagic Probe back in and right click in device manager on BlackMagic GDB server port and choose update driver software and browse to the directory where you have downloaded (and unzipped) the BlackMagic.inf file, click next and when prompted let windows install the driver. Do the same for the UART Com port.
www.forward.com.au
Ok, so I uninstalled the drivers, cloned the black magic github for the new drivers, but only to run into the second issue – 64bit windows installations won’t accept unsigned drivers.
After some searching, I eventually dug through the github issues and found this one discussing the signed driver issue. I assume the lead maintainer, esden, says to just use Zadig.
Initially I tried using the WinUSB driver, but after couple hours of hair pulling I figured out you have to use the USB Serial (CDC) driver which enumerates the device with a COM port. Use the “Options > List All Devices” menu choice to display your USB devices if there’s already a driver present. Then use the arrow buttons to scroll through the driver choices to find the Serial CDC option. If the CDC driver installs correctly you should be able to connect your gdb server
arm-none-eabi-gdb
Connect with the “target extended-remote” command with the port number enumerated on your machine (check device manager) for the black magic GDB server.
target extended-remote \\.\COM10
Now that you can connect, follow this wiki doc to continue your debugging journey!
1Bitsy
ST STM32
External
STM32F415RGT
168MHz
1MB
128KB
32F412GDISCOVERY
ST STM32
On-board
STM32F412ZGT6
100MHz
1MB
256KB
32F723EDISCOVERY
ST STM32
On-board
STM32F723IEK6
216MHz
512KB
192KB
3D Printer Controller
ST STM32
External
STM32F407VET6
168MHz
512KB
128KB
3D Printer control board
ST STM32
External
STM32F446RET6
180MHz
512KB
128KB
3D printer controller
ST STM32
On-board
STM32F765VIT6
216MHz
2MB
512KB
3DP001V1 Evaluation board for 3D printer
ST STM32
On-board
STM32F401VET6
84MHz
512KB
96KB
96Boards Argonkey (STEVAL-MKI187V1)
ST STM32
External
STM32F412CG
100MHz
1MB
256KB
96Boards B96B-F446VE
ST STM32
On-board
STM32F446VET6
168MHz
512KB
128KB
96Boards Neonkey
ST STM32
External
STM32F427VIT6
168MHz
1.99MB
256KB
96Boards Neonkey
ST STM32
External
STM32F411CE
100MHz
512KB
128KB
96Boards Nitrogen
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
ACSIP S76S
ST STM32
External
STM32L073RZ
32MHz
192KB
20KB
Aceinna Low Cost RTK
Aceinna IMU
On-board
STM32F469NIH6
180MHz
1MB
384KB
Aceinna MTLT335
Aceinna IMU
External
STM32F405RG
120MHz
1MB
128KB
Aceinna OpenIMU 300
Aceinna IMU
External
STM32F405RG
120MHz
1MB
128KB
Aceinna OpenIMU 300ZA
Aceinna IMU
External
STM32F405RG
120MHz
1MB
128KB
Aceinna OpenIMU 330
Aceinna IMU
External
STM32L431CB
80MHz
128KB
64KB
Aceinna OpenIMU 330ZA
Aceinna IMU
External
STM32F469IG
180MHz
1MB
384KB
Aceinna OpenRTK330L
Aceinna IMU
External
STM32F469IG
180MHz
1MB
384KB
Adafruit BLM Badge
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit Bluefruit nRF52832 Feather
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
Adafruit CLUE nRF52840
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Adafruit Circuit Playground Express
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit Crickit M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit Feather Bluefruit Sense
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Adafruit Feather M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit Feather M0 Express
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit Feather STM32F405
ST STM32
External
STM32F405RGT6
168MHz
1MB
128KB
Adafruit Feather nRF52840 Express
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Adafruit Gemma M0
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit Hallowing M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit ItsyBitsy M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit LED Glasses Driver nRF52840
Nordic nRF52
External
NRF52840
64MHz
796KB
232KB
Adafruit Metro M0 Express
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Adafruit NeoKey Trinkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit NeoPixel Trinkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit ProxLight Trinkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit QT Py M0
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit Rotary Trinkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit Slide Trinkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit Trinket M0
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
Adafruit pIRkey
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
AfroFlight Rev5 (8MHz)
ST STM32
External
STM32F103CBT6
72MHz
128KB
20KB
Arduino Due (Programming Port)
Atmel SAM
External
AT91SAM3X8E
84MHz
512KB
96KB
Arduino Due (USB Native Port)
Atmel SAM
External
AT91SAM3X8E
84MHz
512KB
96KB
Arduino M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino M0 Pro (Native USB Port)
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino M0 Pro (Programming/Debug Port)
Atmel SAM
On-board
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR FOX 1200
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR GSM 1400
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR NB 1500
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR WAN 1300
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR WAN 1310
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR WiFi 1010
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKR1000
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino MKRZERO
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino Nano 33 BLE
Nordic nRF52
External
NRF52840
64MHz
960KB
256KB
Arduino Nicla Sense ME
Nordic nRF52
On-board
NRF52832
64MHz
515.25KB
62.78KB
Arduino Tian
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Arduino Zero (Programming/Debug Port)
Atmel SAM
On-board
SAMD21G18A
48MHz
256KB
32KB
Arduino Zero (USB Native Port)
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Armstrap Eagle 1024
ST STM32
On-board
STM32F417VGT6
168MHz
1MB
192KB
Armstrap Eagle 2048
ST STM32
On-board
STM32F427VIT6
168MHz
1.99MB
256KB
Armstrap Eagle 512
ST STM32
On-board
STM32F407VET6
168MHz
512KB
192KB
Atmel ATSAMR21-XPRO
Atmel SAM
On-board
SAMR21G18A
48MHz
256KB
32KB
Atmel ATSAMW25-XPRO
Atmel SAM
On-board
SAMD21G18A
48MHz
256KB
32KB
Atmel SAMC21-XPRO
Atmel SAM
On-board
SAMC21J18A
48MHz
256KB
32KB
Atmel SAMD21-XPRO
Atmel SAM
On-board
SAMD21J18A
48MHz
256KB
32KB
BBC micro:bit V2
Nordic nRF52
On-board
NRF52833
64MHz
512KB
128KB
BL652 Development Kit
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
BL653 Development Kit
Nordic nRF52
On-board
NRF52833
64MHz
512KB
128KB
BL654 Development Kit
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
Big Tree Tech EBB42 V1.1
ST STM32
On-board
STM32G0B1RET6
64MHz
128KB
144KB
Black STM32F407VE
ST STM32
External
STM32F407VET6
168MHz
512KB
128KB
Black STM32F407VG
ST STM32
External
STM32F407VGT6
168MHz
512KB
128KB
Black STM32F407ZE
ST STM32
External
STM32F407ZET6
168MHz
512KB
128KB
Black STM32F407ZG
ST STM32
External
STM32F407ZGT6
168MHz
1MB
128KB
BlackPill F103C8
ST STM32
External
STM32F103C8T6
72MHz
64KB
20KB
BlackPill F103C8 (128k)
ST STM32
External
STM32F103C8T6
72MHz
128KB
20KB
BlackPill F303CC
ST STM32
External
STM32F303CCT6
72MHz
256KB
40KB
Blue STM32F407VE Mini
ST STM32
External
STM32F407VET6
168MHz
512KB
128KB
BluePill F103C6
ST STM32
External
STM32F103C6T6
72MHz
32KB
10KB
BluePill F103C8
ST STM32
External
STM32F103C8T6
72MHz
64KB
20KB
BluePill F103C8 (128k)
ST STM32
External
STM32F103C8T6
72MHz
128KB
20KB
Blues Cygnet
ST STM32
External
STM32L433CCT6
80MHz
256KB
64KB
Blues Swan R5
ST STM32
External
STM32L4R5ZIY6
120MHz
2MB
640KB
BluesWireless Swan R5
ST STM32
External
STM32L4R5ZIY6
120MHz
2MB
640KB
Bluey nRF52832 IoT
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
BluzDK
Nordic nRF51
External
NRF51822
32MHz
256KB
32KB
Calliope Mini v3
Nordic nRF52
External
NRF52833
64MHz
512KB
128KB
Cicada-L082CZ
ST STM32
External
STM32L082CZY6
32MHz
192KB
20KB
Circuit Playground Bluefruit
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Core board F401RCT6
ST STM32
External
STM32F401RCT6
84MHz
256KB
64KB
Cricket-L082CZ
ST STM32
External
STM32L082CZY6
32MHz
192KB
20KB
Delta DFBM-NQ620
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
Demo F030F4
ST STM32
External
STM32F030F4P6
48MHz
16KB
4KB
DevEBox H743VITX
ST STM32
External
STM32H743VIT6
480MHz
2MB
512KB
DevEBox H750VBTX
ST STM32
External
STM32H750VBT6
480MHz
512KB
128KB
Digistump DigiX
Atmel SAM
External
AT91SAM3X8E
84MHz
512KB
96KB
EFM32GG-STK3700 Giant Gecko
Silicon Labs EFM32
On-board
EFM32GG990F1024
48MHz
1MB
128KB
EFM32WG-STK3800 Wonder Gecko
Silicon Labs EFM32
On-board
EFM32WG990F256
48MHz
256KB
32KB
Econode-L082CZ
ST STM32
External
STM32L082CZY6
32MHz
192KB
20KB
ElectronutLabs Blip
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
ElectronutLabs Papyr
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
Electrosmith Daisy
ST STM32
External
STM32H750IBK6
400MHz
128KB
512KB
Electrosmith Daisy Patch SM
ST STM32
External
STM32H750IBK6
400MHz
128KB
512KB
Electrosmith Daisy Petal SM
ST STM32
External
STM32H750IBK6
400MHz
128KB
512KB
Elektor LoRa Node Core F072C8 (128 kB)
ST STM32
External
STM32F072C8T6
48MHz
128KB
16KB
Elektor LoRa Node Core F072C8 (64 kB)
ST STM32
External
STM32F072C8T6
48MHz
64KB
16KB
Espotel LoRa Module
ST STM32
External
STM32F411RET6
100MHz
512KB
128KB
F407VG
ST STM32
External
STM32F407VGT6
168MHz
1MB
128KB
FK407M1
ST STM32
External
STM32F407VET6
168MHz
512KB
128KB
FYSETC S6
ST STM32
External
STM32F446VET6
168MHz
512KB
128KB
Freescale Kinetis FRDM-KL25Z
Freescale Kinetis
On-board
MKL25Z128VLK4
48MHz
128KB
16KB
Gnat-L082CZ
ST STM32
External
STM32L082CZY6
32MHz
192KB
20KB
Grasshopper-L082CZ
ST STM32
External
STM32L082CZY6
32MHz
192KB
20KB
Holyiot YJ-16019
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
ItsyBitsy nRF52840 Express
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
L476DMW1K
ST STM32
On-board
STM32L476VGT6
80MHz
1MB
128KB
LPCXpresso11U68
NXP LPC
On-board
LPC11U68
50MHz
256KB
36KB
Laird Connectivity Pinnacle 100 DVK
Nordic nRF52
External
NRF52840
64MHz
1MB
256KB
Leafony Systems AP03
ST STM32
On-board
STM32L452RET6
80MHz
512KB
160KB
M200 V2
ST STM32
External
STM32F070CBT6
48MHz
120KB
14.81KB
M300
ST STM32
External
STM32F070CBT6
48MHz
120KB
14.81KB
MKR Sharky
ST STM32
External
STM32WB55CG
64MHz
512KB
192KB
MKR Vidor 4000
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
MTS Dragonfly
ST STM32
External
STM32F411RET6
100MHz
512KB
128KB
Makerdiary nRF52832-MDK
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
Makerdiary nRF52840-MDK
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
Malyan M200 V1
ST STM32
External
STM32F103CBT6
72MHz
120KB
20KB
Maple
ST STM32
External
STM32F103RBT6
72MHz
108KB
17KB
Maple (RET6)
ST STM32
External
STM32F103RET6
72MHz
256KB
48KB
Maple Mini Bootloader 2.0
ST STM32
External
STM32F103CBT6
72MHz
120KB
20KB
Maple Mini Original
ST STM32
External
STM32F103CBT6
72MHz
108KB
20KB
Mbed Connect Cloud
ST STM32
On-board
STM32F439ZIY6
168MHz
2MB
256KB
Metro nRF52840 Express
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Microduino Core STM32 to Flash
ST STM32
External
STM32F103CBT6
72MHz
105.47KB
20KB
Microsoft Azure IoT Development Kit (MXChip AZ3166)
ST STM32
On-board
STM32F412ZGT6
100MHz
1MB
256KB
Minitronics v2.0
Atmel SAM
External
SAMD21J18A
48MHz
256KB
32KB
Moteino M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
MultiTech mDot
ST STM32
External
STM32F411RET6
100MHz
512KB
128KB
MultiTech mDot F411
ST STM32
External
STM32F411RET6
100MHz
512KB
128KB
MultiTech xDot
ST STM32
External
STM32L151CCU6
32MHz
256KB
32KB
NAMote72
ST STM32
External
STM32L152RC
32MHz
256KB
32KB
NANO 33 IoT
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
NXP i.MX RT1010 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1011DAE5A
500MHz
64KB
128KB
NXP i.MX RT1015 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1015DAF5A
500MHz
96KB
128KB
NXP i.MX RT1020 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1021DAG5A
500MHz
8MB
32MB
NXP i.MX RT1050 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1052DVL6B
600MHz
8MB
32MB
NXP i.MX RT1060 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1062DVL6A
600MHz
8MB
32MB
NXP i.MX RT1064 Evaluation Kit
NXP i.MX RT
On-board
MIMXRT1064DVL6A
600MHz
8MB
32MB
NXP mbed LPC1768
NXP LPC
On-board
LPC1768
96MHz
512KB
64KB
Nordic Beacon Kit (PCA20006)
Nordic nRF51
On-board
NRF51822
32MHz
256KB
32KB
Nordic Thingy:52 (nRF52-PCA20020)
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
Nordic nRF51X22 Development Kit(PCA1000X)
Nordic nRF51
On-board
NRF51822
32MHz
256KB
32KB
Nordic nRF52-DK
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
Nordic nRF52833-DK
Nordic nRF52
On-board
NRF52833
64MHz
512KB
128KB
Nordic nRF52840-DK
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
Nordic nRF52840-DK (Adafruit BSP)
Nordic nRF52
On-board
NRF52840
64MHz
796KB
243KB
Nucleo G070RB
ST STM32
On-board
STM32G070RBT6
64MHz
128KB
36KB
Nucleo G071RB
ST STM32
On-board
STM32G071RBT6
64MHz
128KB
36KB
Nucleo G431KB
ST STM32
On-board
STM32G431KBT6
170MHz
128KB
32KB
Nucleo G431RB
ST STM32
On-board
STM32G431RBT6
170MHz
128KB
32KB
Nucleo G474RE
ST STM32
On-board
STM32G474RET6
170MHz
512KB
128KB
OLIMEXINO-STM32
ST STM32
External
STM32F103RBT6
72MHz
128KB
20KB
OSHChip
Nordic nRF51
External
NRF51822
32MHz
256KB
32KB
Olimex OLIMEXINO-STM32F3
ST STM32
External
STM32F303RCT6
72MHz
256KB
40KB
Olimex STM32-H103
ST STM32
External
STM32F103RBT6
72MHz
128KB
20KB
Olimex STM32-P405
ST STM32
External
STM32F405RGT6
168MHz
1MB
128KB
P-Nucleo WB55RG
ST STM32
On-board
STM32WB55RG
64MHz
512KB
192KB
PHYTEC reel board
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
PHYTEC reel board v2
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
PYBSTICK26 Duino
ST STM32
External
STM32F072RB
48MHz
128KB
16KB
PYBStick 26 Pro
ST STM32
External
STM32F412RE
100MHz
512KB
256KB
PYBStick Lite 26
ST STM32
External
STM32F401CEU6
84MHz
512KB
96KB
PYBStick Standard 26
ST STM32
External
STM32F411CEU6
100MHz
512KB
128KB
Particle Argon
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Particle Boron
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Particle Xenon
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
Piconomix PX-HER0
ST STM32
External
STM32L072RB
32MHz
128KB
20KB
PrntrBoard V2
ST STM32
External
STM32F407VET6
168MHz
512KB
128KB
RAK811 LoRa Tracker
ST STM32
External
STM32L151RBT6
32MHz
128KB
16KB
RAK811 LoRa Tracker
ST STM32
External
STM32L151RBT6
32MHz
128KB
32KB
RHF76 052
ST STM32
External
STM32L051C8T6
32MHz
64KB
8KB
RYMCU Nebula Pi F103VE (64k RAM. 512k Flash)
ST STM32
External
STM32F103VET6
72MHz
512KB
64KB
RYMCU STM32F407VE (192k RAM. 512k Flash)
ST STM32
External
STM32F407VET6
168MHz
502.23KB
128KB
Raytac MDBT50Q-RX Dongle
Nordic nRF52
External
NRF52840
64MHz
796KB
243KB
RedBearLab BLE Nano 1.5
Nordic nRF51
On-board
NRF51822
16MHz
256KB
32KB
RedBearLab BLE Nano 2
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
RedBearLab Blend 2
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
RedBearLab nRF51822
Nordic nRF51
On-board
NRF51822
16MHz
256KB
16KB
RushUp Cloud-JAM
ST STM32
On-board
STM32F401RET6
84MHz
512KB
96KB
RushUp Cloud-JAM L4
ST STM32
On-board
STM32L476RGT6
80MHz
1MB
128KB
Ruuvi Tag
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
SDT52832B
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
SLSTK3400A USB-enabled Happy Gecko
Silicon Labs EFM32
On-board
EFM32HG322F64
25MHz
64KB
8KB
SLSTK3701A Giant Gecko S1
Silicon Labs EFM32
On-board
EFM32GG11B820F2048GL192
48MHz
2MB
512KB
SODAQ Autonomo
Atmel SAM
External
SAMD21J18A
48MHz
256KB
32KB
SODAQ ExpLoRer
Atmel SAM
External
SAMD21J18A
48MHz
256KB
32KB
SODAQ ONE
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SODAQ SARA
Atmel SAM
External
SAMD21J18A
48MHz
256KB
32KB
SODAQ SFF
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
ST 32F3348DISCOVERY
ST STM32
On-board
STM32F334C8T6
72MHz
64KB
12KB
ST 32F401CDISCOVERY
ST STM32
On-board
STM32F401VCT6
84MHz
256KB
64KB
ST 32F411EDISCOVERY
ST STM32
On-board
STM32F411VET6
100MHz
512KB
128KB
ST 32F413HDISCOVERY
ST STM32
On-board
STM32F413ZHT6
100MHz
1.50MB
320KB
ST 32F429IDISCOVERY
ST STM32
On-board
STM32F429ZIT6
180MHz
2MB
256KB
ST 32F469IDISCOVERY
ST STM32
On-board
STM32F469NIH6
180MHz
2MB
384KB
ST 32F746GDISCOVERY
ST STM32
On-board
STM32F746NGH6
216MHz
1MB
320KB
ST 32F769IDISCOVERY
ST STM32
On-board
STM32F769NIH6
216MHz
2MB
512KB
ST 32L0538DISCOVERY
ST STM32
On-board
STM32L053C8T6
32MHz
64KB
8KB
ST 32L100DISCOVERY
ST STM32
On-board
STM32L100RCT6
32MHz
256KB
16KB
ST 32L476GDISCOVERY
ST STM32
On-board
STM32L476VGT6
80MHz
1MB
128KB
ST 32L496GDISCOVERY
ST STM32
On-board
STM32L496AGI6
80MHz
1MB
320KB
ST B-G431B-ESC1 Discovery
ST STM32
On-board
STM32G431CBU6
170MHz
128KB
32KB
ST B-L475E-IOT01A Discovery kit
ST STM32
On-board
STM32L475VGT6
80MHz
1MB
96KB
ST B-U585I-IOT02A Discovery
ST STM32
On-board
STM32U585AII6Q
160MHz
2MB
256KB
ST DISCO-L072CZ-LRWAN1
ST STM32
On-board
STM32L072CZ
32MHz
192KB
20KB
ST Discovery F072RB
ST STM32
On-board
STM32F072RBT6
48MHz
128KB
16KB
ST NUCLEO-G031K8
ST STM32
On-board
STM32G031K8
64MHz
64KB
8KB
ST Nucleo F030R8
ST STM32
On-board
STM32F030R8T6
48MHz
64KB
8KB
ST Nucleo F031K6
ST STM32
On-board
STM32F031K6T6
48MHz
32KB
4KB
ST Nucleo F042K6
ST STM32
On-board
STM32F042K6T6
48MHz
32KB
6KB
ST Nucleo F070RB
ST STM32
On-board
STM32F070RBT6
48MHz
128KB
16KB
ST Nucleo F072RB
ST STM32
On-board
STM32F072RBT6
48MHz
128KB
16KB
ST Nucleo F091RC
ST STM32
On-board
STM32F091RCT6
48MHz
256KB
32KB
ST Nucleo F103RB
ST STM32
On-board
STM32F103RBT6
72MHz
128KB
20KB
ST Nucleo F207ZG
ST STM32
On-board
STM32F207ZGT6
120MHz
1MB
128KB
ST Nucleo F302R8
ST STM32
On-board
STM32F302R8T6
72MHz
64KB
16KB
ST Nucleo F303K8
ST STM32
On-board
STM32F303K8T6
72MHz
64KB
12KB
ST Nucleo F303RE
ST STM32
On-board
STM32F303RET6
72MHz
512KB
64KB
ST Nucleo F303ZE
ST STM32
On-board
STM32F303ZET6
72MHz
512KB
64KB
ST Nucleo F334R8
ST STM32
On-board
STM32F334R8T6
72MHz
64KB
16KB
ST Nucleo F401RE
ST STM32
On-board
STM32F401RET6
84MHz
512KB
96KB
ST Nucleo F410RB
ST STM32
On-board
STM32F410RBT6
100MHz
128KB
32KB
ST Nucleo F411RE
ST STM32
On-board
STM32F411RET6
100MHz
512KB
128KB
ST Nucleo F412ZG
ST STM32
On-board
STM32F412ZGT6
100MHz
1MB
256KB
ST Nucleo F413ZH
ST STM32
On-board
STM32F413ZHT6
100MHz
1.50MB
320KB
ST Nucleo F429ZI
ST STM32
On-board
STM32F429ZIT6
180MHz
2MB
192KB
ST Nucleo F439ZI
ST STM32
On-board
STM32F439ZIT6
180MHz
2MB
192KB
ST Nucleo F446RE
ST STM32
On-board
STM32F446RET6
180MHz
512KB
128KB
ST Nucleo F446ZE
ST STM32
On-board
STM32F446ZET6
180MHz
512KB
128KB
ST Nucleo F722ZE
ST STM32
On-board
STM32F722ZET6
216MHz
512KB
256KB
ST Nucleo F746ZG
ST STM32
On-board
STM32F746ZGT6
216MHz
1MB
320KB
ST Nucleo F756ZG
ST STM32
On-board
STM32F756ZG
216MHz
1MB
320KB
ST Nucleo F767ZI
ST STM32
On-board
STM32F767ZIT6
216MHz
2MB
512KB
ST Nucleo G0B1RE
ST STM32
On-board
STM32G0B1RET6
64MHz
512KB
144KB
ST Nucleo H723ZG
ST STM32
On-board
STM32H723ZGT6
550MHz
1MB
320KB
ST Nucleo H743ZI
ST STM32
On-board
STM32H743ZIT6
400MHz
2MB
512KB
ST Nucleo H745ZI-Q
ST STM32
On-board
STM32H745ZIT6
480MHz
1MB
512KB
ST Nucleo H753ZI
ST STM32
On-board
STM32H753ZIT6
400MHz
2MB
512KB
ST Nucleo L010RB
ST STM32
On-board
STM32L010RBT6
32MHz
128KB
20KB
ST Nucleo L011K4
ST STM32
On-board
STM32L011K4T6
32MHz
16KB
2KB
ST Nucleo L031K6
ST STM32
On-board
STM32L031K6T6
32MHz
32KB
8KB
ST Nucleo L053R8
ST STM32
On-board
STM32L053R8T6
32MHz
64KB
8KB
ST Nucleo L073RZ
ST STM32
On-board
STM32L073RZ
32MHz
192KB
20KB
ST Nucleo L152RE
ST STM32
On-board
STM32L152RET6
32MHz
512KB
80KB
ST Nucleo L412KB
ST STM32
On-board
STM32L412KBU6
80MHz
128KB
40KB
ST Nucleo L412RB-P
ST STM32
On-board
STM32L412RBT6P
80MHz
128KB
40KB
ST Nucleo L432KC
ST STM32
On-board
STM32L432KCU6
80MHz
256KB
64KB
ST Nucleo L433RC-P
ST STM32
On-board
STM32L433RC
80MHz
256KB
64KB
ST Nucleo L452RE
ST STM32
On-board
STM32L452RET6
80MHz
512KB
160KB
ST Nucleo L476RG
ST STM32
On-board
STM32L476RGT6
80MHz
1MB
96KB
ST Nucleo L486RG
ST STM32
On-board
STM32L486RGT6
80MHz
1MB
128KB
ST Nucleo L496ZG
ST STM32
On-board
STM32L496ZGT6
80MHz
1MB
320KB
ST Nucleo L496ZG-P
ST STM32
On-board
STM32L496ZGT6P
80MHz
1MB
320KB
ST Nucleo L4R5ZI
ST STM32
On-board
STM32L4R5ZIT6
120MHz
2MB
640KB
ST Nucleo L552ZE-Q
ST STM32
On-board
STM32L552ZET6
80MHz
512KB
192KB
ST Nucleo U575ZI-Q
ST STM32
On-board
STM32U575ZIT6Q
160MHz
2MB
256KB
ST STM32F0308DISCOVERY
ST STM32
On-board
STM32F030R8T6
48MHz
64KB
8KB
ST STM32F0DISCOVERY
ST STM32
On-board
STM32F051R8T6
48MHz
64KB
8KB
ST STM32F3DISCOVERY
ST STM32
On-board
STM32F303VCT6
72MHz
256KB
40KB
ST STM32F4DISCOVERY
ST STM32
On-board
STM32F407VGT6
168MHz
1MB
128KB
ST STM32G0316-DISCO
ST STM32
External
STM32G031J6
64MHz
32KB
8KB
ST STM32G071B Discovery
ST STM32
On-board
STM32G071RBT6
64MHz
128KB
36KB
ST STM32L073Z-EVAL
ST STM32
On-board
STM32L073VZT6
32MHz
192KB
20KB
ST STM32L4+ Discovery kit IoT node
ST STM32
On-board
STM32L4S5VIT6
80MHz
2MB
640KB
ST STM32LDISCOVERY
ST STM32
On-board
STM32L152RBT6
32MHz
128KB
16KB
ST STM32VLDISCOVERY
ST STM32
On-board
STM32F100RBT6
24MHz
128KB
8KB
ST Sensor Node
ST STM32
On-board
STM32L476JG
80MHz
1MB
128KB
STEVAL-FCU001V1 Flight controller unit evaluation board
ST STM32
External
STM32F401CCU6
84MHz
256KB
64KB
STM32-E407
ST STM32
External
STM32F407ZGT6
168MHz
1MB
128KB
STM32-H407
ST STM32
External
STM32F407ZGT6
168MHz
1MB
128KB
STM3210C-EVAL
ST STM32
External
STM32F107VCT6
72MHz
256KB
64KB
STM32373C-EVAL
ST STM32
External
STM32F373VCT6
72MHz
256KB
32KB
STM32F072-EVAL
ST STM32
External
STM32F072VBT6
48MHz
128KB
16KB
STM32F103C4 (6k RAM. 16k Flash)
ST STM32
External
STM32F103C4T6
72MHz
16KB
6KB
STM32F103C6 (10k RAM. 32k Flash)
ST STM32
External
STM32F103C6T6
72MHz
32KB
10KB
STM32F103C8 (20k RAM. 64k Flash)
ST STM32
External
STM32F103C8T6
72MHz
64KB
20KB
STM32F103CB (20k RAM. 128k Flash)
ST STM32
External
STM32F103CBT6
72MHz
128KB
20KB
STM32F103R4 (6k RAM. 16k Flash)
ST STM32
External
STM32F103R4T6
72MHz
16KB
6KB
STM32F103R6 (10k RAM. 32k Flash)
ST STM32
External
STM32F103R6T6
72MHz
32KB
10KB
STM32F103R8 (20k RAM. 64 Flash)
ST STM32
External
STM32F103R8T6
72MHz
64KB
20KB
STM32F103RB (20k RAM. 128k Flash)
ST STM32
External
STM32F103RBT6
72MHz
128KB
20KB
STM32F103RC (48k RAM. 256k Flash)
ST STM32
External
STM32F103RCT6
72MHz
256KB
48KB
STM32F103RD (64k RAM. 384k Flash)
ST STM32
External
STM32F103RDT6
72MHz
384KB
64KB
STM32F103RE (64k RAM. 512k Flash)
ST STM32
External
STM32F103RET6
72MHz
512KB
64KB
STM32F103RF (96k RAM. 768k Flash)
ST STM32
External
STM32F103RFT6
72MHz
768KB
96KB
STM32F103RG (96k RAM. 1024k Flash)
ST STM32
External
STM32F103RGT6
72MHz
1MB
96KB
STM32F103T4 (6k RAM. 16k Flash)
ST STM32
External
STM32F103T4U6
72MHz
16KB
6KB
STM32F103T6 (10k RAM. 32k Flash)
ST STM32
External
STM32F103T6U6
72MHz
32KB
10KB
STM32F103T8 (20k RAM. 64k Flash)
ST STM32
External
STM32F103T8U6
72MHz
64KB
20KB
STM32F103TB (20k RAM. 128k Flash)
ST STM32
External
STM32F103TBU6
72MHz
128KB
20KB
STM32F103V8 (20k RAM. 64k Flash)
ST STM32
External
STM32F103V8T6
72MHz
64KB
20KB
STM32F103VB (20k RAM. 128k Flash)
ST STM32
External
STM32F103VBT6
72MHz
128KB
20KB
STM32F103VC (48k RAM. 256k Flash)
ST STM32
External
STM32F103VCT6
72MHz
256KB
48KB
STM32F103VD (64k RAM. 384k Flash)
ST STM32
External
STM32F103VDT6
72MHz
384KB
64KB
STM32F103VE (64k RAM. 512k Flash)
ST STM32
External
STM32F103VET6
72MHz
512KB
64KB
STM32F103VF (96k RAM. 768k Flash)
ST STM32
External
STM32F103VFT6
72MHz
768KB
96KB
STM32F103VG (96k RAM. 1024k Flash)
ST STM32
External
STM32F103VGT6
72MHz
1MB
96KB
STM32F103ZC (48k RAM. 256k Flash)
ST STM32
External
STM32F103ZCT6
72MHz
256KB
48KB
STM32F103ZD (64k RAM. 384k Flash)
ST STM32
External
STM32F103ZDT6
72MHz
384KB
64KB
STM32F103ZE (64k RAM. 512k Flash)
ST STM32
External
STM32F103ZET6
72MHz
512KB
64KB
STM32F103ZF (96k RAM. 768k Flash)
ST STM32
External
STM32F103ZFT6
72MHz
768KB
96KB
STM32F103ZG (96k RAM. 1024k Flash)
ST STM32
External
STM32F103ZGT6
72MHz
1MB
96KB
STM32F303CB (32k RAM. 128k Flash)
ST STM32
External
STM32F303CBT6
72MHz
128KB
32KB
STM32F373RC (32k RAM. 256k Flash)
ST STM32
External
STM32F373RCT6
72MHz
256KB
32KB
STM32F401CB (64k RAM. 128k Flash)
ST STM32
External
STM32F401CBU6
84MHz
128KB
64KB
STM32F401CC (64k RAM. 256k Flash)
ST STM32
External
STM32F401CCU6
84MHz
256KB
64KB
STM32F401CD (96k RAM. 384k Flash)
ST STM32
External
STM32F401CDU6
84MHz
384KB
96KB
STM32F401CE (96k RAM. 512k Flash)
ST STM32
External
STM32F401CEU6
84MHz
512KB
96KB
STM32F401RB (64k RAM. 128k Flash)
ST STM32
External
STM32F401RBT6
84MHz
128KB
64KB
STM32F401RC (64k RAM. 256k Flash)
ST STM32
External
STM32F401RCT6
84MHz
256KB
64KB
STM32F401RD (96k RAM. 384k Flash)
ST STM32
External
STM32F401RDT6
84MHz
384KB
96KB
STM32F401RE (96k RAM. 512k Flash)
ST STM32
External
STM32F401RET6
84MHz
512KB
96KB
STM32F405RG (128k RAM. 1024k Flash)
ST STM32
External
STM32F405RGT6
168MHz
1MB
128KB
STM32F407IG (192k RAM. 1024k Flash)
ST STM32
External
STM32F407IGT6
168MHz
1MB
192KB
STM32F410C8 (32k RAM. 64k Flash)
ST STM32
External
STM32F410C8T6
100MHz
64KB
32KB
STM32F410CB (32k RAM. 128k Flash)
ST STM32
External
STM32F410CBT6
100MHz
128KB
32KB
STM32F410R8 (32k RAM. 64k Flash)
ST STM32
External
STM32F410R8T6
100MHz
64KB
32KB
STM32F410RB (32k RAM. 128k Flash)
ST STM32
External
STM32F410RBT6
100MHz
128KB
32KB
STM32F411CC (128k RAM. 256k Flash)
ST STM32
External
STM32F411CCU6
100MHz
256KB
128KB
STM32F411CE (128k RAM. 512k Flash)
ST STM32
External
STM32F411CEU6
100MHz
512KB
128KB
STM32F411RC (128k RAM. 256k Flash)
ST STM32
External
STM32F411RCT6
100MHz
256KB
128KB
STM32F411RE (128k RAM. 512k Flash)
ST STM32
External
STM32F411RET6
100MHz
512KB
128KB
STM32F412CE (256k RAM. 512k Flash)
ST STM32
External
STM32F412CEU6
100MHz
512KB
256KB
STM32F412CG (256k RAM. 1024k Flash)
ST STM32
External
STM32F412CGU6
100MHz
1MB
256KB
STM32F412RE (256k RAM. 512k Flash)
ST STM32
External
STM32F412RET6
100MHz
512KB
256KB
STM32F412RG (256k RAM. 1024k Flash)
ST STM32
External
STM32F412RGT6
100MHz
1MB
256KB
STM32F413CG (320k RAM. 1024k Flash)
ST STM32
External
STM32F413CGU6
100MHz
1MB
320KB
STM32F413CH (320k RAM. 1536k Flash)
ST STM32
External
STM32F413CHU6
100MHz
1.50MB
320KB
STM32F413RG (320k RAM. 1024k Flash)
ST STM32
External
STM32F413RGT6
100MHz
1MB
320KB
STM32F413RH (320k RAM. 1536k Flash)
ST STM32
External
STM32F413RHT6
100MHz
1.50MB
320KB
STM32F415RG (128k RAM. 1024k Flash)
ST STM32
External
STM32F415RGT6
168MHz
1MB
128KB
STM32F417VE (128k RAM. 512k Flash)
ST STM32
External
STM32F417VET6
168MHz
512KB
128KB
STM32F417VG (128k RAM. 1024k Flash)
ST STM32
External
STM32F417VGT6
168MHz
1MB
128KB
STM32F423CH (320k RAM. 1536k Flash)
ST STM32
External
STM32F423CHU6
100MHz
1.50MB
320KB
STM32F423RH (320k RAM. 1536k Flash)
ST STM32
External
STM32F423RHT6
100MHz
1.50MB
320KB
STM32F446RC (128k RAM. 256k Flash)
ST STM32
External
STM32F446RCT6
180MHz
256KB
128KB
STM32F446RE (128k RAM. 512k Flash)
ST STM32
External
STM32F446RET6
180MHz
512KB
128KB
STM32F7508-DK
ST STM32
On-board
STM32F750N8H6
216MHz
64KB
340KB
STM32G431CB (32k RAM. 128k Flash)
ST STM32
External
STM32G431CBU6
170MHz
128KB
32KB
STM32H735G-DK Discovery kit
ST STM32
On-board
STM32H735IGK6
550MHz
1MB
432KB
STM32H747I-DISCO
ST STM32
On-board
STM32H747XIH6
400MHz
2MB
512KB
STM32H750VBT6 (1024k RAM. 128k Flash)
ST STM32
External
STM32H750VBT6
480MHz
128KB
1MB
STorM32 BGC v1.31 RC
ST STM32
External
STM32F103RCT6
72MHz
256KB
48KB
SainSmart Due (Programming Port)
Atmel SAM
External
AT91SAM3X8E
84MHz
512KB
96KB
SainSmart Due (USB Native Port)
Atmel SAM
External
AT91SAM3X8E
84MHz
512KB
96KB
Seeed Arch Max
ST STM32
On-board
STM32F407VET6
168MHz
512KB
192KB
Seeed Tiny BLE
Nordic nRF51
On-board
NRF51822
16MHz
256KB
16KB
Seeed Wio 3G
ST STM32
On-board
STM32F439VI
180MHz
2MB
256KB
Seeeduino Femto M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Seeeduino LoRaWAN
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Seeeduino Wio Lite MG126
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Seeeduino Wio Terminal
Atmel SAM
External
SAMD51P19A
120MHz
496KB
192KB
Seeeduino XIAO
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Seeeduino Zero
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SensorTile.box
ST STM32
External
STM32L4R9ZI
120MHz
2MB
640KB
Sigma IC AGAFIA SG0
ST STM32
External
STM32G071RBT6
64MHz
128KB
36KB
Sino:Bit
Nordic nRF51
External
NRF51822
32MHz
256KB
32KB
SparkFun 9DoF Razor IMU M0
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SparkFun MicroMod STM32F405
ST STM32
External
STM32F405RGT6
168MHz
1MB
128KB
SparkFun Qwiic Micro
Atmel SAM
External
SAMD21E18A
48MHz
256KB
32KB
SparkFun RedBoard Turbo
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SparkFun SAMD21 Dev Breakout
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SparkFun SAMD21 Mini Breakout
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
SparkFun SAMD21 Pro RF
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
Sparky V1 F303
ST STM32
External
STM32F303CCT6
72MHz
256KB
40KB
Taida Century nRF52 mini board
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
ThunderPack v1.0
ST STM32
External
STM32L072KZ
32MHz
192KB
20KB
ThunderPack v1.1+
ST STM32
External
STM32F411CEU6
100MHz
512KB
128KB
Thunderboard Sense 2 Sensor-to-Cloud Advanced IoT
Silicon Labs EFM32
On-board
EFR32MG12P432F1024
40MHz
1MB
256KB
Tiny STM103T
ST STM32
External
STM32F103TBU6
72MHz
128KB
20KB
Tuino 096
Atmel SAM
External
SAMD21G18A
48MHz
256KB
32KB
VAkE v1.0
ST STM32
External
STM32F446RET6
180MHz
512KB
128KB
VCCGND F103ZET6 Mini
ST STM32
External
STM32F103ZET6
72MHz
512KB
64KB
VCCGND F407ZGT6 Mini
ST STM32
External
STM32F407ZGT6
168MHz
1MB
128KB
VNG VBLUno52
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
Waveshare BLE400
Nordic nRF51
External
NRF51822
32MHz
256KB
32KB
Waveshare Open103Z
ST STM32
External
STM32F103ZET6
72MHz
512KB
64KB
WeAct Studio BlackPill V2.0 (STM32F401CC)
ST STM32
External
STM32F401CCU6
84MHz
256KB
64KB
WeAct Studio BlackPill V2.0 (STM32F411CE)
ST STM32
External
STM32F411CEU6
100MHz
512KB
128KB
WeAct Studio BlackPill V3.0 (STM32F401CE)
ST STM32
External
STM32F401CEU6
84MHz
512KB
96KB
WeAct Studio MiniSTM32H743VITX
ST STM32
External
STM32H743VIT6
480MHz
2MB
512KB
WeAct Studio MiniSTM32H750VBTX
ST STM32
External
STM32H750VBT6
480MHz
512KB
128KB
Wraith V1 ESC
ST STM32
External
STM32F051K6
48MHz
32KB
7.75KB
decaWave DWM1001 Module Development Board
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
hackaBLE
Nordic nRF52
External
NRF52832
64MHz
512KB
64KB
ng-beacon
Nordic nRF51
External
NRF51822
16MHz
256KB
32KB
sakura.io Evaluation Board
ST STM32
On-board
STM32F411RET6
100MHz
1MB
128KB
u-blox BMD-345-EVAL
Nordic nRF52
On-board
NRF52840
64MHz
1MB
256KB
u-blox C030-N211 IoT Starter Kit
ST STM32
External
STM32F437VG
180MHz
1MB
256KB
u-blox C030-R410M IoT
ST STM32
On-board
STM32F437VG
180MHz
1MB
256KB
u-blox C030-U201 IoT Starter Kit
ST STM32
External
STM32F437VG
180MHz
1MB
256KB
u-blox EVK-NINA-B1
Nordic nRF52
On-board
NRF52832
64MHz
512KB
64KB
u-blox EVK-ODIN-W2
ST STM32
External
STM32F439ZIY6
168MHz
2MB
256KB
u-blox ODIN-W2
ST STM32
On-board
STM32F439ZIY6
168MHz
2MB
256KB