Найти тему
Forlinx Embedded

RK3562J Техническая информация | Первый опыт вложения прерываний «голого железа» в настройке двойной системы AMP

Многоядерные гетерогенные системы — это вычислительные системы, которые позволяют различным ядрам одного и того же чипа 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:

-2

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 отобразит соответствующую информацию:

-3

Нажмите клавишу табуляции, чтобы распечатать все текущие команды:

-4

Тогда команда успешно регистрируется.

Выполните команду fl_irq_test, и вы увидите:

-5

Прерывание GPIO0B0 вытесняет прерывание TIMER4.

Поменяйте их приоритеты, перекомпилируйте и прошейте заново, и вы увидите, что прерывание GPIO0B0 обрабатывается после завершения прерывания TIMER4, без вытеснения.

-6

Первоначально опубликовано на www.forlinx.net.

RK3562J Technical Share | First Experience with Bare-Metal Interrupt Nesting in AMP Dual-System Setup - Blog - Forlinx Embedded Technology Co., Ltd.

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц