Como o microfilo falou: programar hardware é muito relativo …
Antes de mais nada: o que nós,progamadores, fazemos?Programamos e não importa o nível da linguagem , de uma forma ou de outra , estamos apenas manipulando hardware.
O padrão de hardware existente hoje para construção de “software genérico”, permite graças a Deus, que sejam implementadas interfaces , para processos cada vez mais complexos.
Como uma forma abstrata para mensurar a complexidade/interrelacionabilidade existe uma pseudo-classificação, famosa por figurar em qualquer livro do mestre Tenenbaum(logica digital,micro arquitetura, isa,SO,montador,alto nivel)*
Algum de nós se preocupa com processos toscos como: load de memória , write/read de memórias … ? Algum de nós se preocupa com o funcionamento interno do XML,Delphi,Java,dotNET e talvez esse sim compilador C++?Pessoalmente creio que não(try{texto}catch{hacker exception}finally{-.-}).
Essa “divisão” traz problemas terriveis.
Se programar hardware siginifica trabalhar em cima de mecanismos toscos, recomendo a você estudar especificações de componentes eletrônicos e ter noções de lógica digital.Hardware propriamente dito executa instruções muito simples, mesmo na arquitetura CISC, a maioria provida por circuitos integrados previamente fabricados e encapsulados.
Caso seja de seu real interesse recomendo também o estudo de algum micro kernel como o Midori, baseado em Linux.Isso seria programação embarcada(C++ , Java,dotNET e vai indo …).Está é uma área de extrema precisão , com enormes possibilidades, e onde interpretadores tem poucas chances**.
Caso seu desejo seja utilizar Java, tente J2me, oferece um leque MUITO amplo de possibilidades, assim como o dotNET e mais ainda do que ambos: C++.
Acima de tudo: atrele seu pensamento na busca de uma ferramenta para a resolução do seu problema , e não na busca de um problema para a sua ferramenta(isso é serviço das empresas).
*eu gostaria de compartilhar uma ideia:código gerenciado, desenvolvido sobre uma plataforma(como dotNET/Java/Python) pode ser um nível a mais , que tal?
**gostaria muito de me lembrar onde coloquei o texto que tratava desse assunto; relatava que: interpretadores não possuiam capacidade(processamento,performance) para tratar graus de importância em tempo satisfatório para sistemas como freios e afins(riscos em caso de demora na resposta)