Sto cercando di rendere "Blinky" per STM32F1xx in Rust. So che ci sono lib per questo, ma voglio fare la mia "lib" per scopi di apprendimento.Come scrivere in un indirizzo mappato in memoria in Rust?
posso accedere ai "registri" del STM32 dai loro indirizzi come questo in C:
*(uint32_t*)(0x40021000 + 0x018) |= 0x10;
*(uint32_t*)(0x40011000 + 0x004) |= 0x33;
*(uint32_t*)(0x40011000 + 0x004) &= ~0xCC;
*(uint32_t*)(0x40011000 + 0x10) |= 0x300;
while(1) {}
Questo scrive alcuni bit al registro RCC_APB2ENR
per consentire clock della porta C, configura perni e consente LED sulla mia scoperta.
Ho bisogno di riscriverlo in Rust, per creare consts, fns e iniziare a scrivere un bel codice Rusty. E 'possibile in Rust senza FFI chiamare il codice C? Posso ottenere questo risultato con la macro asm!
?
Il comportamento del compilatore per i puntatori non volatili è lo stesso per C e Rust? – fevgenym
Sì, il compilatore di Rust può fare le stesse ottimizzazioni. Il backend LLVM che fa questo è usato per entrambe le lingue. – starblue