1.linux內核文檔連接點擊打開連接linux
2.配置文件ide
在out\target\product\project\obj\KERNEL_OBJ\.config中能夠看到函數
但這個文件是自動生成的,應該主要是由\kernel\arch\arm\configs下的文件彙總的,可是沒有找到定義CONFIG_OF=y的源頭。ui
對於msm8909平臺user版本,.config文件是由msm8909-1gb_defconfig、kernel下Kconfig文件內容彙總在一塊兒。每一個Kconfig分別描述了所屬目錄源文件相關的內核配置菜單spa
但若是msm8909-1gb_defconfig註釋了#CONFIG_QPNP_VM_BMS=y,但W:\kernel\drivers\power\Kconfig下對應的下有default=y,最後是以Kconfig的爲準的操作系統
config QPNP_VM_BMS
tristate "QPNP Voltage-Mode Battery Monitoring System driver"
depends on SPMI
depends on MSM_QPNP_INT
default y
help
Say Y here to enable support for QPNP chip vm-bms device.
The voltage-mode (vm) BMS driver uses periodic VBATT
readings from the battery to calculate the State of
Charge..net
若是Kconfig沒有default,msm8909-1gb_defconfig的爲#CONFIG_QPNP_VM_BMS=y或是CONFIG_QPNP_VM_BMS=,也就是沒有選擇或是沒有設置,就在.config文件中插入一行註釋# CONFIG_QPNP_VM_BMS is not setcode
3.主要的設備樹文件orm
\kernel\Documentation\devicetree\bindings\fb\mdss-dsi-panel.txt描述顯示屏panel的配置信息
kernel\Documentation\devicetree\bindings\arm\gic.txt-----ARM Generic Interrupt Controller,ARM通常中斷控制器設備樹信息描述
kernel\Documentation\devicetree\bindings\interrupt-controller\interrupts.txt----Specifying interrupt information for devicesblog
\kernel\Documentation\input\input.txt和input-programming.txt介紹輸入子系統
\kernel\Documentation\devicetree\bindings\pinctrl\msm-pinctrl.txt------------MSM TLMM pinmux controller
kernel\Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt
4..CONFIG_OF
在一些驅動中常常看到#ifdef CONFIG_OF,這裏的OF是Open Firmware。
Open Firmware. This was invented long time ago when Apple was producing laptops based on PowerPC CPUs. Openfirmware provides a good description of the devices connected to the platform. In Linux kernel the part that works with device data is called Device Tree (DT). More details in the Usage model.
詳細參考kernel\Documentation\devicetree\usage-model.txt
5.mk文件(makefile)
6.fdt:flatteneddevice tree
7.modules.order:這個文件記錄了Makefile中模塊出現的順序。modprobe經過它來肯定解決多個模塊匹配的別名(指定模塊的絕對路徑)。
如:kernel//home/cjz/Desktop/test/driver/input/vms.ko
modules.builtin:這個文件列出了全部編譯到內核的模塊,經過這個當modprobe加載一些內核模塊時就不會失敗。
8.註冊驅動的時候,經過對應的總線匹配到對應的設備,設備在設備樹中有對應的描述,在bootloader階段會傳遞設備樹內容給內核,匹配到對應的設備後調用驅動的probe函數
設備樹中每一個表示一個設備的節點都須要一個 compatible 屬性。compatible 屬性是操做系統用來決定使用哪一個設備驅動來綁定到一個設備上的關鍵因素
9.典型的外設、核心和主機驅動圖
10.設備樹英文文檔連接點擊打開連接
11.驅動加載順序
優先級定義在include/linux/init.h,其中對於同一級別的 __initcall的次序 主要由MakeFile中.o文件的連接次序決定,具體看Kernel下的主Makefile ---- Build vmlinux以及kernel/driver 下的obj-y
12.linux爲何要掛載到/mnt或其它目錄,直接訪問/dev不行嗎?
/dev是不加文件系統的,只能經過read/write命令對他進行讀寫。可是你看不到的。想要看到他裏面有那個文件或者文件夾,只有加載了文件系統,才能夠。因此你用mount命令的時候要加-t指定文件系統,例如:mount -t vfat /dev/hda1 /mnt,掛載/dev/hda1設備到/mnt,文件系統是vfat。