Многоядерные гетерогенные системы — это вычислительные системы, которые позволяют различным ядрам одного и того же чипа SoC независимо запускать разные платформы. При правильном распределении процессорных ядер и периферийных ресурсов один чип SoC может одновременно запускать Linux и операционные системы реального времени (RTOS), удовлетворяя требования к функциональности системы, разнообразию аппаратного обеспечения и производительности в реальном времени, а также предлагая отличную экономическую эффективность. и компактность изделия.
1. Многоядерная гетерогенная система Rockchip
Многоядерное гетерогенное системное решение Rockchip включает в себя:
Операционные платформы:
Linux предоставляет стандартное ядро Linux; RTOS предлагает RT-Thread с открытым исходным кодом; Bare-metal поддерживает библиотеку разработки «голого железа», основанную на уровне аппаратной абстракции RK HAL. Пользователи также могут адаптировать другие ОСРВ на базе RK HAL.
Ядра процессора:
Он поддерживает однородные ядра ARM Cortex-A, работающие независимо внутри SoC, а также гетерогенные ядра ARM Cortex-M или RISC-V. Система распределяет задачи по наиболее подходящему ядру, повышая производительность и эффективность.
В настоящее время многоядерная гетерогенная система Rockchip использует неконтролируемый подход AMP (асимметричная многопроцессорная обработка). Он не использует управление виртуализацией, что позволяет быстрее реагировать на прерывания в системах реального времени, отвечая строгим требованиям реального времени в таких отраслях, как энергетика и промышленное управление .
2. Процессорные ядра RK3562J и поддержка AMP
Ядра процессора:
Поддержка AMP:
3. Механизм вложения прерываний
Вложенность прерываний — это эффективный механизм обработки прерываний, который позволяет системе реагировать на прерывания и обрабатывать их в зависимости от их приоритета, гарантируя своевременное выполнение критически важных задач. Он отличается высокой производительностью в реальном времени, гибкостью и быстрым откликом. Однако традиционные системы Linux не поддерживают вложение прерываний для упрощения проектирования, повышения стабильности системы, снижения рисков конкуренции за ресурсы и взаимоблокировок, а также улучшения совместимости и удобства обслуживания. Хотя Linux хорошо работает во многих сценариях приложений, ему трудно справиться с приложениями, работающими в режиме реального времени.
4. Тематическое исследование
Модель макетной платы: OK3562J-C
Версия документации: OK3562-C_Linux 5.10.198_User Documentation_R1
Подход к тестированию:
Используйте два GPIO: GPIO4B1, установленный в качестве выхода, и GPIO0B0, установленный в качестве входа с триггером по заднему фронту.
Физически короткие GPIO4B1 и GPIO0B0.
Используйте Timer4 для генерации прерывания по таймеру каждую секунду, а в обработчике прерывания управляйте GPIO4B1 для создания заднего фронта и задержки. Если появляется оператор печати в обработчике прерывания GPIO0B0, это указывает на успешное вытеснение прерывания.
Этапы тестирования:
(1) Напишите тестовую программу fltest_irq_preempt.c, чтобы разрешить прерывания TIMER4 и GPIO0B0, и настройте GPIO0B0 для запуска по заднему фронту. В обработчике прерываний таймера переключите GPIO4B1, чтобы вызвать прерывание GPIO0B0, и напечатайте сообщение в обработчике прерываний GPIO0B0, чтобы указать на прерывание;
(2) Измените маршрутизацию прерываний, чтобы привязать прерывания TIMER4 и GPIO0 к CPU3, и установите приоритет прерывания TIMER4 выше, чем GPIO0B0;
(3) Перекомпилируйте образ и запишите его на плату разработки;
(4) Включите AMP в меню uboot и перезагрузите плату разработки OK3562J-C . Последовательный порт отладки RTOS отобразит соответствующую информацию:
Нажмите клавишу табуляции, чтобы распечатать все текущие команды:
Тогда команда успешно регистрируется.
Выполните команду fl_irq_test, и вы увидите:
Прерывание GPIO0B0 вытесняет прерывание TIMER4.
Поменяйте их приоритеты, перекомпилируйте и прошейте заново, и вы увидите, что прерывание GPIO0B0 обрабатывается после завершения прерывания TIMER4, без вытеснения.
Первоначально опубликовано на www.forlinx.net.