编写 UART 驱动程序

QEMU “虚拟机”具有 PL011 UART,现在为其编写驱动程序。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Speaker Notes

  • 请注意,使用 Uart::new 方法不安全,而其他方法则安全。原因在于,只要 Uart::new 的调用方保证满足其安全要求(即所指定的 UART 只有一个驱动程序实例,且没有其他内容与其地址空间存在重叠),那么后续调用 write_byte 始终是安全的,因为我们假定需要满足的前提条件。
  • 我们也可以采用相反的方式(即确保 new 安全,但 write_byte 不安全),不过这样会很不方便,因为每当调用 write_byte 时都需要推断是否安全。
  • 这是安全地封装不安全代码时常见的策略:即在少数调用代码的地方进行安全验证,而不是在很多地方进行。