Como fazer ARM9 emulador de dispositivo personalizado?
-
18-09-2019 - |
Pergunta
Eu estou trabalhando em processador ARM 9 com 266 Mhz, com o apoio fpu e 32 MB de RAM, eu rodar o Linux em it.I querer imitá-lo no PC (eu tenho Linux e Windows availabe on pc). Quero Perfil Minha contagens de ciclo, executar meus executáveis ??compilado-cross diretamente no emulador. Existe algum projeto opensource disponíveis para criar emulador facilmente, Quanta mudança / code / esforço que eu preciso escrever para fazer emulador personalizada com isso? Seria ótimo se você me fornecer tutoriais ot outra referência para obter pontapé inicial.
Obrigado e cumprimentos,
Sunny.
Solução
Você deve dar uma olhada QEMU . Eu não entendo no entanto, por que você precisa de um emulador completo?
Você pode já um monte de profiling sem emulador. Quais são os ganhos que você espera de ter um emulador de sistema?
Outras dicas
Você quer emular apenas o processador ou uma máquina inteira?
emular uma CPU é muito fácil, basta definir uma estrutura que contém todos os registros de CPU, criar uma matriz de RAM simular e depois é só emular como esta:
cpu_ticks = 0; // counter for cpu cycles
while (true) {
opcode = RAM[CPU.PC++]; // Fetch opcode and increment program counter
switch (opcode) {
case 0x12: // invented opcode for "MOV A,B"
CPU.A = CPU.B;
cpu_ticks += 4; // imagine you need 4 ticks for this operation
set_cpu_flags_mov();
break;
case 0x23: // invented opcode for "ADD A, #"
CPU.A += RAM[CPU. PC++]; // get operand from memory
cpu_ticks += 8;
set_cpu_flags_add();
break;
case 0x45: // invented opcode for "JP Z, #"
if (CPU.FLAGS.Z) CPU.PC=RAM[CPU.PC++]; // jump
else CPU.PC++; // continue
cpu_ticks += 12;
set_cpu_flags_jump();
break;
...
}
handle_interrupts();
}
Emulate uma máquina inteira é muito, muito mais difícil ... você precisa controladores Emulate LCD, registros de memória mapeada, controladores de bancos de memória, DMAs, dispositivos de entrada, som, I / stuff O ... também, provavelmente, você precisa de um despejo de o BIOS e sistema operacional ... eu não sei o processador ARM, mas se ele tem oleodutos, caches e tais coisas, as coisas ficam mais complicadas para o sincronismo.
Se você tem todas as peças de hardware totalmente documentadas, não há problema, mas se você precisa fazer engenharia reversa ou adivinhar como funciona a máquina emulada ... você terá um tempo difícil.
Iniciar aqui: http://infocenter.arm.com/help/index.jsp e fazer o download do "manual de Referência Técnica" para o seu processador.
E para questões gerais de emulação: http: // www .google.es / search? q = como + gravação + um + emulador