- Русские Блоги
- Сборка операционной системы Linux + Xenomai в реальном времени на платформе Xilinx ZYNQ
- предисловие
- Подготовить контент
- Исправление исходного кода Linux
- Компиляция ядра патча для Linux
- Установка Xenomai
- ксеномай беговые тесты
- Интеллектуальная рекомендация
- Используйте Maven для создания собственного архетипа скелета проекта (4)
- Станция интерпретации больших данных B пользуется популярностью среди гигантов района «призрачные животные» Цай Сюкуня.
- Вопрос A: Алгоритм 7-15: алгоритм кратчайшего пути Дейкстры
- Учебный дневник — перелистывание страниц
- Нулевое основание для отдыха-клиента
- Вам также может понравиться
- Подробно объясните, как новички используют sqlmap для выполнения инъекционных атак на базы данных mysql.
- Vue заметки сортируют, пусть вам начать с Vue.js:. 04_3 Сетевое приложение: AXIOS плюс Вью
- Шаблон алгоритма конной повозки
- 35 Line Code, чтобы получить метод исследования событий (ON)
- Образ докера: gitlab
- GitLab
- Start_Here
- Start Here
- Supported hardware
- How does Xenomai deliver real-time?
- Xenomai license terms
- Preparation checklist
- Single or dual kernel configuration?
- Do you need non-POSIX real-time APIs?
- Gathering the Linux kernel bits
- Getting the Xenomai sources
Русские Блоги
Сборка операционной системы Linux + Xenomai в реальном времени на платформе Xilinx ZYNQ
предисловие
Xenomai — это мощное расширение ядра Linux в режиме реального времени, использующее механизм с двумя ядрами. Из-за реализации и сложности самого ядра Linux, сам Linux не может использоваться для сильных приложений реального времени. При использовании двухъядерной технологии существует микроядро, которое поддерживает сильную работу в режиме реального времени. Оно работает на аппаратной платформе вместе с ядром Linux. Ядро реального времени имеет более высокий приоритет, чем ядро Linux. Оно отвечает за обработку задач системы в реальном времени, а Linux отвечает за обработку не-ядра. Задачи реального времени: только когда ядро реального времени не имеет задач реального времени для обработки, ядро Linux может получить возможность работать. Таким образом, Xenomai и традиционный Linux образуют двойное ядро, чтобы восполнить недостатки низкой производительности Linux в реальном времени.
Подготовить контент
3.0.5 не последняя версия, читатели могут попробовать последнюю версию xenomai. Официальный сайт Xenomail:http://www.cs.ru.nl/lab/xenomai/
Патчирование является ключевым моментом миграции системы, поэтому патч Ipipe лучше всего соответствует номеру версии Linux, и мы столкнемся с гораздо меньшими проблемами в процессе сборки.
Совет по развитию:
Эта миграция основана на плате разработки Chuanglong zynq7020 (двухъядерный ARM A9 + FPGA), но это руководство также применимо к платам серии zynq7000. Некоторые операции могут отличаться, что требует каждого. Приходите и проверьте.
В дополнение к необходимым требованиям, указанным выше, нам также необходимо установить Petalinux (Petalinux — инструмент для разработки встроенного Linux, выпущенный компанией Xilinx). Установка Petalinux здесь не детализирована, пожалуйста, читатели, чтобы решить ее самостоятельно.
После того как все вышеперечисленное содержимое будет готово, мы можем выполнить миграцию системы.
Перед портированием лучше собрать xenomai на версии liunx, предоставленной платой разработки, так что вы можете избежать многих проблем, таких как файл U-BOOT.BIN, файл devicetree.dtb и корневая файловая система, которые не требуют обновления. Вам нужно только обновить файл zImage, но только если вы сможете найти патч, соответствующий исходному коду Linux.
Исправление исходного кода Linux
Первый шаг — распаковать исходный код Linux и xenomai.
Разархивируйте их в одну папку
В то же время мы создаем папку патчей в этой папке для хранения патчей и копируем патчи в нее
Пока эта папка имеет три папки: linux-xlnx-4.9.24, xenomai-3.0.5 и patch
Второй шаг — начать исправление
Сначала введите исходный каталог xenomai, а затем примените патч
Среди них prepare-kernel.sh — сценарий оболочки, который может установить соответствующую версию xenomai в исходный пакет ядра соответствующей версии, но используемый здесь патч загружается отдельно и не входит в xenomai-3.0.5. Некоторые люди могут спросить, так как это отдельный патч, почему бы не использовать команду patch -p1 Масштабирование частоты ЦП, нажать ввод, чтобы войти, и нажать N, чтобы заморозить эту опцию; вернуться в основной интерфейс, выбрать Функции ядра -> Распределитель непрерывной памяти. , Затем нажмите клавишу N, чтобы запретить, и, наконец, не забудьте выбрать сохранить, чтобы сохранить.
Компиляция ядра патча для Linux
Компиляция ядра Linux
Выполните следующую команду, чтобы скомпилировать исправленное ядро Linux
(Второе слово в zImage — это заглавная буква i)
После завершения компиляции файл образа ядра zImage будет сгенерирован по пути «arch / arm / boot» в каталоге установки исходного кода ядра Linux.
Этот процесс будет долгим и требует нашего терпения, иначе вы можете сыграть в короля или съесть курицу.
Компиляция дерева устройств
Если исходный код linux, исходный код xenomai, патч и плата разработки, которые вы используете, такие же, как у меня, вы можете пропустить этот шаг и использовать devicetree.dtb, предоставленный платой разработки, в противном случае вам необходимо выполнить следующие операции.
После завершения компиляции в пути «arch / arm / boot / dts /» каталога установки ядра Linux будет сгенерировано много файлов дерева устройств, и вы сможете найти тот, который соответствует вашей плате разработки.
U-BOOT сборник
Как правило, файл U-BOOT.BIN предоставляется каждой компанией-разработчиком, поэтому нам не нужно делать это самостоятельно, здесь мы говорим только об основных идеях. Сначала распакуйте исходный код U-BOOT, затем очистите U-Boot, затем включите переменные среды, затем настройте U-Boot, затем скомпилируйте U-Boot и, наконец, скомпилируйте сгенерированный u-boot.elf и загрузчик первого уровня на основе Petalinux. Программа zynq_fsbl.elf объединяется для создания BOOT.BIN.
Установка Xenomai
Теперь нам нужно создать библиотеки и инструменты Xenomai, необходимые для работы нашей системы Linux. Сначала вернемся к дереву исходного кода Xenomai, нам нужно выполнить следующую команду
Это сделает исходный код Xenomai готовым для создания наших инструментов и библиотек. Если вам будет предложено установить некоторые программы и библиотеки в вышеописанном процессе, нам просто нужно следовать инструкциям для их установки.
Затем введите исходный каталог xenomai и выполните следующую команду
Продолжайте выполнять команду
После компиляции мы найдем нужную папку инструмента bin и файл библиотеки lib в исходном каталоге xenomai usr / xenomai.
Обратите внимание, что в предыдущей команде перед установкой есть пробел, и установка — это команда, а не папка. Я застрял здесь в течение длительного времени, а папки bin и lib не создавались.
Затем непосредственно скопируйте файлы в каталогах bin и lib в каталоги bin и lib в корневой файловой системе Linux. Если вы хотите напрямую скопировать папку xenomai в usr в корневой файловой системе Linux, вам просто нужно скопировать
Добавить в файл
Затем реализация вступает в силу
Посмотрим, получится ли
ксеномай беговые тесты
На данный момент мы получили файл zImage образа Linux, загрузочный файл U-BOOT.BIN, корневую файловую систему rootfs, файл дерева устройств devicetree.dtb, файл FPGA Z-7020.bit, а также библиотеки и инструменты lib. Скопируйте вышеуказанные файлы в соответствующую область хранения на SD-карте и следуйте инструкциям по перепрошивке, чтобы прошиться, что здесь не подробно.
Запустите доску разработки, и вы обнаружите, что она немного отличается от обычной загрузки системы Linux.
После запуска системы выполните следующие инструменты для запуска теста задержки
Выводит некоторую статистику о задержке системы
указывает, что система xenomai была успешно трансплантирована, но по какой-то причине наша задержка отрицательна, что сбивает с толку, и это неверно. Эта проблема будет продолжать решаться в будущем.
QQ:948826870
Электронная почта: [email protected]
Интеллектуальная рекомендация
Используйте Maven для создания собственного архетипа скелета проекта (4)
Один, базовое введение в Maven Во-вторых, скачайте и настройте Maven Три, настроить домашнее зеркало на Али В-четвертых, создайте содержимое скелета архетипа В-пятых, создайте проект через архетип 6. .
Станция интерпретации больших данных B пользуется популярностью среди гигантов района «призрачные животные» Цай Сюкуня.
Автор | Сюй Линь Ответственный редактор | Ху Вэйвэй Предисловие Недавно Цай Сюкунь отправил письмо юриста на станцию B. Содержание письма юриста показало, что «на станции B имеется большое кол.
Вопрос A: Алгоритм 7-15: алгоритм кратчайшего пути Дейкстры
Название Описание Во взвешенном ориентированном графе G для исходной точки v задача о кратчайшем пути от v до оставшихся вершин в G называется задачей кратчайшего пути с одной исходной точкой. Среди ш.
Учебный дневник — перелистывание страниц
Используйте плагин Layui.
Нулевое основание для отдыха-клиента
Предисловие: статья, обобщенная, когда я только что связался с тестом API, в дополнение к остальному клиенту этот инструмент сам, некоторые из мелких пониманий API, я надеюсь помочь тому же белую белу.
Вам также может понравиться
Подробно объясните, как новички используют sqlmap для выполнения инъекционных атак на базы данных mysql.
Шаг 1. Откройте для себя инъекцию Со мной все было нормально, когда я был свободен, я случайно нажал на чужой блог и обнаружил, что ссылка заканчивается на id, поэтому я проверил его вручную. Результа.
Vue заметки сортируют, пусть вам начать с Vue.js:. 04_3 Сетевое приложение: AXIOS плюс Вью
В предыдущем разделе мы ввели основное использование AXIOS, по сравнению с нативным Ajax, который при условии, что способ является более простым и, а сетевые данные теперь в состоянии получить его ров.
Шаблон алгоритма конной повозки
Блог гангстеров Тележки, запряженные лошадьми, используются для решения проблемы самой длинной подстроки палиндрома. Основное внимание уделяется подстрокам, а не подпоследовательностям. Если вы хотите.
35 Line Code, чтобы получить метод исследования событий (ON)
Об авторе: Чжу Сяою,Личный публичный номер: языковой класс большой кошки Эта проблема научит вас этой большой классе Cat.Как написать наиболее эффективное метод исследования событий с 35 Line R Code C.
Образ докера: gitlab
GitLab Docker images Both GitLab CE and EE are in Docker Hub: GitLab CE Docker image GitLab EE Docker image The GitLab Docker images are monolithic images of GitLab running all the necessary services .
Источник
GitLab
- xenomai
- Project information
- Project information
- Activity
- Labels
- Members
- Repository
- Repository
- Files
- Commits
- Branches
- Tags
- Contributors
- Graph
- Compare
- Issues 3
- Issues 3
- List
- Boards
- Service Desk
- Milestones
- Deployments
- Deployments
- Releases
- Monitor
- Monitor
- Incidents
- Analytics
- Analytics
- Repository
- Value stream
- Wiki
- Wiki
- Activity
- Graph
- Create a new issue
- Commits
- Issue Boards
Collapse sidebar Close sidebar
Start_Here
Start Here
Supported hardware
Xenomai is supported on a variety of hardware. The ports we know about are listed here.
How does Xenomai deliver real-time?
There are two options:
By supplementing Linux with a real-time co-kernel running side-by-side with it. This small extension named Cobalt is built into the Linux kernel, dealing with all time-critical activities, such as handling interrupts, and scheduling real-time threads. The Cobalt core has higher priority over the native kernel activities.
In this dual kernel configuration, all the RTOS APIs Xenomai provides interface with the Cobalt core, and only those APIs are deemed real-time capable, including the subset of POSIX 1003.1c services implemented by Xenomai (aka libcobalt).
Cobalt is an evolution of the former Xenomai 2 architecture. |
By relying on the real-time capabilities of the native Linux kernel, forming the Mercury core. Often, applications will require the PREEMPT-RT extension to be enabled in the target kernel, for delivering real-time services.
However, this is not mandatory, it depends on the application requirements with respect to responsiveness and maximum jitter; some may even tolerate a certain percentage of deadline misses.
In this single kernel configuration, all the non-POSIX RTOS APIs Xenomai provides are accurately emulated over the native threading library (preferably NPTL, but also supports linuxthreads for legacy setups).
Xenomai 3 supports both the single and dual kernel configurations. The discontinued Xenomai 2 architecture only supported the dual kernel configuration. |
Xenomai license terms
All Xenomai code running in kernel space is licensed under the terms of the Linux kernel license, i.e. GPL v2.
Xenomai libraries linked to applications are licensed under the terms of the LGPL v2.1.
For information regarding a particular software component, you should look at the COPYING file available in the directory containing the relevant source code.
Preparation checklist
Single or dual kernel configuration?
Assuming you know the target SoC and the application requirements with respect to real-time guarantees, you should define which of the single or dual kernel configurations best fits your needs. The following hints may help:
Does your application actually have real-time requirements, and how stringent are they? If migrating an application from an embedded RTOS to a Linux-based platform, the question may stand because unlike legacy RTOSes, Linux sees embedded and real-time characteristics as orthogonal issues. Some migrated applications may even be fine with only emulating the original RTOS API over a regular kernel and standard preemption (CONFIG_PREEMPT). Those may benefit from Xenomai 3 in single kernel configuration.
For stringent real-time requirements, you should consider the availability of the hard real-time support for your target SoC architecture and Linux kernel version.
Hardware support for Xenomai in dual kernel configuration can be viewed here. This technology is based on a kernel patch which introduces a mechanism for diverting all critical events to a dual kernel extension, coupled to the host Linux kernel. This mechanism called the Interrupt pipeline (aka I-Pipe) is described in details by this (outdated) document. All I-pipe patches available for various kernel releases can be fetched at this site.
For a single kernel configuration, the list of target architectures supporting the full preemption features (aka PREEMPT-RT) is available here.
How many CPU cores will be involved in real-time operations?
in a dual kernel configuration, the Xenomai co-kernel normally benefits from its simpler locking scheme when dealing with real-time activities concurrently on not more than four CPU cores.
Beyond four CPU cores running real-time activities, SMP scalability will be better with a single kernel configuration.
The key issue is with the number of CPU cores actually running real-time threads and receiving interrupts from real-time sources, not with the overall number of cores on line on the target hardware. Because the Cobalt co-kernel does not share any lock with the regular Linux kernel when dealing with real-time activities, a 16-way server pinning such activities on not more than four of the available cores would still deliver good performances in a Cobalt-based dual kernel configuration. |
Is any of those dual kernel pros critical to your case?
porting the Cobalt co-kernel to a new architecture is fairly simple.
it is decoupled from the development cycle of the mainline Linux kernel, thus allowing to pick the desired (or required) kernel version more freely.
it can simplify the worst-case analysis and keeps the results valid over update cycles of the mainline Linux kernel which hosts it.
it allows to fine-tune the non-real-time part for throughput without negative impact on the real-time job.
it does not require any tuning of the regular Linux system to guarantee short and bounded latencies for the real-time job.
Is any of those single kernel pros critical to your case?
the stock kernel drivers can be reused by real-time applications with no change (provided they don’t create latency issues due to an unfortunate implementation). On the other hand, drivers need to be specifically implemented for running over a dual kernel configuration, i.e. over the in-kernel RTDM interface.
the programming model may be simpler than with a dual kernel configuration, since the kernel is deemed to enforce real-time behavior globally. This said, cautious application design and implementation must be a common rule regardless of the underlying real-time technology, as not all available services may be suited for real-time usage.
all standard utilities for monitoring the system operations can report about the real-time activities out of the box. On the other hand, a dual kernel system has to adapt such tools specifically for this purpose.
Do you need non-POSIX real-time APIs?
Porting legacy non-POSIX applications to POSIX may not be the best option. Although there may be similarities, the semantics of traditional RTOS APIs may differ significantly from POSIX in many cases, which often makes the migration process quite painful and error-prone.
Xenomai ships with emulators of traditional RTOS APIs, like VxWorks™ and pSOS™, both available in single and dual kernel configurations. Xenomai aims at accurately mimicking the original services with low overhead.
However, maybe Xenomai does not provide an emulator yet for the API you are looking for, or some services are missing from the existing emulators, in which case you should consider raising the topic on the e-mail discussion list. Xenomai is based on generic building blocks for implementing RTOS APIs, so extending it is a documented option.
Gathering the Linux kernel bits
Depending on your requirements, you will need:
a Linux kernel ported to your target SoC or platform. If possible, prefer mainline kernel releases over vendor-originated ones. Among other issues, kernel patches required for running hard real-time applications over single (PREEMPT_RT) or dual kernel (I-pipe) configurations are commonly based over mainline kernels.
for a dual kernel configuration, an I-pipe patch fitting your target kernel. If you don’t find any patch that matches exactly but feel lucky, you may try applying a patch issued against a kernel only differing by its sublevel release number, e.g. from 3.10.22 to 3.10.20. However, even if it applies cleanly, some extra testing is required, and getting additional information from the e-mail discussion list may help.
for a single kernel configuration with hard real-time capabilities, a PREEMPT-RT patch matching your target kernel.
Getting the Xenomai sources
Xenomai 3 is the current architecture, aimed at supporting both the single and dual kernel configurations.
Источник