¿Cómo crear una máquina QEMU ARM con periféricos personalizados y mapas de memoria?

Estoy escribiendo un código para la CPU Cortex-M3 y estoy realizando pruebas unitarias utilizandoqemu-arm binario. Por ahora todo funciona bien. Pero me pregunto si puedo probar todo el sistema usandoqemu-system-arm? Quiero decir, quiero escribir una "máquina" personalizada para qemu donde definiré el mapa de memoria deseado y eventualmente alguna imitación de software de los periféricos deseados, ¿hay algunos ejemplos de tal módulo? Encontré muy poca cantidad de información sobre esto. He leído un código fuente enhw directorio en el árbol fuente de qemu pero casi no está comentado, y todavía no estoy seguro si entiendo cómo agregar una nueva máquina al qemu y cómo agregar periféricos al espacio de direcciones.