STM32 [Мозаика системного администрирования]
Содержание
STM32
Оборудование
STLINK-V3MINI
Адаптер
Разъёмы
STM32MP157A
Программы
STM32CubeProgrammer
STM32CubeMX
STM32CubeIDE
SW4STM32
Настройка
Дерево устройств
GPIO
Аббревиатуры регистров
Загрузка
Код ПЗУ
FSBL
SSBL
TF-A
U-Boot
Linux
Документация
STLinux
Ссылки
STM32 — семейство 32-битных микроконтроллеров производства STMicroelectronics.
https://wiki.st.com/stm32mpu/
STLINK-V3MINI — компактный внутрисхемный программатор и отладчик для STM32.
STLINK-V3MINI
Определяется так:
0483:374e STMicroelectronics STLINK-V3
Имя UART порта: /dev/ttyACM0
Product Specification (DB3737), оригинал
UM2502 User manual, оригинал
3D–модель корпуса: STLinkV3 Mini Enclosure by JRad
Адаптер
Разъёмы
STDC14
┌───────────────────────┐ │ 2 4 6 8 10 12 14 │ │ • • • • • • • │ │ │ │ • • • • • • • │ │ 1 3 5 7 9 11 13 │ └───────── ─────────┘
№ контакта | Назначение |
---|---|
1 | — |
2 | |
3 | VCC 1) |
4 | TMS/SWDIO |
5 | GND |
6 | TCK/SWCLK |
7 | GND |
8 | T_JTDO/T_SWO 2) |
9 | T_JCLK |
10 | T_JTDI/NC 3) |
11 | GNDDetect 4) |
12 | T_NRST |
13 | T_VCP_RX |
14 | T_VCP_TX |
ARM20
IDC-20
┌────────────────────────────────┐ │ 2 4 6 8 10 12 14 16 18 20 │ │ • • • • • • • • • • │ │ │ │ • • • • • • • • • • │ │ 1 3 5 7 9 11 13 15 17 19 │ └──────────── ────────────┘
№ контакта | Назначение |
---|---|
1 | VCC |
2 | VSUPPLY |
3 | nTRST |
4 | GND |
5 | TDI |
6 | GND |
7 | TMS/SWDIO |
8 | GND |
9 | TCK/SWCLK |
10 | GND |
11 | RTCK |
12 | GND |
13 | TDO/SWO |
14 | GND |
15 | nSRST (NRST) |
16 | GND |
17 | DBGRQ |
18 | GND |
19 | DBGACK |
20 | GND |
Соответствие контактов на разъёмах:
№ контакта | Назначение | |
---|---|---|
STDC14 | ARM20 | |
3 | 1 | VTref |
4 | 7 | TMS/SWDIO |
5 | GND | |
6 | 9 | TCK/SWCLK |
7 | GND | |
8 | 13 | TDO/SWO |
9 | 11 | T_JCLK / RTCK |
10 | 5 | T_JTDI/NC / TDI |
11 | GNDDetect 6) | |
12 | 15 | NRST |
13 | — | RX |
14 | — | TX |
STM32MP157A
STM32MP157A — STMicroelectronics
STM32MP15 resources — stm32mpu
Тип | Код | Название | Версия | Дата | Ссылка |
---|---|---|---|---|---|
Product Specifications | DS12504 | Arm® dual Cortex®-A7 800 MHz + Cortex®-M4 MPU, 3D GPU, TFT/DSI, 37 comm. interfaces, 29 timers, adv. analog | 6.0 | 2021-05-18 | оригинал |
Reference Manuals | RM0436 | STM32MP157 advanced Arm®-based 32-bit MPUs | 5.0 | 2021-01-21 | оригинал |
Application Notes | AN5031 | Getting started with STM32MP151, STM32MP153 and STM32MP157 line hardware development | 3.0 | 2021-01-21 | оригинал |
AN5275 | USB DFU/USART protocols used in STM32MP1 Series bootloaders | 1.0 | 2019-10-15 | оригинал | |
AN5168 | STM32MP1 series DDR configuration | 2.0 | 2021-10-19 | оригинал | |
Programming Manuals | PM0214 | STM32 Cortex®-M4 MCUs and MPUs programming manual | 10.0 | 2020-03-23 | оригинал |
Errata sheets | ES0438 | STM32MP15xx device errata | 6.0 | 2021-02-25 | оригинал |
Develop on Arm® Cortex®-M4 — stm32mpu
ST-MCU-FINDER-PC | STM32 and STM8 product finder for desktops |
STM32CubeProgrammer
STM32CubeProgrammer — это официальный инструмент от STMicroelectronics для создания разделов на любом накопителе, доступном на платформе STM32.
После создания STM32CubeProgrammer позволяет записывать и обновлять разделы предварительно созданными двоичными файлами.
Соединение между ПК и платой c STM32 может быть установлено через UART или USB.
STM32CubeProg
STM32CubeProgrammer — Wiki
UM2237 STM32CubeProgrammer software description, оригинал
Возможно понадобится установить пакет libusb
apt install libusb-1.0-0
После установки нужно добавить правила udev:
#!/bin/sh cd ~/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules sudo cp *.* /etc/udev/rules.d/
правила от STM32CubeProgrammer v.2.8.0
Версия 2.8.0 не работает в Debian GNU/Linux — нужно использовать 2.7.0 или 2.6.0.
Linux — STM32CubeProgrammer 2.8.0 crashes clicking connect
How to find the DEVICE_PORT_LOCATION parameter value for the USB link
STSW-LINK009 — ST-LINK, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 USB driver signed for Windows7, Windows8, Windows10 — STMicroelectronics
Preparing the USB serial link for flashing
STM32CubeMX
STM32CubeMX is a graphical tool that allows a very easy configuration of STM32 microcontrollers and microprocessors, as well as the generation of the corresponding initialization C code
STM32CubeMX
https://wiki. st.com/stm32mpu/wiki/STM32CubeMX
UM1718 User manual. STM32CubeMX for STM32 configuration and initialization C code generation. оригинал
STM32MP15 — STM32CubeMX generated device tree
STM32CubeIDE
Integrated Development Environment for STM32.
STM32CubeIDE is an advanced C/C++ development platform with peripheral configuration, code generation, code compilation, and debug features for STM32 microcontrollers and microprocessors. It is based on the Eclipse®/CDT framework and GCC toolchain for the development, and GDB for the debugging. It allows the integration of the hundreds of existing plugins that complete the features of the Eclipse® IDE.
STM32CubeIDE
https://wiki.st.com/stm32mpu/wiki/STM32CubeIDE
OpenSTLinux project support — Cortex®-A
How to install the Yocto Project SDK in STM32CubeIDE — stm32mpu
SW4STM32
Это старое решение — используйте STM32CubeIDE
The System Workbench toolchain, called SW4STM32, is a free multi-OS software development environment based on Eclipse, which supports the full range of STM32 microcontrollers and associated boards.
System Workbench for STM32: free IDE on Windows, Linux and OS X
Downloading the System Workbench for STM32 installer
Переход с Keil на SW4STM32 | Radiotech.kz
Дерево устройств
Расширения файлов:
.dts
— источник дерева устройств (DTS). Этот формат представляет собой текстовое представление дерева устройств в форме, которая может быть обработана DTC (компилятором дерева устройств) в двоичный файл, ожидаемый программными компонентами: ядром Linux, U-Boot и TF-A..dtsi
— исходные файлы, которые могут быть включены из файла DTS. h
— файлы заголовков, которые могут быть включены из файлов DTS и DTSI
Процесс построения дерева устройств:
оригинал
Инструмент под названием DTC (Компилятор дерева устройств) позволяет компилировать исходные файлы DTS в двоичный файл.
Для настройки нужно использовать STM32CubeMX.
Готовые файлы удобно редактировать, использую стандартный редактор в Midnight Commander, для этого создан файл подсветки синтаксиса devicetree.syntax. Для включение нужно добавить в настройки (подробнее о настройке здесь):
- Syntax
file ..\*\\.(dts|dtsi)$ DeviceTree\sFile include devicetree.syntax
Device tree
https://www.devicetree.org/
GPIO
Во время и сразу после сброса альтернативные функции не активны, а большинство портов ввода–вывода настроены на вход (input floating mode).
Когда контакт настроен как выход, значение, записанное в регистр выходных данных (GPIOx_ODR), выводится на контакт ввода–вывода. Выходной драйвер можно использовать в режиме push–pull или в режиме с открытым коллектором (open-drain), работает только низкий уровень, высокий уровень — HI-Z (Z–состояние).
Регистр входных данных (GPIOx_IDR) фиксирует данные, присутствующие на контакте ввода-вывода в каждом такте AHB(Advanced High–performance Bus).
оригинал
оригинал
13.3.1 General-purpose I/O (GPIO)
During and just after reset, the alternate functions are not active and most of the I/O ports are configured in input floating mode.
When the pin is configured as output, the value written to the output data register (GPIOx_ODR) is output on the I/O pin. It is possible to use the output driver in push-pull mode or open-drain mode (only the low level is driven, high level is HI-Z).
The input data register (GPIOx_IDR) captures the data present on the I/O pin at every AHB clock cycle
RM0436 — STM32MP157 advanced Arm®-based 32-bit MPUs
GPIO используется для настройки линий ввода–вывода. Каждая группа GPIO состоит из 8 линий (K и Z) или 16 линий (A–J).
Аббревиатуры регистров
В описаниях регистров используются следующие сокращения (x = A до H, K или Z) :
GPIOx_MODER | GPIO port mode register | |
GPIOx_OTYPER | GPIO output type register | |
GPIOx_OSPEEDR | GPIO output speed register | |
GPIOx_PUPDR | GPIO port pull-up / pull-down register | |
GPIOx_IDR | GPIO port input data register | чтение состояний (вход) |
GPIOx_ODR | GPIO port output data register | запись состояний (выход) |
GPIOx_BSRR | GPIO port bit set / reset register | побитная запись в регистр (выход) |
GPIOx_LCKR | GPIO port configuration lock register | |
GPIOx_AFRL | GPIO alternate function low register | |
GPIOx_AFRH | GPIO alternate function high register | |
GPIOx_ASCR | GPIO port analog switch control register |
GPIO internal peripheral
Pinctrl overview
Pinctrl device tree configuration
GPIO device tree configuration
How to control a GPIO in userspace
How to control a GPIO in kernel space
AN4899 STM32 microcontroller GPIO configuration for hardware settings and low-power consumption, оригинал
Запуск Linux на процессоре выполняется в несколько этапов, которые постепенно инициализируют периферийные устройства и память платформы.
Общая загрузочная цепочка Linux (указаны типичные размеры памяти для каждого этапа):
оригинал
Boot chain overview — stm32mpu
Код ПЗУ
Код ПЗУ (ROM code) — это часть программного обеспечения, которое хранится в ПЗУ. Он умещается в несколько десятков килобайт и отображает свои данные во встроенной оперативной памяти. Это первый код, выполняемый процессором, и он включает всю логику, необходимую для выбора загрузочного устройства (последовательное соединение или флэш–память), с которого первичный загрузчик (FSBL) загружается во встроенное ОЗУ. Для большинства продуктов требуется доверять приложению, работающему на устройстве, и код ПЗУ является первым звеном в цепочке доверия, которая должна быть установлена для всех запущенных компонентов: это доверие устанавливается путём аутентификации FSBL перед его запуском.
FSBL
First stage boot loader — первичный загрузчик. Он инициализирует (часть) дерева часов и внешнего контроллера ОЗУ, далее он загружает вторичный загрузчик во внешнее ОЗУ и передаёт ему управление.
В качестве такого загрузчика используется:
TF-A (Trusted Firmware-A)
SSBL
Second-stage boot loader — вторичный загрузчик.
Он работает в большом объёме ОЗУ, поэтому он может работать с USB, Ethernet, дисплей и т. д., которые полезны для более гибкой загрузки ядра Linux (с флэш–устройства, сеть и т. д.) и удобны для пользователя (показывая пользователю экран-заставку).
Обычно d качестве такого загрузчика Linux во встроенных системах. используется:
U-Boot
TF-A
TF-A (Trusted Firmware-A) разделен на несколько двоичных файлов, каждый из которых выполняет свою главную роль. Для 32-битных процессоров Arm (AArch42) доверенная загрузка разделена на четыре этапа (в порядке выполнения):
1 (BL1) application processor trusted ROM
2 (BL2) trusted firmware
3-2 (BL32) runtime software
3-3 (BL33) non-trusted firmware
BL1, BL2 и BL32 являются частями TF-A.
В виду того, что STM32 MPU используют специальный код ПЗУ, этап загрузки BL1 удаляется. Код ПЗУ ожидает, что BL2 будет работать на уровне выполнения EL3. Этот режим выбирается, когда включён флаг сборки BL2_AT_EL3.
BL33 находится за пределами TF-A. Это первый незащищённый код, загруженный TF-A. Во время загрузки это вторичный загрузчик (SSBL). Для платформ MPU STM32 SSBL по умолчанию является U-Boot.
TF-A может управлять своей конфигурацией с помощью дерева устройств. На этапе BL2 это сокращённая версия ядра Linux, в которой во время загрузки используются только необходимые устройства. Его можно настроить с помощью STM32CubeMX.
оригинал
оригинал
Шаги загрузки TF-A:
Загрузка кода из ПЗУ и вызов BL2
BL2 загружает BL32
BL2 загружает BL33
BL2 вызывает BL32
BL32 вызывает BL33
Дерево устройств в STM32CubeMX:
оригинал
TF-A overview
TF-A device tree
U-Boot
Das U-Boot
U-Boot — это вторичный загрузчик (SSBL) для STM32.
Основные характеристики SSBL:
Настраиваемый
Имеет простой интерфейс командной строки (CLI), позволяющий пользователям работать через консоль на последовательном порту
Возможности создания сценариев
Он загружает ядро в оперативную память и передаёт управление ядру
Он управляет несколькими внутренними и внешними устройствами, такими как флэш–память NAND и NOR, Ethernet и USB
Он поддерживает следующие функции:
Файловые системы: FAT, UBI/UBIFS, JFFS
Стек TCP/IP: FTP
Дисплей: LCD, HDMI, BMP для заставки
USB: хост (запоминающее устройство) или устройство (стек DFU)
Дерево устройств в STM32CubeMX:
оригинал
U-Boot overview
U-Boot device tree
How to configure U-Boot for your board
Linux
Дерево устройств в STM32CubeMX:
оригинал
- /etc/apt/sources. list.d/packages.openstlinux.st.com.list
deb http://packages.openstlinux.st.com/3.1 dunfell main updates untested
Package repository for OpenSTLinux distribution
AN5031 Application note: Getting started with STM32MP151, STM32MP153 and STM32MP157 line hardware development, оригинал
STLINK-V3SET debugger/programmer for STM8 and STM32, оригинал
STM32MP1 platform boot, оригинал
STM32MPU Embedded Software architecture overview — stm32mpu
PM0214 Programming manual — STM32 Cortex®-M4 MCUs and MPUs programming manual, оригинал
STM32MP1Dev — STM32MP1 OpenSTLinux Developer Package — STMicroelectronics
Wiki archive for STM32 MPU ecosystem-v1 releases
SDK for OpenSTLinux distribution
https://www.st.com/en/development-tools/stlinux.htmlhttp://archive.stlinux.com/http://archive.stlinux.com/stlinux/2. 4/iso/STLinux-2.4-armv7_spear-20121121.iso
STM32
Как прошить чип STM32 | Многобукфф
Использование экосистемы STMicroelectronics: подключение датчиков к STM32G4
CountZero: выборка по тегу: STM32
Микроконтроллер и Bootloader. Описание и принцип работы.
Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1 / Хабр
STM32MP1: U-Boot, Buildroot, Arch Linux и немного Debian / Хабр
STM32: аббревиатуры и термины | arm | programming
Библиотека HAL для STM32. Перечень функций и ссылок.
Mastering STM32 book
STM32, Оборудование
1)
Input for STLINK-V3MINI
2)
SWO is optional, required only for Serial Wire Viewer (SWV) trace
3)
NC means not required for SWD connection
4) , 6)
Connect to GND on target, may be used by STLINK-V3MINI for detection of connection
5)
JTAG Return Test ClocK
Плагины для Openbox S5,S6, S7, S8, S9,S10 — 3 — Openbox S5 — S10 HD
12понравилось
-
16. 06.2011, 17:07 #21
Новая версия, плагин JpgViewer169_V0.05 написан на (STLinux 2.2, API 1.05)
плагин запускается в меню-плагин-зелёная кнопка
- JpgViewer169_V0.05.rar (70.6 Кб, Просмотров: 256)
-
17.06.2011, 23:16 #22
MCAS_EMU_MCLIENT_17.06.2011
Вложения— update : Mcas , keydata.tmp
—> NDX V3 + V5 support fix. (recognizing problem fix.)
—> keydata.tmp upgrade
—> Reset sequence function add.
> Mcas — Configuration :
> Reset sequence : T1 —> T14 / T14 —> T1- MCAS_EMU_MCLIENT_17062011. zip (559.0 Кб, Просмотров: 302)
-
24.06.2011, 02:35 #23
Плагин Web-браузер WebZeal 1.09 для OPENBOX S4/ S6 HDPVR.
Совместим с ПО ресивера 1.09.20.Скачать
Плагин Web-браузер WebZeal 1.09 для OPENBOX S9 HDPVR.
Для установки необходимо скопировать архив без изменения в корневую директорию флешки.(расширение должно остаться tar.bz)
Совмести с ПО ресивера 1.09.20Скачать
-
24.06.2011, 23:45 #24
Плагин для установки оригинального загрузчика 1. 54/2.54/5.04 Version 06 с флеш.Eisha
ВложенияОбновления:
— Boot Up improved
— Minor bugs fix. (kleine fehler fix.)
— HDMI bug fix. (CEC — Sharp TV, Lwe, Telefunken etc.)
— SSD fix.
Будьте внимательны:
1.54 для S7/8
2.54 для S51. Скачать архив, распакованную папку plugin скопировать на флешку в корневой каталог.
2. Вставить в ресивер. Устанавливается как обычный плагин (перед установкой желательно отключить все плагины).
3. В меню Плагины запустить зеленой кнопкой, начнется установка, модель ресивера определится автоматически,
в появившемся окне ввести код 0815.[свернуть]
Для S9 V504.06 Version 06Обновления:
— Boot Up improved
— Minor bugs fix. (kleine fehler fix.)
— HDMI bug fix. (CEC, Sharp TV, Lwe, Telefunken etc. )
— SSD fix.
Код 0815- HDF-Flasher-V154.06.rar (200.1 Кб, Просмотров: 101)
- HDF-Flasher-V254.06.rar (199.7 Кб, Просмотров: 111)
- HDF-Flasher-V504.06.rar (209.8 Кб, Просмотров: 103)
-
27.06.2011, 22:56 #25
Plugin_Nasscam_1.0.13_CS_26062011
Вложения
—> update : Nascam, Spcs
— Fixed bug with long viaccess ECM
— remove some kernel debug
— fixed detect MediaSet Nagra3 provider — Hotbird13E (Tivusat)
— Important : Pls Format (remove) existing nascam !Список транспондеров и каналов, которые можно смотреть с помощью этого плагина:
- plugin_nasscam_1. 0.13_cs__26062011.rar (3.31 Мб, Просмотров: 234)
- nascam_channels_25jun11.rar (2.98 Мб, Просмотров: 201)
-
28.06.2011, 22:33 #26
MCAS_EMU_MCLIENT__28.06.2011
Вложения— update : Mcas , keydata.tmp
— Csat (Canalsat France — Astra19,2E — Via) EMU add.
— http://www.lyngsat.com/packages/canalsatfr.html
— key init DB update
Betacrypt use :
using irdeto or nagravision for decrypt. (example by Cable Cards d0xx..)- MCAS_EMU_MCLIENT__28062011.rar (525.5 Кб, Просмотров: 119)
-
01. 07.2011, 22:03 #27
MCAS_EMU_MCLIENT__28.06.2011
ВложенияВнимание:
Добавлен новый от 29.06.11 coconut с возможностью ввода 16-значных ключей.- MCAS_EMU_MCLIENT__28062011.zip (560.3 Кб, Просмотров: 153)
-
04.07.2011, 18:52 #28
update : MCAS_EMU_MCLIENT_04.07.2011
Вложения—> HD+ bug fix.
—> SKY D V13 bug fix.
—> 17 min. freeze fix.
—> Minor bugs fix.- MCAS_EMU_MCLIENT_04072011. zip (560.7 Кб, Просмотров: 198)
-
11.07.2011, 18:40 #29
Только для Openbox S9
WebZeal_v2.20s Применять начиная с ПО 1.09.25 от 080711
— Proxy Server function : Added
—> (need to fill out address and port in Network menu and connect on)
— Page UP/DOWN Key Mixed : Fixed
— Wait Message box when starting Webzeal : Added
— Main menu webbrowser text Ver. information : Added
— Malfunctional rebooting bug when removed the USB without webzeal mnt file unmount
— Debug message : DeletedФормат:WinRAR
Размер: 14.81Мб -
14. 07.2011, 20:01 #30
— update : XcamClient
Вложения—> Timeshift improved
—> Trick Mode improved
—> Minor bugs fix- xcamclient_14072011.rar (194.9 Кб, Просмотров: 241)
« Обсуждение Софта для Openbox/Skybox S9-S12 (Китай), прошивка на свой страх и риск | Openbox S 1000 MX »
Создание OpenSTLinux SDK для устройств STM32MP1 – Учебные пособия по VisualGDB
Учебные пособия > Linux > Создание OpenSTLinux SDK для устройств STM32MP1
openstlinux, stm32, stm32mp1, yocto
В этом руководстве показано, как создать OpenSTLinux SDK для устройств STM32MP1. SDK включает в себя образы SD-карт для общих плат разработки, кросс-тулчейн и заголовки/библиотеки, необходимые для кросс-компиляции приложений Linux, которые будут работать на ядрах Cortex-A устройства STM32MP1. Мы покажем, как использовать repo и инструменты bitbake для создания SDK и способы его использования SDK для компиляции приложений Linux для устройства STM32MP1.
- Процесс сборки OpenSTLinux зависит от большой и относительно хрупкой экосистемы инструментов Linux и, следовательно, требует использования определенной версии Linux для работы на машине сборки. Для версии openstlinux-4.19-thud-mp1-19-02-20 , показанной в этом руководстве, требуется Ubuntu 18.04.2, поэтому мы рекомендуем создать виртуальную машину Linux на основе ubuntu-18.04.2-desktop-amd64.iso с не менее 80 ГБ дискового пространства. Чтобы ускорить сборку, убедитесь, что у виртуальной машины столько ядер ЦП, сколько у вашего хост-компьютера.
- Подключитесь к машине сборки через SSH и выполните следующую команду, чтобы установить пакеты, необходимые для инструментов OpenSTLinux:
sudo apt-get install sed wget curl cvs subversion git-core coreutils unzip texi2html texinfo docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath libxml2-utils xmlto docbook bsdmainutils iputils-ping cpio python- wand python-pycryptopp python-crypto libsdl1. 2-dev xterm штопор nfs-common nfs-kernel-server device-tree-compiler mercurial u-boot-tools libarchive-zip-perl ncurses-dev bc linux-headers-generic gcc-multilib libncurses5-dev libncursesw5-dev lrzsz dos2unix lib32ncurses5 репозиторий libssl-dev
sudo apt-get install sed wget curl cvs subversion git-core coreutils unzip texi2html texinfo docbook-utils gawk python-pysqlite2 diffstat help2man make gcc build-essential g++ desktop-file-utils chrpath libxml2-utils xmlto docbook bsdmainutils iputils-ping cpio python-wand python-pycryptopp python-crypto libsdl1.2-dev xterm штопор nfs-common nfs-kernel-server устройство-дерево-компилятор mercurial u-boot-tools libarchive-zip-perl ncurses-dev bc linux-headers-generic gcc -multilib libncurses5-dev libncursesw5-dev lrzsz dos2unix lib32ncurses5 репозиторий libssl-dev
Затем подтвердите установку пакета: - Создайте каталог для дистрибутива OpenSTLinux, который вы собираетесь создать (например, /opt/stlinux-weston ) и убедитесь, что ваша учетная запись пользователя может писать в него. Затем клонируйте и инициализируйте репозиторий OpenSTLinux:
. sudo mkdir /opt/stlinux-weston sudo chown <имя пользователя>:<имя группы> /opt/stlinux-weston cd /opt/sylinux-weston инициализация репозитория -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-4.19-thud-mp1-19-02-20 && синхронизация репо
sudo mkdir /opt/stlinux-weston
sudo chown
: /opt/stlinux-weston cd /opt/sylinux-weston
repo init -u https://github.com/ STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-4.19-thud-mp1-19-02-20 && синхронизация репо
Вы можете безопасно игнорировать ошибки 404 во время инициализации репозитория, если команда синхронизации репо выполнена успешно: - После инициализации репозитория инструмент репо покажет список доступных тегов:
- Теперь вы почти готовы начать сборку OpenSTLinux SDK. Выполните следующую команду для настройки необходимой среды:
DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh
DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh
Обратите внимание на имя образа, показанное сценарием envsetup.sh : - Теперь пришло время собрать SDK. Выполните следующую команду, чтобы начать сборку:
bitbake st-image-weston
bitbake st-image-weston
Обратите внимание: если на вашей виртуальной машине недостаточно оперативной памяти, сборка завершится ошибкой со следующей ошибкой:ОШИБКА: рабочий процесс (21931) неожиданно завершился (-9), завершение работы…
ОШИБКА: рабочий процесс (21931) неожиданно завершился (-9), завершение работы. ..
В этом случае попробуйте увеличить объем оперативной памяти виртуальной машины или уменьшить количество ядер ЦП. В противном случае сборка успешно завершится через несколько часов и может выдать несколько предупреждений, которые можно игнорировать: - Перейдите в каталог /opt/stlinux-weston/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1 и получите список всех файлов:
- Обратите внимание, что сам каталог stm32mp1 содержит несколько двоичных файлов, а подкаталог flashlayout_st-image-weston содержит текстовые файлы, описывающие, как двоичные файлы должны быть сопоставлены с различными блоками памяти (например, разделами на SD-карте):
- Теперь мы будем программировать SD-карту на плате. В этом уроке мы используем Windows, поэтому мы скопируем все /opt/stlinux-weston/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1 на стороне Windows (используйте SmarTTY для автоматической обработки символических ссылок). Переключите плату в режим загрузчика с помощью перемычек и подключите разъемы питания и данных USB:
- Найдите файл макета FLASH, соответствующий вашей плате. Обычно он должен содержать имя платы и слово «доверенный», указывающее на доверенный бутчейн в имени (например, FlashLayout_sdcard_stm32mp157c-dk2-trusted.tsv). Затем запрограммируйте его с помощью нашего инструмента программирования FLASH для устройств STM32WB1:
- После того, как образ SD-карты был запрограммирован, переключите плату обратно в режим «загрузка с SD-карты» и подключите питание и встроенный ST-Link:
- Встроенный ST-Link включает COM-порт, подключенный к одному из портов UART STM32MP1. Найдите его в диспетчере устройств: .
- Затем подключитесь к порту (используйте скорость 115200 бод) через терминальную программу и перезагрузите плату. Плата запустится и откроет корневой терминал: .
- На встроенном ЖК-дисплее отобразится демонстрационное приложение:
- Наконец, мы создадим SDK, позволяющий компилировать Linux-приложения C/C++, которые будут работать на устройстве STM32MP1. Вернитесь в среду сборки (начав с запуска envsetup.sh на машине сборки) и выполните следующую команду:
bitbake -c populate_sdk st-image-weston
bitbake -c populate_sdk st-image-weston
- Эта команда создаст установщик SDK (самораспаковывающийся .sh в каталоге tmp-glibc/deploy/sdk). Найдите сценарий установщика и запустите его, чтобы извлечь SDK для ранее созданного образа: .
- Чтобы создать программы C/C++ для платы, загрузите среду из файла
/environment-setup-cortexa7t2hf-neon-vfpv4-openstlinux_weston-linux-gnueabi . Это установит CC, LD и другие общие переменные среды, чтобы они указывали на правильные инструменты SDK, включая все флаги. Затем вы можете просто вызвать $CC вместо обычного исполняемого файла gcc для создания двоичных файлов, совместимых с платой STM32MP1:
Сборка системы ST Linux для STM32MP157F-DK2 с использованием Yocto
В этом сообщении блога подробно описано, как собрать и прошить систему ST Linux на SD-карту.
Предварительные условия
Убедитесь, что у вас есть репозиторий
инструмент установлен. Этого не было в моем дистрибутиве Manjaro Linux на хост-компьютере.
и это не доступно через простой sudo apt-get установить репозиторий
для Ubuntu
еще (потому что он еще не был преобразован в Python 3).
- Repo — это инструмент, созданный поверх Git. Repo помогает управлять многими репозиториями Git, выполняет загрузку в системы контроля версий и автоматизирует части рабочий процесс разработки. Репо не предназначено для замены Git, а только для того, чтобы сделать его легче работать с Git. Команда repo представляет собой исполняемый скрипт Python. которые вы можете поставить в любом месте на вашем пути.
В итоге установил репозиторий
на хост-компьютере (потому что это было проще всего
для меня). Но это означает, что мне придется выполнять команды repo
из
терминал хост-компьютера, а также.
Я предполагаю, что вы подписались на предыдущий пост в блоге о создании минимального образа Linux и уже имеющемся контейнере Docker и запустил.
1. Клонирование репозитория openSTLinux
Предполагая, что вы находитесь в каталоге /data/yocto-labs
(9017 йокто-лабс
каталог был создан ранее в первом сообщении блога и находится в
общий каталог). Введите следующие команды:
mkdir openstlinux-5.10-dunfell-mp1-21-03-31 компакт-диск openstlinux-5.10-данфелл-mp1-21-03-31
Чтобы загрузить актуальный репозиторий opensstlinux-5.10-dunfell-mp1-21-03-31
, выпуск
эти команды (не забудьте ввести эти команды repo
с хост-компьютера в
если он установлен там, а не в вашем образе докера!):
репозиторий init -u https://github.com/STMicroelectronics/oe-manifest.git -b refs/tags/openstlinux-5.10-dunfell-mp1-21-03-31 синхронизация репо
Это займет некоторое время.
Мой каталог yocto-labs
теперь содержит следующие каталоги:
build метаоткрытый встроенный мета-st-stm32mp openstlinux-5.10-dunfell-mp1-21-03-31 тесный
Каталог openstlinux-5.10-dunfell-mp1-21-03-31
— это репозиторий, который вы только что
клонировано. Остальные 4 каталога были созданы во время предыдущего поста в блоге.
и на самом деле не нужны для создания образа ST Linux. Вы можете удалить эти
4 каталога, если вы чувствуете, что не будете работать с минимальной системой Linux
больше не настраивайте и освободите много ценных гигабайт на жестком диске.
2. Инициализация среды сборки OpenEmbedded
Как и для минимальной сборки системы Linux, нам необходимо настроить сборку среда. Этот сценарий установки среды OpenEmbedded необходимо запустить один раз. в каждый новый работающий докер терминал, в котором вы используете BitBake или инструменты для разработки. Имейте в виду, что это другой сценарий, чем тот, который мы используется для минимальной системы Linux и находится в другом месте. Используйте следующие команды для настройки среды сборки (она спросит прочитать и принять лицензионное соглашение):
cd /data/yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31 DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh
Помимо прочего, сценарий установки среды создает каталог сборки
каталог с именем build-openstlinuxweston-stm32mp1
. После того, как сценарий
завершено, текущий рабочий каталог устанавливается в этот каталог сборки. Позже,
когда сборка завершается, она содержит все файлы/образы, созданные во время
строить.
Локальный файл конфигурации ( build-openstlinuxweston-stm32mp1/conf/local.conf
)
содержит все локальные пользовательские настройки. Файл конфигурации слоев
( build-openstlinuxweston-stm32mp1/conf/bblayers.conf
) сообщает BitBake, какие слои
необходимо учитывать при сборке.
Это вывод после запуска сценария установки:
$ DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh [Проверка HOST DISTRIB] Дистрибутив Linux: Ubuntu Выпуск Linux: 20.04 Необходимые пакеты для дистрибутива Linux: build-essential chrpath cpio debianutils diffstat gawk gcc-multilib git iputils-ping libegl1-mesa libgmp-dev libmpc-dev libsdl1.2-dev libssl-dev pylint python3 python3-git python3-jinja2 python3-pexpect python3-pip socat texinfo unzip wget xterm xz-утилиты Проверьте OK: все необходимые пакеты установлены на хосте. [исходные слои/openembedded-core/oe-init-build-env][из ничего] [Конфигурация лицензионного соглашения] ... Вы принимаете лицензионное соглашение, которое только что прочитали? (д/н) г Лицензионное соглашение с конечным пользователем было принято. [Настроить файлы *.conf] [INFO] Нет файла site.conf.sample в /data/yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31/layers/meta-st/scripts. Создать по умолчанию... ================================================== ========================== Файлы конфигурации были созданы для следующей конфигурации: ДИСТРО: openstlinux-weston DISTRO_CODENAME: Данфелл МАШИНА: stm32mp1 BB_NUMBER_THREADS : <набор нестандартной конфигурации> PARALLEL_MAKE : <набор нестандартной конфигурации> СТРОЙКА: build-openstlinuxweston-stm32mp1 DOWNLOAD_DIR : <отключить> SSTATE_DIR : <отключить> SOURCE_MIRROR_URL : <набор нестандартной конфигурации> SSTATE_MIRRORS: <отключить> WITH_EULA_ACCEPTED: ДА ================================================== ========================== Доступные изображения для слоев OpenSTLinux: - Официальные образы OpenSTLinux: st-image-weston — образ вестона OpenSTLinux с базовой поддержкой Wayland (если включен в дистрибутиве) - Другие образы OpenSTLinux: - Поддерживаемые изображения: st-image-core — образ ядра OpenSTLinux Теперь вы можете запустить 'bitbake'
Теперь вы должны стоять на этом пути:
/data/yocto-labs/openstlinux-5. 10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1
3. Сборка дистрибутива OpenSTLinux
Убедитесь, что приведенный выше сценарий настройки среды запущен!
Команда bitbake image
используется для создания образа. изображение
указывает
целевой образ st-image-weston
(образ Weston для OpenSTLinux с
базовая поддержка Wayland) для наших целей.
bitbake st-image-weston
Теперь придется долго ждать, так как нужно выполнить более 9000 задач.
Создание окончательного образа для SD-карты
Я собираюсь отклониться от рекомендованного STM способа который включает в себя использование STM32CubeProgrammer и возню с загрузочными переключателями
на самой доске. Мне было проще просто прошить SD-карту, используя dd
.
как в моем предыдущем сообщении в блоге.
Все изображения, созданные на предыдущем шаге, сохраняются в папке . ../yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1
каталог. Этот каталог также содержит подкаталог scripts
, содержащий create_sdcard_from_flashlayout.sh
скрипт для создания финального образа для прошивки.
Опять же, как и в предыдущем сообщении в блоге, убедитесь, что вы находитесь в каталоге scripts
.
(в вашем терминале докера) и выполните эту команду (я предпочитаю использовать расширяемый
макет вспышки):
cd /data/yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1/scripts ./create_sdcard_from_flashlayout.sh ../flashlayout_st-image-weston/extensible/FlashLayout_sdcard_stm32mp157f-dk2-extensible.tsv
Получаем такой вывод:
$ ./create_sdcard_from_flashlayout.sh ../flashlayout_st-image-weston/extensible/FlashLayout_sdcard_stm32mp157f-dk2-extensible. tsv Создайте необработанный пустой образ: ../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw объемом 1536 МБ. Создайте таблицу разделов: [СОЗДАНО] часть 1: fsbl1 [размер раздела 256,0 КиБ] [СОЗДАНО] часть 2: fsbl2 [размер раздела 256,0 КиБ] [СОЗДАНО] часть 3: fip [размер раздела 4,0 МБ] [СОЗДАНО] часть 4: загрузка [размер раздела 64,0 МБ] [СОЗДАНО] часть 5: vendorfs [размер раздела 16,0 МБ] [СОЗДАНО] часть 6: rootfs [размер раздела 1,4 ГиБ] Таблица разделов из ../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw Заполните необработанное изображение содержимым изображения: [ЗАПОЛНЕНО] часть 1: fsbl1, образ: arm-trusted-firmware/tf-a-stm32mp157f-dk2-sdcard.stm32 [ЗАПОЛНЕНО] часть 2: fsbl2, образ: arm-trusted-firmware/tf-a-stm32mp157f-dk2-sdcard.stm32 [ ЗАПОЛНЕНО ] часть 3: fip, образ: fip/fip-stm32mp157f-dk2-trusted.bin [ЗАПОЛНЕНО] часть 4: загрузка, образ: st-image-bootfs-openstlinux-weston-stm32mp1. ext4 [ ЗАПОЛНЕНО ] часть 5: vendorfs, образ: st-image-vendorfs-openstlinux-weston-stm32mp1.ext4 [ЗАПОЛНЕНО] часть 6: rootfs, образ: st-image-weston-openstlinux-weston-stm32mp1.ext4 ################################################### ########################## ################################################### ########################## Сгенерированный RAW IMAGE: ../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw ВНИМАНИЕ: прежде чем использовать команду dd, размонтируйте все разделы связанный с SDCARD. sudo umount `lsblk --list | grep mmcblk0 | часть grep | gawk '{напечатать $7}' | тр '\n' ' '` Чтобы поместить это необработанное изображение на SD-карту: sudo dd if=../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw of=/dev/mmcblk0 bs=8M conv=fdatasync status=progress (mmcblk0 можно заменить на: sdX, если это устройство, предназначенное для получения необработанного изображения. (где X может быть a, b, c, d, e) ################################################### ########################## ################################################### ##########################
Прошивка образа на SD-карту
Эти 2 файла были созданы в папке /data/yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1/tmp- glibc/развертывание/изображения/stm32mp1/
каталог:
-
FlashLayout_sdcard_stm32mp157f-dk2-extensible.how_to_update.txt
-
FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw
FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw
— это тот файл, который нам нужен.
прошить на SD-карту.
Я размонтирую и прошиваю SD-карту в терминале хост-компьютера.
Итак, убедитесь, что вы находитесь в .../yocto-labs/openstlinux-5.10-dunfell-mp1-21-03-31/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1/scripts
для доступа к образам с относительным пути
Я использую ниже.
Опять же, как и в предыдущем сообщении в блоге, нам нужно размонтировать нашу SD-карту (в моем
случай, моя SD-карта установлена на /dev/sdc
):
sudo umount `lsblk --list | grep сдк | часть grep | gawk '{напечатать $7}' | тр '\n' ' '`
И фактическая прошивка с помощью:
sudo dd if=../flashlayout_st-image-weston/extensible/../../FlashLayout_sdcard_stm32mp157f-dk2-extensible.raw of=/dev/sdc bs=8M conv=fdatasync статус=прогресс отлага=прямой
И снова наберитесь терпения, пока все не закончится (на SD-карту будет записано 1,6 ГБ).
Проверка изображения
Вставьте SD-карту в соответствующий слот. Убедитесь, что у вас подключен кабель micro USB
к разъему CN11/ST-LINK
платы и используйте ваш любимый разъем
программа для прослушивания на скорости 115.200 бод на устройстве /dev/ttyACM0
. Например:
$ picocom -b 115200 /dev/ttyACM0 . .. ВНИМАНИЕ: ЦП: STM32MP157FAC Rev.Z ВНИМАНИЕ: Модель: STMicroelectronics STM32MP157F-DK2 Discovery Board ВНИМАНИЕ: Плата: MB1272 Var4.0 Rev.C-02 ИНФОРМАЦИЯ: Причина сброса (0x15): ИНФОРМАЦИЯ: сброс при включении питания (rst_por) ИНФОРМАЦИЯ: версия PMIC = 0x20 ИНФОРМАЦИЯ: FCONF: Чтение файла конфигурации прошивки TB_FW из: 0x2ffe3000 INFO: FCONF: Чтение информации о конфигурации прошивки для: stm32mp_io ИНФОРМАЦИЯ: Использование SDMMC ИНФОРМАЦИЯ: Экземпляр 1 ИНФОРМАЦИЯ: загрузочный используемый раздел fsbl1 ... U-Boot 2020.10-stm32mp-r1 (05 октября 2020 г. - 15:15:32 +0000) Процессор: STM32MP157FAC Rev.Z Модель: STMicroelectronics STM32MP157F-DK2 Discovery Board Плата: stm32mp1 в доверенном режиме (st,stm32mp157f-dk2) Плата: MB1272 Var4.0 Rev.C-02 DRAM: 512 МБ Часы: - МПУ: 800 МГц - MCU: 208,878 МГц - AXI: 266,500 МГц - ПЕР: 24 МГц - DDR: 533 МГц WDT: запущен с обслуживанием (тайм-аут 32 с) И-НЕ: 0 МБ ММС: STM32 SD/MMC: 0, STM32 SD/MMC: 1 . .. Запуск ядра... [0.000000] Загрузка Linux на физическом процессоре 0x0 [0.000000] Версия Linux 5.10.10 (oe-user@oe-host) (arm-ostl-linux-gnueabi-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP PREEMPT, сб, 23 января, 15:04:06 UTC 2021 [0,000000] ЦП: Процессор ARMv7 [410fc075], версия 5 (ARMv7), cr=10c5387d [ 0.000000] ЦП: доступны команды div: исправление кода раздела [ 0.000000] ЦП: Кэш данных без наложения имен PIPT / VIPT, Кэш команд с псевдонимом VIPT [ 0.000000] OF: fdt: Модель машины: STMicroelectronics STM32MP157F-DK2 Discovery Board ... ST OpenSTLinux - Weston - (дистрибутив на основе проекта Yocto) 3.1-моментальный снимок stm32mp1 ttySTM0 stm32mp1 логин: root (автоматический вход) Последний вход: вс, 20 сентября, 10:44:17 UTC 2020 на tty7 root@stm32mp1:~#
Успех!
Добавление инструментов сборки (включая GCC и Nano) в систему Linux
Это происходит так же, как и в предыдущем сообщении в блоге.