Jason 4 22 августа Опубликовано 22 августа · Жалоба Многоядерные гетерогенные системы — это вычислительные системы, которые позволяют различным ядрам одного и того же чипа 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novikovfb 19 22 августа Опубликовано 22 августа · Жалоба Использовать вложенные прерывания - верный способ получить непонятные трудновоспроизводимые глюки. Если логика работы требует вложенности, подумайте: может, стоит разделить обработку событий на быструю (в прерывании) и медленную (в фоновом процессе, куда управление будет передано после обработки всех прерываний). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться