天嵌 ARM开发社区

 找回密码
 注册
查看: 3951|回复: 12

18b20驱动 编译错误 求解

[复制链接]
617463359 发表于 2013-3-20 15:15:24 | 显示全部楼层 |阅读模式
[root@localhost linux-2.6.30.4]# make SUBDIR=/drivers/char/modules
  CHK     include/linux/version.h
make[1]: “include/asm-arm/mach-types.h”是最新的。
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-arm
  CALL    scripts/checksyscalls.sh
<stdin>:1097:2: warning: #warning syscall fadvise64 not implemented
<stdin>:1265:2: warning: #warning syscall migrate_pages not implemented
<stdin>:1321:2: warning: #warning syscall pselect6 not implemented
<stdin>:1325:2: warning: #warning syscall ppoll not implemented
<stdin>:1365:2: warning: #warning syscall epoll_pwait not implemented
  CHK     include/linux/compile.h
  CC      drivers/char/ds18b20.o
drivers/char/ds18b20.c: In function 'ds18b20_exit':
drivers/char/ds18b20.c:192: error: implicit declaration of function 'class_device_destroy'
make[2]: *** [drivers/char/ds18b20.o] 错误 1
make[1]: *** [drivers/char] 错误 2
make: *** [drivers] 错误 2
天嵌_support1 发表于 2013-3-20 17:16:55 | 显示全部楼层
你用make M=drivers/char/ modules试试!
回复

使用道具 举报

 楼主| 617463359 发表于 2013-3-20 22:37:51 | 显示全部楼层
本帖最后由 617463359 于 2013-3-20 22:45 编辑
天嵌_support1 发表于 2013-3-20 17:16
你用make M=drivers/char/ modules试试!

[root@localhost linux-2.6.30.4]# make M=drivers/char/modules
  WARNING: Symbol version dump /opt/EmbedSky/linux-2.6.30.4/Module.symvers
           is missing; modules will have no dependencies and modversions.

scripts/Makefile.build:44: /opt/EmbedSky/linux-2.6.30.4/drivers/char/modules/Makefile: 没有那个文件或目录
make[1]: *** 没有规则可以创建目标“/opt/EmbedSky/linux-2.6.30.4/drivers/char/modules/Makefile”。 停止。
make: *** [_module_drivers/char/modules] 错误 2
我的/char/modules里面在配置之后一直就有Makefile了,只是现在要加入18b20的驱动;头文件我也查了没有差什么啊!按照移植step by step来做的。。难道会缺少什么?版主,求解!谢谢了!!!!!

回复

使用道具 举报

TQ-ZQL 发表于 2013-3-21 09:48:44 | 显示全部楼层
直接放内核里不要做成模块试下先,
drivers/char/ds18b20.c:192: error: implicit declaration of function 'class_device_destroy'
class_device_destroy
你找不找到这个函数。相关的头文件有没有(如果没有过记错好像是没有过这个函数的,内核)
回复

使用道具 举报

 楼主| 617463359 发表于 2013-3-21 10:23:42 | 显示全部楼层
TQ-ZQL 发表于 2013-3-21 09:48
直接放内核里不要做成模块试下先,
drivers/char/ds18b20.c:192: error: implicit declaration of functio ...

'class_device_destroy'这个吗?在我的2.6.30.4内核里面已经改成'device_destroy'了。。头文件不是#include <linux/device.h>这个吗??
回复

使用道具 举报

TQ-ZQL 发表于 2013-3-21 12:00:04 | 显示全部楼层
你现在不编译成模块,直接放入内核时他报什么错?
回复

使用道具 举报

 楼主| 617463359 发表于 2013-3-21 13:34:57 | 显示全部楼层
本帖最后由 617463359 于 2013-3-21 13:41 编辑
TQ-ZQL 发表于 2013-3-21 12:00
你现在不编译成模块,直接放入内核时他报什么错?

报错的一样。。会 是什么问题?!  
回复

使用道具 举报

zjhsucceed_329 发表于 2013-3-22 15:08:54 | 显示全部楼层
我用的2.6.36及以上版本都自带DS18B20驱动啊,只需要移植就行了。
回复

