基于S3C2440嵌入式Linux系统下的一个DS18B20驱动和命(3)

/************************* Makefile文件开始 **************************/

obj-m := s3c2440_ds18b20.o

KERNELDIR ?= ../../kernel/linux-2.6.29
PWD := $(shell pwd)
CC := arm-linux-gcc
CLEAN := rm -rf


all : s3c2440_ds18b20.c test_ds18b20
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

test_ds18b20 : test_ds18b20.c
    $(CC) test_ds18b20.c -o test_ds18b20

clobber :
    $(CLEAN) test_ds18b20 s3c2440_ds18b20.ko
clean :
    $(CLEAN) *.mod.* *.o *~ modules.order Module.symvers

/************************* Makefile文件结束 **************************/

这个驱动是基于Linux的2.6.29内核树编译的,内核树的路径是当前目录的../../kernel/linux-2.6.29,若以来其他的Linux的内核树,编译时可能会出现找不到某些文件的情况,如hardware.h等,只需要在内核树中作一些软链接就可以解决,还有声明一点的就是:Makefile中的命令操作前的并非空格,而是TAB跳格。

make编译,编译完毕后产生许多文件,我们只关心test_ds18b20和s3c2440_ds18b20.ko这两个。

把以上两个文件下载到开发板中,创建一个设备节点:

mknod /dev/DS18B20 c 232 0

把s3c2440_ds18b20这个模块加载到内核:

insmod s3c2440_ds18b20.ko

加载成功后我们可以通过模块列表查看:

基于S3C2440嵌入式Linux系统下的一个DS18B20驱动和命

之后把test_ds18b20测试文件改为可执行状态:

chmod 0111 test_ds18b20

执行后可以观察到以下的结果:

Linux

若有问题,可以同过留言的方式交流。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwsswp.html