Stlinux установка: Sokolov blog » STLinux — установка

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
3VCC 1)
4TMS/SWDIO
5GND
6TCK/SWCLK
7GND
8T_JTDO/T_SWO 2)
9T_JCLK
10
T_JTDI/NC 3)
11GNDDetect 4)
12T_NRST
13T_VCP_RX
14T_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 │
└────────────        ────────────┘ 

№ контакта Назначение
1VCC
2VSUPPLY
3nTRST
4GND
5TDI
6GND
7TMS/SWDIO
8GND
9TCK/SWCLK
10GND
11RTCK
5)
12GND
13TDO/SWO
14GND
15nSRST (NRST)
16GND
17DBGRQ
18GND
19DBGACK
20GND

Соответствие контактов на разъёмах:

№ контакта Назначение
STDC14 ARM20
3 1VTref
4 7TMS/SWDIO
5 GND
6 9TCK/SWCLK
7 GND
8 13TDO/SWO
9 11T_JCLK / RTCK
10 5
T_JTDI/NC / TDI
11GNDDetect 6)
12 15NRST
13 RX
14 TX

STM32MP157A

STM32MP157A — STMicroelectronics

STM32MP15 resources — stm32mpu

ТипКодНазваниеВерсияДатаСсылка
Product SpecificationsDS12504Arm® dual Cortex®-A7 800 MHz + Cortex®-M4 MPU, 3D GPU, TFT/DSI, 37 comm. interfaces, 29 timers, adv. analog6.02021-05-18оригинал
Reference ManualsRM0436STM32MP157 advanced Arm®-based 32-bit MPUs5.02021-01-21оригинал
Application NotesAN5031Getting started with STM32MP151, STM32MP153 and STM32MP157 line hardware development3.02021-01-21оригинал
AN5275USB DFU/USART protocols used in STM32MP1 Series bootloaders1.02019-10-15оригинал
AN5168STM32MP1 series DDR configuration2.02021-10-19оригинал
Programming ManualsPM0214STM32 Cortex®-M4 MCUs and MPUs programming manual10.0 2020-03-23оригинал
Errata sheetsES0438STM32MP15xx device errata6.02021-02-25оригинал

Develop on Arm® Cortex®-M4 — stm32mpu

ST-MCU-FINDER-PCSTM32 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.

