README.md

EOOS Safe Generic для НИИЭТ К1921ВГ015


ПОДДЕРЖАТЬ ПРОЕКТ


Внимание! Проект находится в разработке…


Авторское право на EOOS зарегистрировано в Роспатент - Федеральная служба по интеллектуальной собственности Российской Федерации

EOOS Safe Generic для платформ без операционных систем - это C++ библиотека для кроссплатформенной разработки безопасного программного обеспечения. Библиотека разработана на языке программирования C++98 и поддерживает функции языка C++11 в зависимости от опций компилятора, что позволяет рассматривать широкий спектр критериев при выборе подходящего языка программирования на начальном этапе разработки продукта.

EOOS Safe Generic разработан в соответствии со стандартами ISO для языка программирования C++, соответствует требованиям MISRA-C++:2008 и AUTOSAR C++14 Coding Guidelines и полагается на ГОСТ Р ИСО 26262. Это означает, что приложения, разработанные на основанные EOOS, могут использоваться в критических системах, связанных с безопасностью.


1. О проекте

Проект позволяет осуществить максимально быстрый запуск разработки и отладки прикладного программного обеспечения для микроконтроллера К1921ВГ015 на макетно-отладочной плате КФДЛ.441461.029РЭ от НИИЭТ.

Данный проект разработан для следующей аппаратной платформы:

2. Необходимые компоненты

Система EOOS может быть собрана как на Linux, так и на Windows с использованием кросс-компилятора RISC-V. В данном репозитории представлены следующие проекты для сборки прикладного программного обеспечения:

  • CMake;
  • Visual Studio Code;
  • Syntacore Development Toolkit.

Для их сборки на хостовой операционной системе должны быть установлены следующие инструменты, описанные ниже.

2.1. На Ubuntu

Процесс, описанный ниже, проверен на:

  • Ubuntu 22.04.5 LTS (jammy x86_64)
2.1.1. Скачайте и установите Git for Linux and Unix

Скачайте и установите Git для Ubuntu и проверьте его версию.

$ sudo apt-get update
$ sudo apt-get install git

$ git --version
git version 2.34.1
2.1.2. Скачайте и установите CMake 3.20 или выше

Скачайте и установите CMake и проверьте его версию.

$ sudo apt-get install cmake

$ cmake --version
cmake version 3.31.6
2.1.3. Проверьте версию, что установлен Python 3.7 или выше

Проверьте версию Python.

$ python3 --version
Python 3.10.12
2.1.4 Установите кросс-компилятор xPack GNU RISC-V Embedded GCC v15.2.0 или выше

Следуйте инструкциям ниже или официальной документации по установке:

2.1.4.1 Установите Node.js и npm
$ curl https://raw.githubusercontent.com/xpack/assets/master/scripts/install-nvm-node-npm-xpm.sh | bash
$ export NVM_DIR="${HOME}/.nvm"
$ source "${NVM_DIR}/nvm.sh"

Перезапустите терминал и проверьте версии.

$ nvm --version
0.40.3

$ node --version
v24.11.1
2.1.4.2 Установите xpm

Установите xpm

$ wget -q -O - https://raw.githubusercontent.com/xpack/assets/master/scripts/install-nvm-node-npm-xpm.sh | ${SHELL}
$ export NVM_DIR="$HOME/.nvm"
$ source "$NVM_DIR/nvm.sh"

Перезапустите терминал и проверьте версию xpm.

$ xpm --version
0.20.8
2.1.4.3 Установите кросс-компилятор

Установите GNU RISC-V Embedded GCC кросс-компилятор и проверьте его версию.

$ xpm install @xpack-dev-tools/riscv-none-elf-gcc@latest --global --verbose

$ ~/.local/xPacks/@xpack-dev-tools/riscv-none-elf-gcc/15.2.0-1.1/.content/bin/riscv-none-elf-gcc --version
riscv-none-elf-gcc (xPack GNU RISC-V Embedded GCC x86_64) 15.2.0

$ ~/.local/xPacks/@xpack-dev-tools/riscv-none-elf-gcc/15.2.0-1.1/.content/bin/riscv-none-elf-g++ --version
riscv-none-elf-g++ (xPack GNU RISC-V Embedded GCC x86_64) 15.2.0