使用道具 举报

 楼主| 617463359 发表于 2013-3-22 16:43:32 | 显示全部楼层
zjhsucceed_329 发表于 2013-3-22 15:08
我用的2.6.36及以上版本都自带DS18B20驱动啊,只需要移植就行了。

截个图给我看看行不,,谢谢!我下了最新的都找不到在哪个文件里面呢。。貌似新核的文件位置有改动。
回复

使用道具 举报

zjhsucceed_329 发表于 2013-3-22 18:48:20 | 显示全部楼层
1、        在arch/arm/mach-s3c2440/mach-smdk2440.c文件中构建DS18B20设备
添加头文件
#include <linux/w1-gpio.h>
#include <plat/gpio-cfg.h>
构建DS18B20设备的平台数据结构:
/* DS18B20 */
static void w1_enable_external_pullup(int enable)
{
        if (enable)
                s3c_gpio_setpull(S3C2410_GPG(14), S3C_GPIO_PULL_UP);
        else
                s3c_gpio_setpull(S3C2410_GPG(14), S3C_GPIO_PULL_NONE);
}
static struct w1_gpio_platform_data ds18b20_w1_gpio = {
        .pin = S3C2410_GPG(14),
        .is_open_drain = 0,
        .enable_external_pullup = w1_enable_external_pullup,
};

static struct platform_device tq2440_ds18b20_device = {
        .name = "w1-gpio",
        .id = -1,
        .dev = {
                .platform_data = &ds18b20_w1_gpio,
        },
};
在smdk2440_devices[]中加入
&tq2440_ds18b20_device
2、        配置内核支持w1-gpio和ds18b20驱动
Device Drivers  --->
                {*} Dallas's 1-wire support  --->
                        1-wire Bus Masters  --->
                                <*> GPIO 1-wire busmaster
1-        wire Slaves  --->
<*> Thermal family implementation
3、        重新编译
[root@tq2440 /]# ls sys/devices/w1\ bus\ master/
28-0000032121a3            w1_master_name
bus                        w1_master_pointer
driver                     w1_master_pullup
power                      w1_master_remove
subsystem                  w1_master_search
uevent                     w1_master_slave_count
w1_master_add              w1_master_slaves
w1_master_attempts         w1_master_timeout
w1_master_max_slave_count
这个目录下有一个以“28-”开头的目录,这个就是你的DS18B20设备的目录,28代表你使用的温度传感器是DS18B20,后面接的一串数字和字母是它的ID号(用来识别不同设备,也是独一无二的)
进入这个目录,里面的w1_slave文件就是它的设备文件:
[root@tq2440 28-0000032121a3]# ls
bus        id         power      uevent
driver     name       subsystem  w1_slave
获取温度值:
查看w1_slave设备文件中的内容,便可得到温度值,执行命令cat w1_slave
[root@tq2440 28-0000032121a3]# cat w1_slave
fe 00 4b 46 7f ff 02 10 8a : crc=8a YES
fe 00 4b 46 7f ff 02 10 8a t=15875
“t=”后面的数字就是温度值,要在千位的后面加上小数点,此时温度为:15.875摄氏度
十八、
回复

使用道具 举报

 楼主| 617463359 发表于 2013-4-11 10:11:54 | 显示全部楼层
zjhsucceed_329 发表于 2013-3-22 18:48
1、        在arch/arm/mach-s3c2440/mach-smdk2440.c文件中构建DS18B20设备
添加头文件
#include

你有这种移植文档是把,分享出来啊!
回复

使用道具 举报

zjhsucceed_329 发表于 2013-4-11 10:37:29 | 显示全部楼层
617463359 发表于 2013-4-11 10:11
你有这种移植文档是把,分享出来啊!

http://www.armbbs.net/forum.php?mod=viewthread&tid=15114
回复

使用道具 举报

 楼主| 617463359 发表于 2013-4-11 11:03:37 | 显示全部楼层
zjhsucceed_329 发表于 2013-4-11 10:37
http://www.armbbs.net/forum.php?mod=viewthread&tid=15114

貌似只有到17,,18.19后面的呢不分享一下。呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-24 06:23 , Processed in 2.031079 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表