连接多个文件驱动无法加载

发布于 2022-09-21 01:37:29 字数 888 浏览 34 评论 0

我自己编写i2c驱动,为什么只用一个i2c.c文件,驱动就可以加载,用两个比如i2c.c i2c_hal.c,就无法加载?????
makefile如下:
# Makefile  
# Please modify here or set environments.
# KSOURCE should be pointed to the build directory of your kernel.
#
DEBUG ?= n
KSOURCE ?= /home/ly/utulinux_dm9000/
%.x:%.c
arm-linux-gcc -o $@ $<
KBUILD_VERBOSE:=1
obj-m := i2c.o
i2c-y := i2c_hal.o
default:
make -C $(KSOURCE) LANG=C KBUILD_VERBOSE=${KBUILD_VERBOSE}  SUBDIRS=`pwd` modules
.PHONY: cscope
cscope:
cscope -b -k -R
.PHONY: clean
clean:
make -C $(KSOURCE) LANG=C KBUILD_VERBOSE=${KBUILD_VERBOSE}  SUBDIRS=`pwd` clean
rm -f *.x *~

我用insmod i2c.ko加载后,显示
Using i2c.ko就没有了,module_init函数里的输出都没有
/proc/devices目录下也无设备名

为什么编译一点错误都没有,却无法加载

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

两人的回忆 2022-09-28 01:37:29

把原来的i2c.c文件改一下名字为i2c_src.c
makefile那两行改成:
obj-m := i2c.o
i2c-objs := i2c_hal.o i2c_src.o

素手挽清风 2022-09-28 01:37:29

我刚解决这个问题,看我的blog吧。

耳根太软 2022-09-28 01:37:29

楼上两位,多谢了,马上试试去

仅一夜美梦 2022-09-28 01:37:29

出现新的问题了,我有3个驱动模块,2个模块都可以编译通过,但i2c的那个不能通过
比如:obj-m := i2c.o
i2c-objs := i2c_hal.o i2c_src.o
错误提示:make[2]: *** No rule to make target `/home/ly/callstation/driver/i2c.c', needed by `/home/ly/callstation/driver/i2c.o'.  Stop.
改名了居然还要那个。c文件,其它两个模块编译就没事,怪。。。。。。。

眼泪也成诗 2022-09-28 01:37:29

还有,动态加载驱动该怎么弄,哪位老大有操作流程

夏の忆 2022-09-28 01:37:29

抱歉,写错了,上边的实际写成
i2c-ojbs := ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文