放在和其他你所要添加的模块放在一个目录下,此处是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中)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)