linux .pc文件make,Linux中Makefile和Kconfig理解

为了查看UART的底层驱动,但是在linux-2.6.38\drivers\tty\serials文件夹下看到很多有关串口的驱动程序,不知系统到底加载的哪个。为了弄明白这个问题,就对分析相应文件夹下的Makefile文件和kconfig文件。现记录如下,可能并不完整,在以后的学习中再补充。

在Ubuntu的终端上make

menuconfig,出现配置窗口,对内核进行裁剪,找到串口的加载选项目录,此处是把serial加载到内核。配置选项如下:

Device Drivers --->

Character

devices --->

Serial

drivers --->

Samsung S3C6400/S3C6410/S5P6440/S5P6450/S5PC100 Serial port

support

配置完成会在linux-2.6.38主目录下生成.config文件,保存配置的选项。打开.config文件,可以看到串口的选项为“YES”:

CONFIG_SERIAL_S3C6400=y

在linux-2.6.38\drivers目录下,包含了linux所有的驱动程序,他们分类存放在各自的文件夹下,也包括drivers文件夹下的Makefile和kconfig文件:

char/

mtd/

tty/

Makefile

Kconfig

在Kconfig文件夹下有如下内容,脚本中的

source 意味着引用新的 Kconfig 文件。但是没有发现source

"drivers/tty/Kconfig",这是因为serial

driver在

drivers/char/Kconfig中被声明,目录Serial

drivers被安排到Character

devices目录下。

menu

"Device Drivers"

source

"drivers/base/Kconfig"

source

"drivers/char/Kconfig"

source

"drivers/mtd/Kconfig"

endmenu

menu与endmenu是一组指令,menu的作用,可以理解成一个目录,menu可以把其中一部分配置项包含到一个menu中,这样有利于配置的分类显示。

在linux-2.6.38\drivers \char目录下Kconfig文件:

menu

"Character devices"

source

"drivers/tty/serial/Kconfig"

endmenu

在linux-2.6.38\drivers\tty\目录下

Makefile文件:

obj-y

+= serial/

//表示包括在该serial文件下生成的目标文件

obj-y

+= tty_io.o //表示此目录下有目标文件tty_io.o,其从tty_io.c或tty_io.S编译得到

在linux-2.6.38\drivers\tty\serial文件夹下串口驱动程序文件:s3c6410.c

Makefile文件:

obj-$(CONFIG_SERIAL_S3C6400) +=

s3c6400.o

Kconfig文件:

config SERIAL_S3C6400

tristate "Samsung S3C6400/S3C6410/S5P6440/S5P6450/S5PC100 Serial

port support"

depends on SERIAL_SAMSUNG && (CPU_S3C6400 || CPU_S3C6410 ||

CPU_S5P6440 || CPU_S5P6450 || CPU_S5PC100)

select SERIAL_SAMSUNG_UARTS_4

default y

help

Serial port support for the Samsung S3C6400,

S3C6410, S5P6440, S5P6450

and S5PC100 SoCs

config

SERIAL_SAMSUNG_UARTS_4

bool

depends on ARM && PLAT_SAMSUNG

default y if CPU_S3C2443

help

Internal node for the common case of 4 Samsung

compatible UARTs

config SERIAL_SAMSUNG

tristate "Samsung SoC serial support"

depends on ARM && PLAT_SAMSUNG

select SERIAL_CORE

help

Support for the on-chip UARTs on the Samsung

S3C24XX series CPUs,

providing /dev/ttySAC0, 1 and 2 (note, some

machines may not

provide all of these ports, depending on how the

serial port

pins are configured.

tristate的意思是“三态”,可以是Y内建、N移除、M模块。

depends

on是依赖关系,f1中有depend

on f2,只有f2成立时,f1才成立。

select是反依赖关系,f1中有depend

on f2,f1成立了,f2也同时成立。

在linux-2.6.38\arch\arm\mach-s3c64xx目录中:

在s3c6410.c文件:

s3c6410_init()

s3c6410_core_init()

s3c6410_init_irq()

s3c6410_init_clocks()

在Makefile文件:

#

Core support for S3C6410 system

obj-$(CONFIG_CPU_S3C6410) += s3c6410.o

在Kconfig文件:

config CPU_S3C6410

bool

help

Enable S3C6410 CPU support

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值