Pergunta

Eu gostaria de criar / iniciar um simulador para o seguinte conselho microcontrolador: http://www.sparkfun.com/commerce/product_info.php?products_id=707#

O firmware é escrito em conjunto por isso estou procurando algumas dicas sobre como se poderia ir sobre simulando as entradas que o hardware iria receber e, em seguida, o simulador iria responder às saídas do firmware. (O que também exigem a execução do firmware no ambiente simulado).

Os ponteiros sobre como começar?

Graças Chris

Foi útil?

Solução

Escrevendo um emulador inteiro vai ser um verdadeiro desafio. Eu tenho tentado escrever um emulador ARM antes, e deixe-me dizer-lhe, não é um projeto pequeno. Você vai quer ter de emular todo o núcleo da CPU, ou encontrar um que já está escrito.

Você também precisa descobrir como todo o IO funciona. Pode haver docs de sparkfun sobre essa placa, mas você vai precisar para escrever um gerenciador de memória se ele usa MMIO, etc.

O conceito de um emulador não é tão longe de um intérprete, realmente. Você precisa interpretar o código de firmware, e, basicamente, seguir junto com as instruções.

Eu recomendaria um bom depurador interativo, em vez de enfrentar um emulador. As chances de destruir o hardware é baixa, mas realmente, você preferiria comprar uma nova placa ou passar 9 meses escrevendo algo que não vai implementar todo o sistema?

É provável que o PIC 18F2520 já tem um núcleo emulador escrito por ele, mas você precisa mergulhar em todas as especificações de hardware para ver como todo o IO é mapeado ainda. Se você estiver sentindo-se a ele, seria um projeto bom, mas eu consideraria apenas usando um depurador remoto em vez.

Outras dicas

Você vai ter que escrever um simulador PIC e depois emular a funcionalidade IO das portas.

Para ser honesto, parece que sua concebido como um kit dev - Eu não me preocuparia com o seu código de destruir o dispositivo se você tomar cuidado. A menos que este um runner-up para um pacote empresarial, gostaria de questionar seriamente o ROI em escrever um sim.

Existe uma razão especial para fazer um emulador / simulador, contra apenas usando a coisa real?

O conselho é barato; Microchip tem agora o depurador RealICE que é um pouco mais sensível do que o antigo ICD2 "disco de hóquei".

MPLAB da Microchip tem um simulador embutido. Não vai simular todo o conselho para você, mas ele vai lidar com o 18F2520. Você pode tipo de vetores de teste de entrada uso e arquivos de saída de log, eu fiz isso antes com um diferente Microchip IC e foi factível, mas um bocado complicado. Sugiro que você tomar a abordagem de teste de unidade e modularizar a maneira de fazer as coisas; Descobrir o seu entradas de teste e resultados esperados para um pedaço gerenciável do sistema.

É provável que o PIC 18F2520 já tem um núcleo emulador escrito para ele,

Uma fonte aberta, simulador de plataforma cruzada para microchip / PICs está disponível sob o nome de " gpsim ".

É extremamente improvável que um bug em seu código poderia danificar o circuito físico. Se isso for possível, então ele é ou um erro no projeto da placa ou deve ser claramente documentado.

Se eu pode oferecer-lhe uma sugestão de muitos anos de experiência trabalhando com estes dispositivos: não programá-los em conjunto. Você vai ficar louco. Use C ou BASIC ou alguma linguagem de alto nível. Microchip produz um compilador C para a maioria de suas fichas (não sei sobre este), e outras empresas de produzi-los também.

Se você insistir em usar um emulador, eu tenho certeza Microchip faz um emulador para quase cada um de seus microcontroladores (pelo menos um de cada linha de produto, o que provavelmente seria bom o suficiente). Estes emuladores nem sempre são baratos, e eu tenho certeza de sua capacidade de aceitar a entrada externa complexa.

Se você ainda quer tentar escrever o seu próprio, eu acho que você vai achar que emulando o próprio PIC vai ser bastante simples - o formato de todos os opcodes é bem documentada, como é a arquitetura de memória, etc. Vai a ser emulando os outros dispositivos na placa e as interconexões entre eles que vai matá-lo. Você pode querer olhar para codificar as interconexões entre os componentes usando uma ferramenta VHDL que permitirá que você para criar simulações personalizadas para os diferentes componentes.

Não é este um problema simulador de hardware-in-the-loop? (Por exemplo http://www.embedded.com/15201692 )

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top