MMIO 揮發性記憶體存取

  • 使用 pointer::read_volatilepointer::write_volatile
  • 請勿保留參照。
  • addr_of! 可用來取得結構體的欄位,而不必建立中繼參照。
  • 揮發性存取:讀取或寫入作業可能會有副作用,因此請避免編譯器或硬體遭到重新排序、複製或省略。
    • 通常,如果您在寫入後讀取 (例如透過可變動參照),編譯器可能會假設讀取的值與剛寫入的值相同,而不實際讀取記憶體。
  • 有些用於硬體揮發性存取的現有 Crate 確實會保留參照,但這樣不安全。每當有參照存在時,編譯器可能會選擇解除參照。
  • 使用 addr_of! 巨集,從結構體的指標取得結構體欄位指標。