Вопрос или проблема
Я хочу начать серию курсов по виртуализации 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!