我的理解本質上還是復用。尤其是嵌入式領域,設備多種多樣,但是很多設備接口都是標準的,或者大同小異。以前驅動開發可能每個設備商都去抄別家的搞進內核,這樣造成了大量的垃圾代碼。后面linux內核就把這些做成公共庫抽象出來,后面設備只需要傳入“我是什么設備”,那么linux就可以從內核中公共庫找到需要的驅動,避免了很多質量不一的冗余代碼,而且也方便了管理。
在設備樹中,涉及到的文件主要是DTS,DTSI,還有DTB。
基本流程是編譯前編寫DTS(有一個DTSi,可以視為廠商的DTS頭文件,可以提取一些共性數據),之后會通過DTC編譯成DTB,通過Bootloader傳給kernel。
還是整理一下疑問吧。(TODO)
1 DTS寫的驅動只是一個配置,那么真實的驅動在哪里?
2 從上面的描述看Bootloader和Kernel是共用一個DTS,是怎么實現的?
3 DTS編寫的規則。
4 增加一個常用設備,是什么流程?
5 增加一個全新設備,又是什么流程?
這篇真的寫的比較全:
Linux DTS (Device Tree Source)設備樹源碼_設備樹編譯源文件-CSDN博客