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