Разработка для Linux | Embedded, ML, IoT
272 subscribers
46 photos
1 video
2 files
132 links
Канал с анонсами образовательных мероприятий от ЦПР РТСофт - экспертов в области Embedded Linux, разработки промышленного CПО и систем искусственного интеллекта

Наши тренинги: https://linuxcourses.rtsoft.ru
Портфолио проектов: https://outsource.rtsoft.ru
Download Telegram
ℹ️Рады сообщить о том, что в ЦПР РТСофт открыта запись на тренинг "Основы разработки встраиваемых систем на базе Embedded Linux", который пройдет 3-4 октября 2024 года в офисе нашей компании, оффлайн.

Программа тренинга:

Тема 1. Linux Kernel
Принципы разработки ядра:
•Жизненный цикл Linux Kernel
•Подготовка патчей к публикации
•Best practices работы с Linux Kernel Community
•Опционально: модуль ядра + LAB: пример сборки

Тема 2. Исходный код
Работа с исходным кодом мобильных и встраиваемых ОС
•Системы сборки (Ninja, Autotools, CMake)
•Структура хранения сборников в ОС:
• Yocto: LAB: Пример сборки образов, добавления рецепта для пользовательского приложения (с Makefile и CMake), рецепта для модуля ядра
• Buildroot
• AOSP

Тема 3. Kernel Configuration
Сборка ядра, окружение, адаптация под платформу
•Работа с kconfig & defconfig
•Типы образов ядра
•LAB: добавление своего модуля с запуском в qemu
•Работа с cmdline: все варианты генерации, основные параметры

Тема 4. Загрузка ОС
Брингап платформы
•Типы запуска и загрузки, nfs, tftpboot; LAB: сборка uboot и загрузка в qemu, по сети
•Передача управления в userspace, initd, system; LAB: добавление systemd сервиса
•LAB: основы отладки kgdb, earlyprintk, dynamic debugfs

Тема 5. Безопасность и уязвимости
Необходимые условия для аттестации ОС
•Основные типы уязвимостей
•Источники данных о CVE
•Верификация, SBOM
•Поиск и исправление уязвимостей. LAB: Сканер уязвимостей

Продолжительность: 2 дня

Заявки на обучение можно оставить через наш сайт: https://linuxcourses.rtsoft.ru/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Сетевые команды для Uboot

Сохраняйте, чтобы не потерять!

bootp [loadAddress] [bootFilename] — Загружает образ через сеть с использованием протокола BootP/TFTP. Если аргументы не указаны, используются значения переменных окружения loadaddr и bootfile.

dhcp — Запрашивает IP-адрес у DHCP-сервера. Если переменная autoload установлена на yes, файл из bootfile загружается в память по адресу loadaddr через TFTP.

ping <pingAddress> — Проверяет доступность IP-адреса. Если ответ получен, вы увидите сообщение: "host <pingAddress> is alive".

tftpboot [loadAddress] [bootfilename] — Передает образ файла через TFTP в RAM по адресу loadAddress.

nfs [loadAddress] [host ip addr:bootfilename] — Загружает образ через NFS в память.

• rarpboot [loadAddress] [bootfilename] — Загружает образ через RARP/TFTP в память.

sntp — Получает дату и время с NTP-сервера, указанного в переменной ntpserverip.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
Команды для работы с USB для Uboot

Сохраняйте, чтобы не потерять!

usb reset — Сбрасывает (пересканирует) контроллер USB.

usb stop [f] — Останавливает USB; [f] — принудительная остановка.

usb tree — Показывает дерево USB-устройств.

usb info [dev] — Отображает доступные USB-устройства.

usb storage — Показывает информацию о USB-накопителях.

usb dev [dev] — Показывает или устанавливает текущее USB-устройство.

usb part [dev] — Печатает таблицу разделов одного или всех USB-накопителей.

usb read addr blk# cnt — Читает блоки, начиная с блока blk#, в адрес оперативной памяти addr.

fatload usb <dev[:part]> <addr> <filename> — Загружает образ файла filename с FAT-раздела part USB-устройства dev в оперативную память по адресу addr. Если раздел не указан, предполагается раздел 1.

ext2load usb <dev[:part]> <addr> <filename> — Загружает образ файла filename с раздела EXT2/3 USB-устройства dev в оперативную память по адресу addr. Если раздел не указан, используется раздел 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
ℹ️Немного о ЦПР РТСофт

К нам присоединилось большое количество новых участников, сегодня делимся полезной информацией о нашей компании.

Кто мы? Центр Программных Разработок РТСофт - компания, специализирующаяся на заказной разработке ПО и систем машинного зрения.

Чем можем быть полезны:

Образовательные курсы в области Embedded Linux и ML. Обучаем системному программированию для Linux, на выбор доступно 7 образовательных тренингов: Основы разработки встраиваемых систем на базе Embedded Linux, Разработка драйверов Linux, Адаптация AOSP для устройства, Углубленный тренинг по загрузчику, Углубленный тренинг по CI/CD и разработке системных компонент, Тренинг по 4diac, ML для Embedded.

RITMS OMEGA. Система контроля качества продукции на основе ИИ, которая помогает повышать качество продукции и контролирует соблюдение технологических операций. Походит как для предприятий с непрерывными, так и дискретными производственными циклами.

RITMS UP2DATE. Open-source решение для управления парком удаленных устройств - от умных счетчиков до носимых фитнес-трекеров.

Услуги аутсорс-разработки. Мы работаем в сферах разработки систем компьютерного зрения, ML, системного ПО и драйверов, создания систем промышленного Интернета вещей (IIoT).

По всем вопросам можно обращаться на [email protected]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
❗️Публикуем расписание тренингов на октябрь-декабрь 2024

Основы разработки встраиваемых систем на базе Embedded Linux: 21-22 ноября 2024 (ОНЛАЙН), 19-20 декабря 2024 (оффлайн)

Разработка драйверов Linux: 14-18 октября 2024, 2-6 декабря 2024

Углубленный тренинг по загрузчику: 28-29 ноября 2024 (ОНЛАЙН)

Углубленный тренинг по CI/CD и разработке системных компонент: 7-8 ноября 2024

Для записи на тренинги заполните форму на сайте: https://linuxcourses.rtsoft.ru/

Ждем вас на наших тренингах!
Please open Telegram to view this post
VIEW IN TELEGRAM
Embedded Linux: создаем кастомную BSP

Создание BSP — важная задача в embedded-разработке, ввиду того, что разные устройства имеют различное железо, требующее своей специфической настройки.

BSP (Board Support Package) — это набор конфигураций и драйверов, необходимых для работы операционной системы на конкретной аппаратной платформе.


Системы сборки, например, Buildroot и Yocto, позволяют создавать кастомные BSP. Рассмотрим пример работы с BSP для платы Nova в Buildroot:

1. Сначала настраивается дефолтная конфигурация, например, для платы BeagleBone:

make beaglebone_defconfig

2. Затем создается своя директория для настроек платы:

mkdir -p board/mycompany/nova

3. Далее добавляются нужные конфигурации для загрузчика, ядра и device tree, которые затем будут собраны в единый образ системы.

4. После этого можно запускать сборку:

make

Это создаст образ, который можно загрузить на устройство. Все настройки можно сохранить в файл конфигурации, чтобы потом легко пересобрать систему:

make savedefconfig BR2_DEFCONFIG=configs/nova_defconfig


Рекомендуемые места для хранения ваших изменений:

📌board/<организация>/<устройство>: здесь находятся любые патчи, бинарные файлы, дополнительные шаги сборки, конфигурационные файлы для Linux, U-Boot и других компонентов.
📌configs/<устройство>_defconfig: содержит стандартную конфигурацию для платы.
📌packages/<организация>/<имя_пакета>: сюда можно поместить любые дополнительные пакеты для этой платы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🗿2
Коллеги, выбираем формат проведения тренинга “Углубленный тренинг по загрузчику”!
Выберите формат (даты проведения - 28-29 ноября 2024)
Anonymous Poll
54%
Онлайн (с использованием Qemu)
21%
Оффлайн
25%
Узнать результат
🔖Обновленное расписание тренингов на ноябрь - декабрь 2024

Обращаем внимание, что углубленный тренинг по загрузчику состоится в онлайн-формате.

Основы разработки встраиваемых систем на базе Embedded Linux: 21-22 ноября 2024 (ОНЛАЙН), 19-20 декабря 2024 (оффлайн)

Разработка драйверов Linux: 14-18 октября 2024, 2-6 декабря 2024

Углубленный тренинг по загрузчику: 28-29 ноября 2024 (ОНЛАЙН)

Записаться на тренинг можно на сайте: https://linuxcourses.rtsoft.ru/

Ждем вас на наших тренингах!
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Yocto VS Buildroot для встраиваемых систем

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

Yocto — это не дистрибутив Linux, а фреймворк, который позволяет разработчикам создавать адаптированные дистрибутивы Linux для различных аппаратных архитектур. Отличительная особенность - высокая гибкость. Также среди плюсов выделяют то, что Yocto широко поддерживается, обладает большим набором инструментов и SDK. Однако, минусом является то, что время сборки достаточно велико.

Вместе с тем, Buildroot упрощает процесс создания дистрибутива Linux для встраиваемых систем. Он прост в понимании и быстр, а потому будет идеальным для небольших проектов с ограниченными ресурсами. Но нужно иметь в виду, что коммьюнити вокруг Buildroot, и, соответственно, поддержка существенно меньше.

Что же выбрать?

Все зависит от проекта. Если вы работаете над большим и сложным проектом, лучшим решением будет выбор Yocto: он позволяет добавлять функциональность и настраивать под различные платформы с помощью реализации слоев, это несомненный плюс в контексте кастомизации. Также важно отметить, что Yocto поддерживается Linux Foundation.

А Buildroot отлично подойдет, если вы работаете над небольшим проектом и просто ищете быстрое и простое решение для создания встраиваемой системы.
👍4
Компилируем device tree

Для загрузчика и ядра Linux требуется двоичное представление дерева устройств (Device Tree), которое создается с помощью компилятора дерева устройств – dtc. Компиляция создает файл с расширением .dtb, который называется бинарным деревом устройств или блобом дерева устройств.

Вот как это сделать:

1. Компилятор dtc встроен в исходный код Linux в директории scripts/dtc/dtc и также доступен в виде пакета для большинства дистрибутивов Linux.
2. Чтобы скомпилировать простое дерево устройств (без использования #include), выполните команду:

$ dtc simpledts-1.dts -o simpledts-1.dtb
DTC: dts->dts on file "simpledts-1.dts"


⚠️ Важно: Компилятор dtc не выдает подробных сообщений об ошибках и проверяет только базовый синтаксис, поэтому ошибки в исходном файле могут быть сложными для отладки.

Более подробно погрузиться в предметную область можно на нашем курсе “Основы разработки встраиваемых систем на базе Embedded Linux
👍3
Управление переменными окружения в U-Boot

В U-Boot есть ряд команд для работы с переменными окружения, позволяющими управлять конфигурациями загрузки и системными настройками:

✏️printenv [name ...] — выводит значения переменных окружения. Без аргументов отображает все переменные, а если указаны имена переменных, выводит только их значения.

✏️printenv_dynamic — отображает все динамические переменные.

✏️envreset — сбрасывает все переменные окружения к заводским настройкам. Не затрагивает постоянные настройки, такие как wlanaddr или ethaddr, которые хранятся в NVRAM.

✏️saveenv — сохраняет текущие значения переменных в NVRAM, чтобы они были доступны после перезагрузки.

✏️setenv name [value] — устанавливает значение для переменной с именем name. Если значение value не указано, переменная удаляется. Если переменная динамическая, она будет сброшена на значение по умолчанию.

🔖Более подробно погрузиться в предметную область можно на нашем курсеУглубленный тренинг по загрузчику
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👏1
Архитектура графической подсистемы Linux

Делимся материалами, которые помогут вам глубже разобраться в данной теме:

1. Embedded Graphics Drivers in Mesa (ELCE 2019). Ссылка: https://youtu.be/By_XgayTSrY?si=0giFf4YJHXMv2WN3

2. "Panfrost: Open Source meets Arm Mali GPUs" - Robert Foss (LCA 2020). Ссылка: https://youtu.be/ABdoZo3AXlw?si=bJfMBX3861sgp2O6

3. Wayland Architecture. Ссылка: https://www.cnblogs.com/psbec/p/13543682.html
🔥2
Дайджест популярных постов этой осени

Собрали для вас небольшую подборку наиболее полезных постов за последние несколько месяцев. Сохраняйте, чтобы не потерять!

Команды для работы с USB для Uboot

Сетевые команды для Uboot

Ресурсы для подготовки к тренингу “Разработка драйверов Linux”

Ресурсы для подготовке к тренингу “Основы разработки для Embedded Linux”
👍2
🧑‍🎓 Коллеги, напоминаем о том, что у нас проходят образовательные тренинги:

Основы разработки встраиваемых систем на базе Embedded Linux (Базовый уровень)

Какие темы рассматриваются?

Тема 1. Linux Kernel
Тема 2. Исходный код
Тема 3. Kernel Configuration
Тема 4. Загрузка ОС
Тема 5. Безопасность и уязвимости

Подробнее ознакомиться с программой и темами тренинга вы можете на нашем сайте: https://linuxcourses.rtsoft.ru

Какова продолжительность тренинга?

Наш интенсив занимает 2 насыщенных дня - обучение длится около 8 часов в каждый из дней.

Выдается ли сертификат по окончании обучения?

Да, мы выдаем сертификат собственного образца

Предусмотрены ли практические занятия?

Да! Мы в каждом нашем тренинге выделяем часы для проведения практических (“лабораторных”) работ .

Пример лабораторной работы: Пример сборки образов, добавления рецепта для пользовательского приложения (с Makefile и CMake), рецепта для модуля ядра
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с памятью в U-Boot: команды cp и cmp

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

Команда cp используется для копирования данных из одной области памяти в другую. Формат:

cp [адрес источника] [адрес назначения] [количество слов]

Команда cmp сравнивает содержимое двух областей памяти. Формат команды:

cmp [адрес 1] [адрес 2] [количество слов]
Публикуем программу тренинга по 4diac 🔥

1. Обзор 4diac и Forte
• Среда разработки и среда исполнения
• Базовое приложение
• Приложения с сетевым соединением по MQTT и Modbus
2. Структура исходных кодов проектов Forte
3. Функциональные блоки и обработка событий
• События
• Входные переменные
• Типы функциональных блоков
• Композитные функциональные блоки
4. Собственные функциональные блоки
• Типы функциональных блоков
• Кастомные функциональный блоки
5. Сетевая подсистема и система ввода-вывода
• Стандартные функциональные блоки
• Архитектура сетевой подсистема
• Архитектура подсистемы ввода-вывода
6. Протокол взаимодействия 4diac и Forte
• Файлы конфигурации
• Взаимодействие 4diac и forte
7. 4diac как система реального времени

Продолжительность тренинга: 2 дня

Даты тренинга на данный момент формируются по запросу.

Для записи необходимо направить заявку по почте: [email protected]
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Наши коллеги из SberDevices 5 декабря в 11.00 проводят конференцию по системному ПО, железу, Linux и open source  — OS DevConf. Формат - онлайн и оффлайн.

Конференция будет полезна разработчикам системного и встраиваемого ПО, специалистам по разработке ядра и драйверов, специалистам по SoC, сетевым инженерам.

Спикеры расскажут о работе с ядром Linux, а также поделятся докладами про прототипы SoC, драйверы на Rust, параллельное программирование без ОС и системное программирование.

Полную программу можно посмотреть на сайте конференции.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Коллеги, анонсируем новые даты курсов на 2025 год 🔥

Основы разработки встраиваемых систем на базе Embedded Linux - 16-17 января 2025

Разработка драйверов Linux - 3-7 февраля 2025

Углубленный тренинг по загрузчику - 25-26 февраля 2025

Тренинг по 4diac - 13-14 марта 2025

Тренинг по ML для Embedded - 27-28 марта 2025

*даты потоков могут меняться в зависимости от набора группы

Зарегистироваться можно на нашем сайте: https://linuxcourses.rtsoft.ru
Device Firmware Upgrade (DFU)

Device Firmware Upgrade (DFU) – это важный механизм, который позволяет загружать и выгружать прошивки в U-Boot через USB.

В U-Boot поддержка DFU осуществляется с помощью команды dfu, опцией CONFIG_DFU, а также с использованием стека DFU, который включает файлы common/dfu.c и common/spl/spl_dfu.c. При этом используется USB DFU, который реализован в файле drivers/usb/gadget/f_dfu.c.

Доступ к носителям осуществляется через бэкенды DFU, находящиеся в driver/dfu. В настоящее время поддерживаются:
• MMC (RAW, FAT, EXT2, EXT3, EXT4, SKIP, SCRIPT)
• SCSI (UFS, RAW разделы, FAT, EXT2, EXT3, EXT4, SKIP, SCRIPT)
• NAND
• RAM
• SF (серийная флеш-память)
• MTD (все устройства MTD: NAND, SPI-NOR, SPI-NAND)
• Виртуальный

Подробнее о Uboot можно узнать на наших тренингах: https://linuxcourses.rtsoft.ru
👍3