Linux driver--知识点总结

1.内核的大部分配置文件都在arch/arm/configs/xxx_defconfig:默认配置文件的位置。

2.配置内核的方式make ARCH=arm XXX_defconfig

3.编译内核的方式:make  ARCH=arm zImage,其中如果ARCH这个环境变量已经导出过,可以不用再次设置。

4.编译模块的方式:make ARCH=arm modules

5.编译好的内核,会在根目录下面产生一个内核映像文件vmlinux以及内核符号表System.map
qishan@qishan-ubuntu:~/code/qscode/qslinux/linux-4.18.7$ ls 
arch   built-in.a  COPYING  crypto         drivers   fs       init  Kbuild   kernel  LICENSES     Makefile  Module.symvers  README   scripts   sound       tags   usr   vmlinux
block  certs       CREDITS  Documentation  firmware  include  ipc   Kconfig  lib     MAINTAINERS  mm        net             samples  security  System.map  tools  virt  vmlinux.o

6.在arch/arm/boot/目录下面,会产生zImage文件。

vmlinux和zImage的区别:vmlinux是一个未被压缩的,zImage是压缩后的。

7.内核的配置过程中,make menuconfig首先会分析体系结构相关的/arch/xxx/Kconfig文件,其中xxx其实就是ARCH=XXX所指定的,/arch/xxx/Kconfig文件中包含了和体系结构相关的配置项及配置菜单,还通过source语句引入了一系列的Kconfig文件。
 705 #
 706 # This is sorted alphabetically by mach-* pathname.  However, plat-*
 707 # Kconfigs may be included either alphabetically (according to the
 708 # plat- suffix) or along side the corresponding mach-* source.
 709 #
 710 source "arch/arm/mach-actions/Kconfig"
 711 
 712 source "arch/arm/mach-alpine/Kconfig"

这些Kconfig有可能再次通过source引入其他的Kconfig文件。

8.如何在Linux内核中增加新的程序:

a.编写的Linux的代码,并放于Linux内核的相应目录。

b.将新的配置Kconfig文件增加进新的代码对应的项目的编译配置选项。

c.在目录的Makefile文件中,增加对新的源代码的编译条目中。

案例如下:

a.增加在driver/char/ttyprink.c

b.driver/char目录下面的Kconfig结尾文件中,增加

557 config TTY_PRINTK
558         tristate "TTY PRINK TO OUTPUT USER MESSAGES VIA PRINK"
559         depends on EXPERT && TTY
560         default n
561         ---help---
562         if you want to use TTY prink,you should choice the EXPERT and TTY

c.在driver/char/的Makefile文件中,行尾部增加支持

   62 obj-$(CONFIG_TTY_PRINK)         += ttyprintk.o
通常驱动工程师的工作:

a.在内核的drivers的目录下的相应子目录下面,增加对新设备的源代码的支持,或者在arch/arm/mach-xxx下面,增加板级别的支持,同时修改Makefile和Kconfig文件。

猜你喜欢

转载自blog.csdn.net/sinat_35346588/article/details/82810443
今日推荐