Gömülü CPU simülatörleri genellikle donanımı simüle etmek için programlanabilir. Xen dışındaki tüm sanallaştırma teknolojileri bunu yapıyor. Ancak bazı fiziksel adreslerde ya da x86'da, G / Ç veriyolunda bir adrese sahipmiş gibi yazan kod yazmanız gerekir ve ardından yazılımınız fizikselmiş gibi okuyor ve bu adreslere yazıyor olmalı. Kontrol ve durum kayıtlarına erişilen çip.
Bunu yapmak istiyorsanız, QEMU’yu değiştirmenizi öneririm. Ancak bu kolay olmazdı. Bu tür şeyler genellikle yalnızca bir mikrodenetleyiciye ve G / Ç için bazı diğer çekirdeklere sahip özel bir yonga tasarlarken yapılır.
ARM Holdings tarafından satılan geliştirme sistemi bunu sağlıyor ve QEMU’yu hacklemekten çok çalışmak daha kolay, ancak çok pahalı.
Donanım erişimine bağlı olmayan alt yordamların performansını ayarlamak için hata ayıklamak için kullanabileceğiniz, başka alt yordamları çağırabilen tek bir alt yordam çalıştıran birkaç Açık Kaynak ARM emülatörü vardır. Bunlardan birini ARM7TDMI için bir AES şifreleyicisini optimize etmek için büyük bir başarı için kullandım.
C veya C ++ dilinde basit bir birim test kablo demeti yazabilir, test edilen sınıfı veya alt rutini ona bağlayabilir ve daha sonra simülatörde çalıştırabilirsiniz.
Yıllardır benzer bir problemi, Linux ya da Mac OS X çekirdek kodunu nasıl test edeceğimi düşünüyorum. Bu mümkün olmalı, ama aslında hiç denemedim. Muhtemelen bir tanesi kodunuzu izole olarak test etmek yerine tam bir çekirdek oluşturmaktır, birim test çerçevesi doğrudan çekirdeğinize bağlıdır. Daha sonra, bir tür harici arabirimden birim testlerini ateşlerdiniz.
Belki bir kod kapsamı aracı kullanmak daha verimli olabilir, ardından harici yazılım üzerinden ürün yazılımınızı eksiksiz bir paket olarak test edin. Kapsam aracı henüz test edilmemiş kod yollarını bulacaktır, böylece daha fazla kapsam almak amacıyla ek harici testler ekleyebilirsiniz.