基于S3C2440嵌入式Linux系统下DS18B20驱动源码(二)

2014-11-24 02:04:20 · 作者: · 浏览: 9
R | S_IRUSR | S_IWUSR | S_IRGRP, DEV_NAME);


while(DS18b20_reset());


}


static void __exit s3c2440_18b20_exit(void)


{


devfs_remove(DEV_NAME);


unregister_chrdev(DEV_MAJOR, DEV_NAME);


}


module_init(s3c2440_18b20_init);


module_exit(s3c2440_18b20_exit);


#include "stdio.h"


#include "sys/types.h"


#include "sys/ioctl.h"


#include "stdlib.h"


#include "termios.h"


#include "sys/stat.h"


#include "fcntl.h"


#include "sys/time.h"


main()


{


int fd;


unsigned char buf[2];


float result;


if ((fd=open("/dev/DS18B20",O_RDWR | O_NDELAY | O_NOCTTY)) < 0)


{


printf("Open Device DS18B20 failed.\r\n");


exit(1);


}


else


{


printf("Open Device DS18B20 successed.\r\n");


while(1)


{


read(fd, buf, 1);


result = (float)buf[0];


result /= 16;


result += ((float)buf[1] * 16);


printf("%.1f `C\r\n", result);


sleep(1);


}


close(fd);


}


}


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