Перейти к содержанию
    

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

Ядра процессора:

Ядра процессора RK3562J

Поддержка AMP:

Поддержка AMP RK3562J

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

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

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использовать вложенные прерывания - верный способ получить непонятные трудновоспроизводимые глюки. Если логика работы требует вложенности, подумайте: может, стоит разделить обработку событий на быструю (в прерывании) и медленную (в фоновом процессе, куда управление будет передано после обработки всех прерываний).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...