linux开发摘要

【自取】最近整理的,有需要可以领取学习:

1.linux内核文档链接点击打开链接

linux开发摘要

linux开发摘要
2.配置文件
linux开发摘要

linux开发摘要
在out\target\product\project\obj\KERNEL_OBJ.config中可以看到
linux开发摘要

linux开发摘要
linux开发摘要
linux开发摘要

linux开发摘要
1. # CONFIG_MTD_LPDDR is not set
linux开发摘要
2. # CONFIG_MTD_UBI is not set
linux开发摘要
3. CONFIG_DTC=y
linux开发摘要
4. CONFIG_OF=y
linux开发摘要
5. #
linux开发摘要
6. # Device Tree and Open Firmware support
linux开发摘要
7. #
linux开发摘要
8. # CONFIG_PROC_DEVICETREE is not set
linux开发摘要
9. # CONFIG_OF_SELFTEST is not set
linux开发摘要
10. CONFIG_OF_FLATTREE=y
linux开发摘要
11. CONFIG_OF_EARLY_FLATTREE=y
linux开发摘要
12. CONFIG_OF_ADDRESS=y
linux开发摘要
13. CONFIG_OF_IRQ=y
linux开发摘要
14. CONFIG_OF_DEVICE=y
linux开发摘要
15. CONFIG_OF_I2C=y
linux开发摘要
16. CONFIG_OF_NET=y
linux开发摘要
17. CONFIG_OF_MDIO=y
linux开发摘要
18. CONFIG_OF_SPMI=y
linux开发摘要
19. CONFIG_OF_MTD=y
linux开发摘要
20. CONFIG_OF_SLIMBUS=y
linux开发摘要
21. CONFIG_OF_BATTERYDATA=y
linux开发摘要
22. CONFIG_OF_RESERVED_MEM=y
linux开发摘要
23. …
linux开发摘要

linux开发摘要
但这个文件是自动生成的,应该主要是由\kernel\arch\arm\configs下的文件汇总的,但是没有找到定义CONFIG_OF=y的源头。
linux开发摘要

linux开发摘要
对于msm8909平台user版本,.config文件是由msm8909-1gb_defconfig、kernel下Kconfig文件内容汇总在一起。每个Kconfig分别描述了所属目录源文件相关的内核配置菜单
linux开发摘要

linux开发摘要
但如果msm8909-1gb_defconfig注释了#CONFIG_QPNP_VM_BMS=y,但W:\kernel\drivers\power\Kconfig下对应的下有default=y,最后是以Kconfig的为准的
linux开发摘要

linux开发摘要
config QPNP_VM_BMS
linux开发摘要
tristate “QPNP Voltage-Mode Battery Monitoring System driver”
linux开发摘要
depends on SPMI
linux开发摘要
depends on MSM_QPNP_INT
linux开发摘要
default y
linux开发摘要
help
linux开发摘要
Say Y here to enable support for QPNP chip vm-bms device.
linux开发摘要

linux开发摘要
The voltage-mode (vm) BMS driver uses periodic VBATT
linux开发摘要
readings from the battery to calculate the State of
linux开发摘要
Charge.
linux开发摘要

linux开发摘要
如果Kconfig没有default,msm8909-1gb_defconfig的为#CONFIG_QPNP_VM_BMS=y或是CONFIG_QPNP_VM_BMS=,也就是没有选择或是没有设置,就在.config文件中插入一行注释# CONFIG_QPNP_VM_BMS is not set
linux开发摘要

linux开发摘要
3.主要的设备树文件
linux开发摘要

linux开发摘要
\kernel\Documentation\devicetree\bindings\fb\mdss-dsi-panel.txt描述显示屏panel的配置信息
linux开发摘要
kernel\Documentation\devicetree\bindings\arm\gic.txt—–ARM Generic Interrupt Controller,ARM一般中断控制器设备树信息描述
linux开发摘要
kernel\Documentation\devicetree\bindings\interrupt-controller\interrupts.txt—-Specifying interrupt information for devices
linux开发摘要

linux开发摘要
\kernel\Documentation\input\input.txt和input-programming.txt介绍输入子系统
linux开发摘要

linux开发摘要
\kernel\Documentation\devicetree\bindings\pinctrl\msm-pinctrl.txt————MSM TLMM pinmux controller
linux开发摘要

linux开发摘要
kernel\Documentation\devicetree\bindings\pinctrl\pinctrl-bindings.txt
linux开发摘要

linux开发摘要
4..CONFIG_OF
linux开发摘要

linux开发摘要
在一些驱动中经常看到#ifdef CONFIG_OF,这里的OF是Open Firmware。
linux开发摘要

linux开发摘要
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.
linux开发摘要

linux开发摘要
详细参考kernel\Documentation\devicetree\usage-model.txt
linux开发摘要

linux开发摘要
5.mk文件(makefile)
linux开发摘要

linux开发摘要
+= (在现有的文件上,追加)
linux开发摘要
:= (之前的值清空,重新赋值)
linux开发摘要

linux开发摘要
6.fdt:flatteneddevice tree
linux开发摘要

linux开发摘要
7.modules.order:这个文件记录了Makefile中模块出现的顺序。modprobe通过它来确定解决多个模块匹配的别名(指定模块的绝对路径)。
linux开发摘要
如:kernel//home/cjz/Desktop/test/driver/input/vms.ko
linux开发摘要
modules.builtin:这个文件列出了所有编译到内核的模块,通过这个当modprobe加载一些内核模块时就不会失败。
linux开发摘要

linux开发摘要
8.注册驱动的时候,通过对应的总线匹配到对应的设备,设备在设备树中有对应的描述,在bootloader阶段会传递设备树内容给内核,匹配到对应的设备后调用驱动的probe函数
linux开发摘要

linux开发摘要
设备树中每个表示一个设备的节点都需要一个 compatible 属性。compatible 属性是操作系统用来决定使用哪个设备驱动来绑定到一个设备上的关键因素
linux开发摘要

linux开发摘要
9.典型的外设、核心和主机驱动图
linux开发摘要

linux开发摘要
10.设备树英文文档链接点击打开链接
linux开发摘要

linux开发摘要
11.驱动加载顺序
linux开发摘要

linux开发摘要
优先级定义在include/linux/init.h,其中对于同一级别的 __initcall的次序 主要由MakeFile中.o文件的链接次序决定,具体看Kernel下的主Makefile —- Build vmlinux以及kernel/driver 下的obj-y
linux开发摘要

linux开发摘要
12.linux为什么要挂载到/mnt或其它目录,直接访问/dev不行吗?
linux开发摘要

linux开发摘要
/dev是不加文件系统的,只能通过read/write命令对他进行读写。但是你看不到的。想要看到他里面有那个文件或者文件夹,只有加载了文件系统,才可以。所以你用mount命令的时候要加-t指定文件系统,例如:mount -t vfat /dev/hda1 /mnt,挂载/dev/hda1设备到/mnt,文件系统是vfat。

Original: https://www.cnblogs.com/LoongEmbedded/p/5298164.html
Author: LoongEmbedded
Title: linux开发摘要

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10294/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部