Próbuję zrobić "Blinky" dla STM32F1xx w Rust. Wiem, że są na to libs, ale chcę zrobić własną "lib" dla celów edukacyjnych.Jak mogę napisać na adres mapowany w pamięci w Rust?
mogę uzyskać dostęp do „rejestrów” STM32 poprzez ich adresy, jak to w C:
*(uint32_t*)(0x40021000 + 0x018) |= 0x10;
*(uint32_t*)(0x40011000 + 0x004) |= 0x33;
*(uint32_t*)(0x40011000 + 0x004) &= ~0xCC;
*(uint32_t*)(0x40011000 + 0x10) |= 0x300;
while(1) {}
To pisze kilka bitów w rejestrze RCC_APB2ENR
umożliwić taktowanie portu C, konfiguruje szpilki i umożliwia diody na moim odkryciu.
Muszę to napisać ponownie w Rust, żeby stworzyć konstelacje, fns i zacząć pisać ładny Rusty code. Czy jest możliwe w Rust bez FFI wywoływania kodu C? Czy mogę to osiągnąć za pomocą makra asm!
?
Czy zachowanie się kompilatora dla wskaźników nieulotnych jest takie samo dla C i rdzy? – fevgenym
Tak, kompilator Rust może wykonywać te same optymalizacje. Obsługa LLVM, która to robi, jest używana w obu językach. – starblue