如何把设备驱动文件添加到Linux内核编译选项配置的menuconfig中

如何把设备驱动文件添加到Linux内核编译选项配置的menuconfig中,第1张

1.首先保证已经有驱动源文件了:as352x_afe_charger.c

放在和其他你所要添加的模块放在一个目录下,此处是drivers\i2c\chips下。

2.在drivers\i2c\chips\makefile中,添加:

obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o

3.在drivers\i2c\chips\Kconfig

中,添加如下内容:

---------------------无敌分割线-------------------------

config AS352X_AFE_CHG

tristate "AS352X AFE Charger Driver"

depends on I2C_AS352X &&AS352X_AFE

help

If you say yes here you get support for AS352X AFE Charger.

This driver can also be built as a module. If so, the module

will be called AS352X AFE Charger.

---------------------无敌分割线-------------------------

解释如下:

(1)AS352X_AFE_CHG是自己定义的名字,当然要尽量保证有意义。

同时,你会注意到,在上面的makefile中添加的

obj-$(CONFIG_AS352X_AFE_CHG) += as352x_afe_charger.o

中的CONFIG_AS352X_AFE_CHG,是CONFIG_加上我们在kconfig下写的config变量。

这两个要匹配,才能实现你在menconfig定义的结果,传递到makefile中,

以便决定编译的时候是如何编译:不编译/编译进内核/编译成模块

(2)tristate 表示我此处添加的模块,可以

在make ARCH=arm menuconfig中看到的,选择之后:

* 编译到内核中

M 编译成模块,即生成XXX.ko

不选中,就不编译该文件

(3)depends on I2C_AS352X &&AS352X_AFE

是前面自己找到的,表示此编译选项只有当I2C_AS352X 和AS352X_AFE都选中,才会出现。

当然,如果此模块不依赖于其他模块,则不需要加上这个depends on了。

【附录】

1.如果设置成M,module模式,则要用

make ARCH=arm

编译出as352x_afe_charger.ko

make ARCH=arm uImage

只能编译内核,而不编译模块。

然后在/dev/ram0中建立映像需要的目录和文件。创建目录bin、dev、etc、lib、mnt和可执行脚本文件linuxrc,linuxrc的内容为:

#!/bin/bash

mount –o –ro /dev/hda1/ /mnt # 以只读方式将flash盘挂载在/mnt下

zcat /mnt/boot/ram30.img.gz >/dev/ram # 将根文件系统映像解压至ram

umount /dev/hda1# 卸载flash盘

bin下面为linuxrc中用到的命令;lib为这些命令需要的动态链接库;etc下为配置文件ld.so.conf,定义命令运行时寻找所需动态链接库的路径,运行命令ldconfig –r /mnt/ram产生文件ld.so.cach,在命令和动态链接库之间建立对应关系;dev下基本终端设备和linuxrc中用到的设备:console、ram、null、systty、tty1、tty2和hda1;mnt为hda1的挂载点。最后创建压缩的initrd ramdisk映像。

运行df 看看/dev/ram0的字节数,在我的计算机上1684KB;转换当前目录至/root并卸载/dev/ram0 umount /dev/ram0;拷贝/dev/ram0成映像文件 dd if=/dev/ram0 of=initrd.img bs=1k count=1684;产生压缩的映像文件initrd.img.gz,运行gzip -9v initrd.img。

3.3启动

系统的启动需要依靠flash盘,通过LILO把系统启动信息写入flash盘主引导区。将flash盘作为第一主盘hda,而将装有普通Linux的硬盘作为第一从盘hdb并从它启动。在flash硬盘上创建ext2文件系统,将它挂载至/mnt/flash目录。在flash盘上建立boot目录,将压缩的文件系统和initrd映像拷贝至boot目录下,同时将Linux内核、引导区记录boot.b、引导区映射map拷贝至其下。在普通Linux系统中建立LILO配置文件ramlilo.conf,配置文件如下:

boot=/dev/hda

map=/mnt/flash/boot/map

install=/mnt/flash/boot/boot.b

prompt

timeout=50

image=/mnt/flash/boot/vmlinuz

append= “ramdisk_size=30000”

label=embedded

root=/dev/ram

initrd=/mnt/flash/boot/initrd.img.gz

运行命令lilo –C ramlilo.conf ,将启动信息写入flash的主引导区MBR。重新启动计算机,登陆后运行mount,我们看到如下两项:

/dev/ram on / ext2 (rw)

none on /proc type proc (rw)

这显示只有ramdisk被挂载,制作成功。

使用cat命令通过管道可以把一个文件的内容复制到另一个文件的末尾,命令如下:

cat

要复制的文件

>>

复制到的文件

说明:

管理 *** 作符>为覆盖,>>为追加。

cat命令说明:

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于windows下的type命令。

注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按ctrl+s键,停止滚屏;按ctrl+q键可以恢复滚屏。按ctrl+c(中断)键可以终止该命令的执行,并且返回shell提示符状态。

语法

cat(选项)(参数)

选项

-n或-number:有1开始对所有输出的行数编号;

-b或--number-nonblank:和-n相似,只不过对于空白行不编号;

-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;

-a:显示不可打印字符,行尾显示“$”;

-e:等价于"-ve"选项;

-t:等价于"-vt"选项;

参数

文件列表:指定要连接的文件列表。

实例

设ml和m2是当前目录下的两个文件

cat

m1

(在屏幕上显示文件ml的内容)

cat

m1

m2

(同时显示文件ml和m2的内容)

cat

m1

m2

>

file

(将文件ml和m2合并后放入文件file中)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8920830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存