1. 程式人生 > >5.2.13.驅動中如何操控硬件

5.2.13.驅動中如何操控硬件

如果 虛擬 內核啟動 內核移植 函數指針 占用 編譯 移植 編碼

  1. 不變:

硬件原理不變
硬件操作接口(寄存器)不變
硬件操作代碼不變

寄存器地址不變:裸機直接用物理地址,現在用虛擬地址。
編程習慣不變:裸機用函數指針操作寄存器,現在用封裝好的IO讀寫函數來操作寄存器。

  1. 內核的虛擬地址映射方法(MMU)

兩種方法:
靜態映射:
在內核移植時就以代碼方式硬編碼,如果要改變,就要更改內核源代碼然後重新編譯內核。
在內核啟動時建立靜態映射表,關機時銷毀。
類似全局變量
好處:執行效率高
壞處:始終占用虛擬地址空間
動態映射:
驅動程序根據需要隨時動態的建立映射,使用,銷毀映射。
類似malloc
好處:按需使用
壞處:每次都需要重新映射

5.2.13.驅動中如何操控硬件