Попытка найти простой ISS (симулятор набора команд) или любой ядро для образовательных целей встраиваемых систем.

Вопрос или проблема

Я хочу начать серию курсов по виртуализации SoC с использованием SystemC/TLM, я пытаюсь найти какой-нибудь простой ISS, который я могу интегрировать.

QEMU является хорошим примером, но это слишком много для того, что мне нужно, интеграция его с SystemC не так проста (существует библиотека, созданная Greensocs, но она не бесплатна для использования …). Идеально было бы иметь ISS, написанный на C++, который можно легко интегрировать/соединить с платформой SystemC (шина данных для доступа к регистрами периферийных устройств и памяти, также поддержка минимальных механизмов прерывания).

Используя какой-либо компилятор, можно будет компилировать C-код, а затем программировать виртуальную платформу.

Буду благодарен за любые предложения. Спасибо.

После некоторых исследований я буду использовать: https://github.com/ultraembedded/armv6m-sim

Что кажется соответствующим моим потребностям, и на GitHub есть другие проекты виртуализированных платформ, которые я могу повторно использовать.

Ответ или решение

Вопрос о выборе простого симулятора набора команд (ISS) для образовательных целей в области встроенных систем является важным. С учетом вашего интереса к виртуализации систем на кристалле (SoC) с использованием SystemC/TLM и ваших требований к интеграции, я хотел бы предложить несколько важных аспектов и рекомендации.

1. Выбор подходящего ISS:
Вы уже нашли проект armv6m-sim на GitHub, который соответствует вашим требованиям. Этот ISS, как вы отметили, позволяет интегрироваться с SystemC и предоставляет механизмы доступа к памяти и периферийным устройствам, что является основой для создания виртуальных платформ. Программа также позволяет использовать C-код для программирования виртуальной платформы, что значительно упрощает процесс разработки и тестирования.

2. Легкость интеграции:
Ключевыми аспектами, которые выделяют armv6m-sim, являются его простота и модульная структура, позволяющая легко интегрировать его в существующие проекты на SystemC. Благодаря тому, что armv6m-sim написан на C++, вы сможете адаптировать код под свои нужды и интегрировать его с другими компонентами вашей платформы.

3. Обмен данными между ISS и системой:
Обратите внимание на архитектуру вашего проекта. Для эффективной работы интеграции с SystemC потребуется четко определённая шина данных для доступа к регистрам периферийных устройств и памяти. Armv6m-sim предоставляет базовые возможности для создания таких интерфейсов, что позволяет вам сосредоточиться на реализации функциональности, а не вести борьбу с низкоуровневыми деталями.

4. Поддержка прерываний:
Поддержка минимальных механизмов прерываний также важна для создания эффективных встроенных систем. Исследуйте возможность внедрения этой функции в выбранный вами ISS. Возможно, вам потребуется расширить функциональность armv6m-sim, чтобы обеспечить более сложные механизмы обработки прерываний, что является нормальной практикой при разработке встроенных систем.

5. Сообщество и документация:
Не забудьте взаимодействовать с сообществом разработчиков, использующих armv6m-sim. Это может быть полезным для обмена опытом и решения проблем. Ознакомьтесь с документацией проекта, так как это даст вам хорошую основу для начала работы.

6. Альтернативные ISS:
На случай, если armv6m-sim не полностью удовлетворит ваши нужды, вы можете рассмотреть другие варианты, такие как:

  • MUSCA-A (Microcontroller Simulation with SystemC Architecture) – хороший выбор для изучения.
  • SimpleScalar – простой и хорошо документированный ISS, но ориентирован больше на архитектуры общего назначения.

В заключение, armv6m-sim является многообещающим выбором для ваших образовательных целей. Это проект, который подходит для ваших нужд по интеграции с SystemC и разработке виртуализированных систем. Успехов в ваших начинаниях и исследованиях в области виртуализации SoC!

Оцените материал
Добавить комментарий

Капча загружается...