Сохраняйте, чтобы не потерять!
• 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 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
Основы разработки встраиваемых систем на базе 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-разработке, ввиду того, что разные устройства имеют различное железо, требующее своей специфической настройки.
Системы сборки, например, Buildroot и Yocto, позволяют создавать кастомные BSP. Рассмотрим пример работы с BSP для платы Nova в Buildroot:
1. Сначала настраивается дефолтная конфигурация, например, для платы BeagleBone:
2. Затем создается своя директория для настроек платы:
3. Далее добавляются нужные конфигурации для загрузчика, ядра и device tree, которые затем будут собраны в единый образ системы.
4. После этого можно запускать сборку:
Это создаст образ, который можно загрузить на устройство. Все настройки можно сохранить в файл конфигурации, чтобы потом легко пересобрать систему:
Рекомендуемые места для хранения ваших изменений:
📌 board/<организация>/<устройство>: здесь находятся любые патчи, бинарные файлы, дополнительные шаги сборки, конфигурационные файлы для Linux, U-Boot и других компонентов.
📌 configs/<устройство>_defconfig: содержит стандартную конфигурацию для платы.
📌 packages/<организация>/<имя_пакета>: сюда можно поместить любые дополнительные пакеты для этой платы.
Создание 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
Рекомендуемые места для хранения ваших изменений:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🗿2
Коллеги, выбираем формат проведения тренинга “Углубленный тренинг по загрузчику”!
Выберите формат (даты проведения - 28-29 ноября 2024)
Anonymous Poll
54%
Онлайн (с использованием Qemu)
21%
Оффлайн
25%
Узнать результат
Обращаем внимание, что углубленный тренинг по загрузчику состоится в онлайн-формате.
Основы разработки встраиваемых систем на базе 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 отлично подойдет, если вы работаете над небольшим проектом и просто ищете быстрое и простое решение для создания встраиваемой системы.
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 не выдает подробных сообщений об ошибках и проверяет только базовый синтаксис, поэтому ошибки в исходном файле могут быть сложными для отладки.
Более подробно погрузиться в предметную область можно на нашем курсе “Основы разработки встраиваемых систем на базе Embedded Linux”
Для загрузчика и ядра 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 не указано, переменная удаляется. Если переменная динамическая, она будет сброшена на значение по умолчанию.
🔖 Более подробно погрузиться в предметную область можно на нашем курсе “Углубленный тренинг по загрузчику”
В 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
Делимся материалами, которые помогут вам глубже разобраться в данной теме:
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”
Собрали для вас небольшую подборку наиболее полезных постов за последние несколько месяцев. Сохраняйте, чтобы не потерять!
Команды для работы с 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
linuxcourses.rtsoft.ru
Корпоративное обучение системному программированию на Linux
Интенсивные программы «Системное программирование для Linux» и «Разработка драйверов для Linux», которые помогают слушателям выйти на новый уровень понимания этой операционной системы.
Работа с памятью в U-Boot: команды cp и cmp
Одними из ключевых команд для работы с памятью являются cp (копирование) и cmp (сравнение).
Команда 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]
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
Конференция будет полезна разработчикам системного и встраиваемого ПО, специалистам по разработке ядра и драйверов, специалистам по 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
Основы разработки встраиваемых систем на базе 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
linuxcourses.rtsoft.ru
Корпоративное обучение системному программированию на Linux
Интенсивные программы «Системное программирование для Linux» и «Разработка драйверов для Linux», которые помогают слушателям выйти на новый уровень понимания этой операционной системы.
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
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
Вебинары от ЦПР РТСофт возвращаются!
Уже через неделю, 19.12 (четверг) в 11.00, состоится новый бесплатный вебинар на тему “Изюминки микропроцессорных архитектур. Часть 3”.
Зарегистрироваться можно по ссылке: https://rtsoft-swdc.timepad.ru/event/3148858/
Уже через неделю, 19.12 (четверг) в 11.00, состоится новый бесплатный вебинар на тему “Изюминки микропроцессорных архитектур. Часть 3”.
Зарегистрироваться можно по ссылке: https://rtsoft-swdc.timepad.ru/event/3148858/
🔥5👍4