The SW4STM32 toolchain may be obtained from the website www.openstm32.org, which includes forums, blogs, and trainings for technical support. Once registered to this site, users will get installation instructions at the Documentation > System Workbench page to proceed with the download of the free toolchain.

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_MODERGPIO port mode register
GPIOx_OTYPERGPIO output type register
GPIOx_OSPEEDRGPIO output speed register
GPIOx_PUPDRGPIO port pull-up / pull-down register
GPIOx_IDRGPIO port input data registerчтение состояний (вход)
GPIOx_ODRGPIO port output data registerзапись состояний (выход)
GPIOx_BSRRGPIO port bit set / reset registerпобитная запись в регистр (выход)
GPIOx_LCKRGPIO port configuration lock register
GPIOx_AFRLGPIO alternate function low register
GPIOx_AFRHGPIO alternate function high register
GPIOx_ASCRGPIO 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. 1 (BL1) application processor trusted ROM

  2. 2 (BL2) trusted firmware

  3. 3-2 (BL32) runtime software

  4. 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:

  1. Загрузка кода из ПЗУ и вызов BL2

  2. BL2 загружает BL32

  3. BL2 загружает BL33

  4. BL2 вызывает BL32

  5. 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.html

  • http://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понравилось

  1. 16. 06.2011, 17:07 #21

    Новая версия, плагин JpgViewer169_V0.05 написан на (STLinux 2.2, API 1.05)

    плагин запускается в меню-плагин-зелёная кнопка

    Вложения
    • JpgViewer169_V0.05.rar (70.6 Кб, Просмотров: 256)

  2. 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)

  3. 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

    Скачать


  4. 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 для S5

    1. Скачать архив, распакованную папку 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)

  5. 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)

  6. 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)

  7. 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)

  8. 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)

  9. 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Мб


  10. 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.

  1. Процесс сборки OpenSTLinux зависит от большой и относительно хрупкой экосистемы инструментов Linux и, следовательно, требует использования определенной версии Linux для работы на машине сборки. Для версии openstlinux-4.19-thud-mp1-19-02-20 , показанной в этом руководстве, требуется Ubuntu 18.04.2, поэтому мы рекомендуем создать виртуальную машину Linux на основе ubuntu-18.04.2-desktop-amd64.iso с не менее 80 ГБ дискового пространства. Чтобы ускорить сборку, убедитесь, что у виртуальной машины столько ядер ЦП, сколько у вашего хост-компьютера.
  2. Подключитесь к машине сборки через 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


    Затем подтвердите установку пакета:
  3. Создайте каталог для дистрибутива 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 во время инициализации репозитория, если команда синхронизации репо выполнена успешно:
  4. После инициализации репозитория инструмент репо покажет список доступных тегов:
  5. Теперь вы почти готовы начать сборку OpenSTLinux SDK. Выполните следующую команду для настройки необходимой среды:

    DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh

    DISTRO=openstlinux-weston MACHINE=stm32mp1 исходные слои/meta-st/scripts/envsetup.sh


    Обратите внимание на имя образа, показанное сценарием envsetup.sh :
  6. Теперь пришло время собрать SDK. Выполните следующую команду, чтобы начать сборку:

    bitbake st-image-weston

    bitbake st-image-weston


    Обратите внимание: если на вашей виртуальной машине недостаточно оперативной памяти, сборка завершится ошибкой со следующей ошибкой:

    ОШИБКА: рабочий процесс (21931) неожиданно завершился (-9), завершение работы…

    ОШИБКА: рабочий процесс (21931) неожиданно завершился (-9), завершение работы. ..


    В этом случае попробуйте увеличить объем оперативной памяти виртуальной машины или уменьшить количество ядер ЦП. В противном случае сборка успешно завершится через несколько часов и может выдать несколько предупреждений, которые можно игнорировать:
  7. Перейдите в каталог /opt/stlinux-weston/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1 и получите список всех файлов:
  8. Обратите внимание, что сам каталог stm32mp1 содержит несколько двоичных файлов, а подкаталог flashlayout_st-image-weston содержит текстовые файлы, описывающие, как двоичные файлы должны быть сопоставлены с различными блоками памяти (например, разделами на SD-карте):
  9. Теперь мы будем программировать SD-карту на плате. В этом уроке мы используем Windows, поэтому мы скопируем все /opt/stlinux-weston/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/images/stm32mp1 на стороне Windows (используйте SmarTTY для автоматической обработки символических ссылок). Переключите плату в режим загрузчика с помощью перемычек и подключите разъемы питания и данных USB:
  10. Найдите файл макета FLASH, соответствующий вашей плате. Обычно он должен содержать имя платы и слово «доверенный», указывающее на доверенный бутчейн в имени (например, FlashLayout_sdcard_stm32mp157c-dk2-trusted.tsv). Затем запрограммируйте его с помощью нашего инструмента программирования FLASH для устройств STM32WB1:
  11. После того, как образ SD-карты был запрограммирован, переключите плату обратно в режим «загрузка с SD-карты» и подключите питание и встроенный ST-Link:
  12. Встроенный ST-Link включает COM-порт, подключенный к одному из портов UART STM32MP1. Найдите его в диспетчере устройств:
  13. .
  14. Затем подключитесь к порту (используйте скорость 115200 бод) через терминальную программу и перезагрузите плату. Плата запустится и откроет корневой терминал:
  15. .
  16. На встроенном ЖК-дисплее отобразится демонстрационное приложение:
  17. Наконец, мы создадим SDK, позволяющий компилировать Linux-приложения C/C++, которые будут работать на устройстве STM32MP1. Вернитесь в среду сборки (начав с запуска envsetup.sh на машине сборки) и выполните следующую команду:

    bitbake -c populate_sdk st-image-weston

    bitbake -c populate_sdk st-image-weston


  18. Эта команда создаст установщик SDK (самораспаковывающийся .sh в каталоге tmp-glibc/deploy/sdk). Найдите сценарий установщика и запустите его, чтобы извлечь SDK для ранее созданного образа:
  19. .
  20. Чтобы создать программы 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

Это происходит так же, как и в предыдущем сообщении в блоге.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *