Любые эмуляторы ARM7 с открытым исходным кодом, подходящие для связи с C? - PullRequest
1 голос
/ 24 августа 2010

У меня эмулятор Atari 2600 с открытым исходным кодом (Z26), и я хотел бы добавить поддержку картриджей, содержащих встроенный процессор ARM (семейство NXP 21xx).Идея состояла бы в том, чтобы моделировать 6507, пока он не попытается прочитать или записать байт памяти (что он будет делать каждые 841 нс).Если 6507 выполняет запись, поместите адрес и данные на некоторые из портов ввода-вывода ARM и дайте коду ARM выполнить 20 циклов, убедитесь, что ARM перемещает свою шину данных, и дайте ARM работать еще 38 циклов.Если 6507 выполняет чтение, поместите адрес на порты ввода-вывода ARM, дайте ARM выполнить 38 циклов, извлеките данные из порта ввода-вывода ARM (надеюсь, программное обеспечение ARM поместит их туда), и дайтеARM выполняет еще 20 циклов.

ARM7 кажется довольно простым в реализации;Мне не нужно моделировать множество аппаратных функций.Есть мысли?

Редактировать Я имею в виду подпрограмму, которая будет принимать в качестве параметра структуру, содержащую состояние машины и указатели на подпрограмму доступа к памяти.При вызове подпрограмма будет эмулировать механизм команд ARM, генерируя соответствующие операции чтения, записи и выборки кода.Затем я мог бы написать процедуру доступа к памяти, чтобы рассматривать соответствующие области как флэш-память (с приблизительно аппроксимированными состояниями ожидания), ОЗУ, порты ввода-вывода и регистры таймера.Некоторые другие области будут помечены как неосторожные, а доступ к любым другим областям будет отмечать ошибку и останавливать эмулятор.

Возможно, QEMU использует такую ​​вещь внутренне.Поскольку эмуляция ARM будет интегрирована в уже существующий механизм эмуляции (который я не писал и не до конца понимаю - единственными частями исправленного мною Z26 была логика чтения / записи памяти), мне понадобитсячто-то с довольно маленькой занимаемой площадью.

Есть идеи, как работает QEMU внутри?Любая идея, что потребуется для лицензии GPL, если я просто использую 2% кода в QEMU - придется ли мне связывать код целиком, или только часть, которую я использую, или что?

Ответы [ 2 ]

2 голосов
/ 24 августа 2010

Попробуйте QEMU .

1 голос
/ 25 августа 2010

С некоторой работой вы можете заставить мой эмулятор делать то, что вы хотите.Он был написан для ARM920, а набор инструкций Thumb еще не завершен.Также нет интерфейса MMU / кеша.Кроме того, это медленно, потому что это переводчик.С другой стороны, все написано на C99.

http://code.google.com/p/gp2xemu/

Я давно не работал над этим (стволу svn 2 года), но если вы собираетесь использовать код, Iбудем рады помочь вам с отсутствующими функциями .Он лицензирован под MIT, так же, как и широкая лицензия BSD.

...