Создайте ссылку на директорию с бинарными файлами компилятора для определения в файле СMake и IDE.

$ ln -s ~/.local/xPacks/@xpack-dev-tools/riscv-none-elf-gcc/15.2.0-1.1/.content/bin /usr/bin/bin-riscv-none-elf-gcc
2.1.5. Соберите и установите отладчик NIIET OpenOCD v1.0.0 или выше

Для загрузки программы во flash память микроконтроллера, необходимо загрузить или собрать из исходников и установить отладчик OpenOCD c драйверами МК К1921ВГ015 с официального git репозитория НИИЭТ.

Отладчик NIIET OpenOCD v1.0.0 уже включён в данный проект и находится в директории /tools/openocd/bin/ubuntu, но если вам необходима более свежая версия, вы можете загрузить её с официального git репозитория НИИЭТ, или собрать из исходников.

Подпункты ниже собрать из исходных кодов программ отладчик OpenOCD.

2.1.5.1. Склонируйте git репозиторий

Склонируйте git репозиторий, перейдите в его директорию и проинициализируйте сабмодули.

$ git clone git@gitflic.ru:niiet/openocd.git
$ cd openocd
$ git submodule update --init
2.1.5.2. Установите необходимые для сборки программы
sudo apt install pkgconf
sudo apt install libjim
sudo apt install autoconf
sudo apt install automake
sudo apt install texinfo
sudo apt install perl
2.1.5.3. Соберите и установите NIIET OpenOCD

Соберите и установите отладчик.

openocd$ ./bootstrap
openocd$ ./configure
openocd$ make
openocd$ sudo make install

Проверьте его версию.

/usr/local/bin/openocd --version
Open On-Chip Debugger  (2025-11-26-23:44)
2.1.6. Установите терминал Minicom v2.8 or higher

Чтобы использовать терминал на последовательном интерфейсе UART через USB-порт для отладки, установите Minicom, удалите brltty для доступа к /dev/ttyUSB0 и проверьте версию терминал.

$ sudo apt install minicom
$ sudo apt remove -y brltty

$ minicom --version
minicom version 2.8
2.1.7. Скачайте и установите Visual Studio Code IDE v1.106.3 или выше

Скачайте пакет debian и установите его, проверив версию VSCode.

$ sudo apt install ./code_1.106.3-1764110892_amd64.deb
$ code --version
1.106.3

2.2. На Windows

Процесс, описанный ниже, проверен на:

  • Windows 11 (64-bit)
2.2.1. Скачайте и установите Git for Windows

Установщик автоматически установит переменную окружения Path, но для запуска Bash вам необходимо вручную установить значение C:\Program Files\Git\binpath для переменной окружения Path. После установки проверьте в CMD, что инструмент работает правильно, выполнив следующие команды.

C:\> git --version
git version 2.51.0.windows.2
2.2.2 Установите кросс-компилятор xPack GNU RISC-V Embedded GCC v15.2.0 или выше

Следуйте инструкциям ниже или официальной документации по установке:

2.2.2.1 Загрузите и установите Node.js и npm

После установки проверьте версии.

C:\>where node.exe
C:\Program Files\nodejs\node.exe

C:\>node --version
v24.11.1

C:\>where npm.cmd
C:\Program Files\nodejs\npm.cmd

C:\>npm --version
11.6.2
2.2.2.2 Установите xpm

В консоли PowerShell разрешите установку node.js приложений.

PS C:\> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

Установите xpm и проверьте его версию.

PS C:\> npm install --location=global xpm@latest

PS C:\> xpm --version
0.21.4
2.2.2.3 Установите кросс-компилятор

Установите GNU RISC-V Embedded GCC кросс-компилятор и проверьте его версию.

C:\> xpm install @xpack-dev-tools/riscv-none-elf-gcc@latest --global --verbose

C:\> %APPDATA%\xPacks\@xpack-dev-tools\riscv-none-elf-gcc\15.2.0-1.1\.content\bin\riscv-none-elf-gcc --version
riscv-none-elf-gcc (xPack GNU RISC-V Embedded GCC x86_64) 15.2.0

C:\> %APPDATA%\xPacks\@xpack-dev-tools\riscv-none-elf-gcc\15.2.0-1.1\.content\bin\riscv-none-elf-g++ --version
riscv-none-elf-g++ (xPack GNU RISC-V Embedded GCC x86_64) 15.2.0

Создайте символьную ссылку на директорию с бинарными файлами компилятора для определения в файле СMake и IDE, для этого в консоли от имени Администратора выпоите следующую команду.

mklink /D C:\Programs\bin-riscv-none-elf-gcc %APPDATA%\xPacks\@xpack-dev-tools\riscv-none-elf-gcc\15.2.0-1.1\.content\bin
2.2.3. Скачайте и установите PuTTY Client

Чтобы использовать терминал на последовательном интерфейсе UART через USB-порт для отладки, установите PuTTY клиента.

2.2.4. Скачайте и установите MSYS2

Запустите MSYS2 MINGW64 консоль и установите следующие инструменты:

MINGW64 $ pacman -S mingw-w64-x86_64-python
MINGW64 $ pacman -S mingw-w64-x86_64-cmake
MINGW64 $ pacman -S mingw-w64-x86_64-make
2.2.5. Скачайте и установите Visual Studio Code IDE v1.106.3 или выше

Скачайте установочный файл и установите его, проверив версию VSCode.

C:\> code --version
1.106.3
2.2.6. Загрузите отладчик NIIET OpenOCD v1.0.0 или выше

Для загрузки программы во flash память микроконтроллера, необходимо загрузить или собрать из исходников и установить отладчик OpenOCD c драйверами МК К1921ВГ015 с официального git репозитория НИИЭТ.

Отладчик NIIET OpenOCD v1.0.0 уже включён в данный проект и находится в директории /tools/openocd/bin/windows, но если вам необходима более свежая версия, вы можете загрузить её с официального git репозитория НИИЭТ.

2.2.7. Загрузите и установите Zadig v2.9 или выше

Для доступа к USB устройствам, OpenOCD использует libusb, поэтому необходимо скачать и запустить программу Zadig. После запуска программы установить флаг Options->List All Devices, в выпадающем списке выбрать Dual RS232-HS (Interface 1), который на плате используется в качестве JTAG отладчика, и нажать кнопку Install Driver.

3. Как получить исходный код

Все инструкции ниже могут быть выполнены как в Ubuntu, так и в Windows, но будем приводить примеры в стиле Bash консоли для удобства.

Этот git репозиторий содержит пакеты c программными компонентами EOOS в виде git сабмодулей.

3.1. Получение Git репозитория

3.1.1. Создайте новую директорию на вашем диске

Например, мы создадим ~/REPOSITORY.

~$ mkdir REPOSITORY
~$ cd REPOSITORY
3.1.2. Склонируйте этот репозиторий

Например, мы склонируем его в директорию EOOS по SSH

~REPOSITORY$ git clone --branch master git@gitflic.ru:eoos-systems/eoos-project-if-generic-riscv-k1921vg015-niiet-evk.git EOOS
3.1.3. Перейдите в директорию EOOS
~REPOSITORY$ cd EOOS
3.1.4. Проинициализируйте и обновите все сабмодули репозитория
~REPOSITORY/EOOS$ git submodule update --init

4. Как собрать проект

EOOS - это статическая библиотека, которая линкуется с кодом приложения в бинарый исполняемый файл. Результатом сборки данного проекта является исполняемый файл с тестами системы и аппаратной платформы.

4.1. Сборка CMake проекта

EOOS может быть собран на различных хостовых операционных системах. Чтобы стандартизировать процесс сборки, мы разработали кроссплатформенный скрипт Make.py, который находится в каталоге scripts/python. В ОС Linux вы можете создать его в консоли, а в Windows - в консоли MSYS2 MINGW64. Ниже мы приведем инструкции для консоли Linux.

4.1.1. Перейдите в директорию скриптов
~/REPOSITORY/EOOS$ cd scripts/python
4.1.2. Запустите скрипт

Запустите в консоли на Ubuntu, а на Windows в MSYS MINGW64 консоли:

~/REPOSITORY/EOOS/scripts/python$ python3 Make.py \
--eoos Generic \
--clean \
--build ALL \
--config RelWithDebInfo \
--toolchain Toolchain.<your_OS>.riscv-none-elf-gcc.cmake

Обратите внимание, что параметр –config может иметь одно из следующих значений Release, Debug, RelWithDebInfo, MinSizeRel, но для целей разработки мы рекомендуем передавать RelWithDebInfo.

После выполнения всех шагов тестовый исполняемый файл EOOS будет размещен в build/codebase/tests/EoosTests.elf.

5. Как настроить среду разработки

Проект EOOS разработан с целью быстрого начала разработки прикладного программного обеспечения на макетно-отладочной плате.

5.1. Настройка аппаратной среды разработки

Отладка программного обеспечения осуществляется через штатного отладчика на плате.

5.1.1. Проверьте плату согласно официальному руководству по эксплуатации

Руководство по эксплуатации в бумажном виде идет в комплекте поставки платы, электронную версию руководства можно загрузить на официальном сайте НИИЭТ.

5.1.2. Подключите плату к вашему ПК

Подключите USB кабель к порту (USB1) платы и к порту USB вашего ПК для отладки программного обеспечения.

5.2. Настройка программной среды разработки

5.2.1. Если вы работаете под Ubuntu, проверьте права NIIET OpenOCD v1.0.0

Если вы используйте включённый проект отладчик NIIET OpenOCD v1.0.0, убедитесь, что его исполняемый файл имеет права на исполнение, или установите ему эти права следующей командой.

~/REPOSITORY/EOOS/tools/openocd/bin/ubuntu$ chmod 755 openocd
~/REPOSITORY/EOOS/tools/openocd/bin/ubuntu$ ls -la
-rwxr-xr-x 1 user user 15269504 oct  6 11:10 openocd

6. Как запустить программу

Созданный исполняемый elf файл можно прошить во флэш МК как в Ubuntu, так и в Windows. Ниже мы дадим инструкции, как это сделать в основной операционной системе Ubuntu, но те же действия вы можете выполнить и в ОС Windows.

6.1. Запустите две консоли

6.1.1. В первой консоли запустите OpenOCD отладчик

Отладчик необходимо запускать из корневой директории проекта. В Ubuntu его обязательно надо запускать с sudo.

~/REPOSITORY/EOOS$ sudo ./tools/openocd/bin/ubuntu/openocd \
-s ./tools/openocd/scripts \
-s ./tools/openocd/scripts/interface/ftdi \
-s ./tools/openocd/scripts/interface \
-s ./tools/openocd/scripts/target \
-f vg015_dev_onboard_ftdi.cfg \
-f k1921vg015.cfg \
-c "init;halt"

Open On-Chip Debugger  (2025-11-26-23:44)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
sw_reset_halt
Info : clock speed 2000 kHz
Info : JTAG tap: K1921VG015.cpu tap/device found: 0x00000d5b (mfg: 0x6ad (CloudBEAR LLC), part: 0x0000, ver: 0x0)
Info : JTAG tap: BSCAN.bscan tap/device found: 0x20c5f44d (mfg: 0x226 (MediaTek), part: 0x0c5f, ver: 0x2)
Info : datacount=2 progbufsize=16
Info : Disabling abstract command reads from CSRs.
Info : Examined RISC-V core; found 1 harts
Info :  hart 0: XLEN=32, misa=0x40103124
Info : starting gdb server for K1921VG015.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
6.1.2. Во второй консоли запустите GDB клиента

Обязательно необходимо запусткать GDB клиента из набора инструментов GNU RISC-V Embedded GCC

$ /usr/bin/bin-riscv-none-elf-gcc/riscv-none-elf-gdb
(gdb)

6.2. Запустите отладку в консоли GDB

6.2.1. Загрузите символы из ELF файл
(gdb) file ~/REPOSITORY/EOOS/build/codebase/tests/EoosTests.elf

Reading symbols from ~/REPOSITORY/EOOS/build/codebase/tests/EoosTests.elf
6.2.2. Подключитесь к GDB серверу
(gdb) target remote localhost:3333

Remote debugging using localhost:3333
6.2.3. Сбросьте MCU
(gdb) monitor reset

JTAG tap: K1921VG015.cpu tap/device found: 0x00000d5b (mfg: 0x6ad (CloudBEAR LLC), part: 0x0000, ver: 0x0)
JTAG tap: BSCAN.bscan tap/device found: 0x20c5f44d (mfg: 0x226 (MediaTek), part: 0x0c5f, ver: 0x2)
6.2.4. Загрузите ELF файл
(gdb) load

Loading section .text.startup, size 0x20 lma 0x80000000
Loading section .text, size 0x2ac64 lma 0x80000020
Loading section .init_array, size 0x4 lma 0x8002ac84
Loading section .rodata, size 0x4494 lma 0x8002ac88
Loading section .gcc_except_table, size 0xa5 lma 0x8002f11c
Loading section .gcc_except_table._ZN4eoos3lib13UniquePointerINS_3api6ThreadENS0_19SmartPointerDeleterIS3_EENS0_9AllocatorEE5resetEPS3_, size 0x13 lma 0x8002f1c1
Loading section .gcc_except_table._ZN4eoos3lib5GuardINS0_9AllocatorEED2Ev, size 0x4 lma 0x8002f1d4
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys5MutexINS2_12MutexManagerEEELl1ENS0_9AllocatorEE8allocateEjPv, size 0xc lma 0x8002f1d8
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys5MutexINS2_12MutexManagerEEELl1ENS0_9AllocatorEE4freeEPv, size 0xc lma 0x8002f1e4
Loading section .gcc_except_table._ZN4eoos3lib5GuardINS0_9AllocatorEED0Ev, size 0x8 lma 0x8002f1f0
Loading section .gcc_except_table._ZN4eoos3lib13UniquePointerINS_3api5MutexENS0_19SmartPointerDeleterIS3_EENS0_9AllocatorEE5resetEPS3_, size 0x13 lma 0x8002f1f8
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys6ThreadINS2_9SchedulerEEELl1ENS0_9AllocatorEE8allocateEjPv, size 0xc lma 0x8002f20b
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys6ThreadINS2_9SchedulerEEELl1ENS0_9AllocatorEE4freeEPv, size 0xc lma 0x8002f217
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys9SemaphoreINS2_16SemaphoreManagerEEELl1ENS0_9AllocatorEE8allocateEjPv, size 0xc lma 0x8002f223
Loading section .gcc_except_table._ZN4eoos3lib10MemoryPoolINS_3sys9SemaphoreINS2_16SemaphoreManagerEEELl1ENS0_9AllocatorEE4freeEPv, size 0xc lma 0x8002f22f
Loading section .gcc_except_table._ZN4eoos3lib13UniquePointerINS_3api9SemaphoreENS0_19SmartPointerDeleterIS3_EENS0_9AllocatorEE5resetEPS3_, size 0x13 lma 0x8002f23b
Loading section .gcc_except_table.__gxx_personality_v0, size 0x1c lma 0x8002f250
Loading section .gcc_except_table.__cxa_call_unexpected, size 0x20 lma 0x8002f26c
Loading section .gcc_except_table._ZN10__cxxabiv111__terminateEPFvvE, size 0x10 lma 0x8002f28c
Loading section .gcc_except_table._ZN9__gnu_cxx27__verbose_terminate_handlerEv, size 0x2c lma 0x8002f29c
Loading section .srodata, size 0xe0 lma 0x8002f2c8
Loading section .sdata, size 0x20 lma 0x8002f3a8
Loading section .data, size 0x7c8 lma 0x8002f3c8
Start address 0x80000000, load size 195470
Transfer rate: 13 KB/sec, 5584 bytes/write.
6.2.5. Установите точку останова
(gdb) break _start

Breakpoint 1 at 0x80000000: file .../eoos-project-if-generic-riscv-k1921vg015-niiet-evk/codebase/hal/source/hal.Boot.gcc.S, line 24.
Note: automatically using hardware breakpoints for read-only addresses.
6.2.6. Запустите программу до точки останова
(gdb) continue

