Acceso a la memoria volátil para MMIO

  • Se puede usar pointer::read_volatile y pointer::write_volatile.
  • Nunca retengas una referencia.
  • addr_of! permite obtener campos de estructuras sin crear una referencia intermedia.
  • Acceso volátil: las operaciones de lectura o escritura pueden tener efectos secundarios, por lo que se debe evitar que el compilador o el hardware las reordene, duplique u omita.
    • Normalmente, si escribes y luego lees (por ejemplo, a través de una referencia mutable), el compilador puede suponer que el valor leído es el mismo que el que se acaba de escribir, sin molestarse si quiera en leer realmente la memoria.
  • Algunos crates para el acceso volátil al hardware sí mantienen referencias, aunque no es seguro. Siempre que exista una referencia, el compilador puede desreferenciarla.
  • Utiliza la macro addr_of! para obtener punteros de campos de estructuras a partir de un puntero en la estructura.