Continuing.
Breakpoint 1, _start () at .../eoos-project-if-generic-riscv-k1921vg015-niiet-evk/codebase/hal/source/hal.Boot.gcc.S:24
24       csrw    mstatus, zero
6.2.7. Отключитесь от GDB сервера
(gdb) disconnect
Ending remote debugging.
6.2.7. Завершите GDB клиент
(gdb) quit
6.3. Завершите OpenOCD отладчик

В Windows можно просто закрыть окно первой консоли.

В Ubuntu, к сожалению, OpenOCD на данный момент не может быть корректно завершён пользовательской командой, потому для повторного корректного запуска OpenOCD необходимо принудительно завершить его исполнение.

6.3.1. Закройте OpenOCD

В Консоли OpenOCD нажмите Ctrl-Z

~/REPOSITORY/EOOS$
6.3.2. Определите PID основного процесса OpenOCD
~/REPOSITORY/EOOS$ ps aux | grep openocd

root       19690  0.0  0.0  14396  6108 pts/2    T    16:03   0:00 sudo /usr/local/bin/openocd ...
root       19691  0.0  0.0  14396  2120 pts/3    Ss   16:03   0:00 sudo /usr/local/bin/openocd ...
root       19692  0.3  0.0  19740  5888 pts/3    Tl+  16:03   0:11 /usr/local/bin/openocd ...
6.3.2. Убейте основнй процесса OpenOCD
~/REPOSITORY/EOOS$ kill -9 19690

7. Как отлажиать программу

7.1. Отладка с помощью Visual Studio Code

VSCode is IDE that allows to debug the CMake built EOOS program. For the reason you need to install the next plugins:

VSCode - это IDE, которая позволяет отлаживать программу EOOS, созданную CMake. Для корректной отладки вам необходимо установить следующие плагины:

7.1.1. Запустите VSCode и откройте папку проекта

Запустите VSCode и проделайте следующие шаги:

  • Откройте папку проекта ~/REPOSITORY/EOOS: File > Open Folder…
  • Перейдите во вкладку Run and Debug и нажмите Create a launch.json file
  • Выберете GDB в выпадающем списке
  • Скопируйте содержимое json из директории ~/REPOSITORY/EOOS/projects/eoos-exe-tests-vscode в созданный launch.json файл
7.1.2. Откройте две консоли в VSCode

В английской раскладке дважды нажмите Ctrl+Shift-`

Внимание! На ОС Windows вторую консоль надо запускать отдельно, как консоль MSYS MINGW64.

7.1.3. В первой консоли запустите OpenOCD отладчик

Отладчик необходимо запускать из корневой директории проекта (будет открыта по умолчанию).

Для Ubuntu:

~/REPOSITORY/EOOS$ sudo ./tools/openocd/bin/ubuntu/openocd \
-s ./tools/openocd/scripts \
-s ./tools/openocd/scripts/interface/ftdi \
-s ./tools/openocd/scripts/interface \
-s ./tools/openocd/scripts/target \
-f vg015_dev_onboard_ftdi.cfg \
-f k1921vg015.cfg \
-c "init;halt"

Тоже самое в одну строчку для Windows PowerShell консоли:

PS C:\REPOSITORY\EOOS> ./tools/openocd/bin/windows/openocd.exe -s ./tools/openocd/scripts -s ./tools/openocd/scripts/interface/ftdi -s ./tools/openocd/scripts/interface -s ./tools/openocd/scripts/target -f vg015_dev_onboard_ftdi.cfg -f k1921vg015.cfg -c "init;halt"
7.1.4. Во второй консоли соберите проект

Соберите CMake проект в Debug конфигурации.

~/REPOSITORY/EOOS/scripts/python$ python3 Make.py \
--eoos Generic \
--clean \
--build ALL \
--config Debug \
--toolchain Toolchain.<your_OS>.riscv-none-elf-gcc.cmake
7.1.5. Отлаживайте проект

Установите точку останова, перейдите во вкладку Run and Debug и нажмите и нажмите кнопку Start Debugging (EOOS Tests). VSCode загрузит программу во флэш микроконтроллера и запустит её до точки останова. Вы можете отлаживать вашу программу на базе EOOS по шагам.

Описание

EOOS Project без ОС для RISC-V К1921ВГ015 на плате НИИЭТ КФДЛ.441461.029РЭ

Конвейеры
0 успешных
0 с ошибкой