社区
Linux_Kernel
帖子详情
内核驱动两个.c文件的问题!
jjk927
2010-01-22 09:37:34
大家好,有个问题请教大家:
我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数,
但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函数.
请教下大家,内核驱动调用其他c文件的函数怎么解决,这两个c文件是希望编译成一个模块,这个问题怎么解决,或者需要看什么书籍,谢谢!
...全文
142
6
打赏
收藏
内核驱动两个.c文件的问题!
大家好,有个问题请教大家: 我在内核里面有一个hello.c的文件,编译一个ko的模块后,可以正常挂载,可是我想在hello.c里面调用另外一个.c文件的函数, 但是好像编译可以通过,但是挂载模块的时候提示找不到调用的这个函数. 请教下大家,内核驱动调用其他c文件的函数怎么解决,这两个c文件是希望编译成一个模块,这个问题怎么解决,或者需要看什么书籍,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yel617
2010-01-27
打赏
举报
回复
学习
jjk927
2010-01-25
打赏
举报
回复
谢谢大家的回复,好像这两种方法都不行,挂载内核的时候不能识别另外.c的文件。
不知道咋整了~~~~~
joyself
2010-01-23
打赏
举报
回复
对了在2)中 test1.c中EXPORT_SYMBOL(some_interface);
joyself
2010-01-23
打赏
举报
回复
我觉得至少有两种方法:
1)像上面说的,不过有点修改:
你的文件test1.c test2.c
假设你的模块名为dummy
obj-m += dummy.0
dummy-objs := test1.o test2.o
2)
加个.h 文件
extern some_interface();
在test1.c中实现这个some_interface
而在test2.c中 include这个.h,并调用some_interface
deep_pro
2010-01-22
打赏
举报
回复
如果你是用makefile编译的话,就很好解决了
假设你的主程序 test.c
用到了test1.c test2.c
将代码以外部模块方式编译
make文件中
obj-m :=test.o
module-objs :=test1.o test2.o
deep_pro
2010-01-22
打赏
举报
回复
如果你是用makefile编译的话,就很好解决了
假设你的主程序 test.c
用到了test1.c test2.c
将代码以外部模块方式编译
make文件中
obj-m :=test.o
module-objs :=test1.o test2.o
windows
内核
驱动
程序开发
驱动
编程
本课程是windows
内核
驱动
程序开发。 涉及到的知识有C 、C++、MFC、汇编等等。具体的细节在视频课程中呈现。
Windows
内核
-
驱动
开发
内核
程序是运行在Ring0级的,因此
内核
程序要比应用层上的普通Ring3级程序有更高的权限。因此
内核
编程的应用,往往给传统软件带来更强的功能,实现技术上的飞跃。同理,黑客们也将传统的攻击程序或潜行程序从Ring3搬到了Ring0级去,以便于更隐蔽、更有效的监视或控制目标系统 课程目录:第一个
驱动
程序
驱动
的常用函数调试
驱动
驱动
与三环通讯零环代码编写
驱动
与三环通讯三环代码编写封装通信函数及添加回调函数三环加载
驱动
三环卸载
驱动
驱动
蓝屏分析
驱动
签名
安卓编译与开发、Linux
内核
及
驱动
安卓编译与开发、Linux
内核
及
驱动
视频教程,该课程内容包括一、源码编译:1、常见的ROM种类、谷歌的ROM、第三方的ROM2、区别3、RockChip的ROM、4、编译环境配置、源码下载、编译命令;二、源码开发:源码结构分析、Launcher开发、需求分析、系统级应用;三、
内核
讲解:
内核
用途、
内核
结构、
内核
职能、
内核
源码编译、
驱动
开发;四、
内核
开发:1、体系架构、目录结构、中断机制、
内核
进程控制、2、
内核
库
文件
、例子简单分析、3、
内核
调度流程4、
内核
组件工具嘉宾介绍:仝利,英文名Burning,CSDN博客讲师,多年主要从事于流媒体,网络通讯,p2p等技术的开发与研究。目前在创业,产品是面向企业会议室和家庭客厅的多媒体通讯盒子的开发。国内还没有相关产品,预计产品会在8月份上市。
Linux设备树(device tree)
设备树(device tree)机制是Linux
内核
从linux-3.x版本开始引进的一种机制,目的是解决
内核
源码的arch/arm目录下代码混乱的
问题
:随着ARM生态的快速发展,在
内核
源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源
文件
,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的
文件
格式定义。而对于
内核
来说,与这些硬件耦合,会导致
内核
代码混乱不堪,每个开发板上运行的
内核
镜像都必须单独编译配置,无法通用。什么时候Linux
内核
能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了Linux
内核
和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树
文件
(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h
文件
来定义。Linux
内核
是一个通用的
内核
,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和
内核
驱动
开发的工作也发生了变化:以往
驱动
工程师关注的头
文件
宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树
文件
。很多
驱动
的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发
驱动
。本期课程主要面向嵌入式开发人员,分享Linux下
驱动
开发所需要的设备树知识和必备技能
Linux
内核
编程:设备树overlay和ConfigFS
文件
系统
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux
内核
在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。设备树的overlay功能是指可以在系统运行期间动态修改设备树。一般情况下,如上图所示,设备树经过DTC编译器编译为二进制的hello.dtb
文件
,加载到内存,随Linux
内核
一起启动后,一般就无法更改了。如果我们想修改设备树,需要修改hello.dts
文件
文件
,重新编译成二进制
文件
:hello.dtb,然后重新启动
内核
,重新解析。有了设备树的overlay功能,省去了设备树的重新编译和
内核
重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便:外界插拔设备,无法在设备树中预先描述:耳机树莓派 + FPGA开发板基于I2C的温度传感器管脚的重新配置:PIN multiplexing修改bootcmd、分区...设备树的overlay功能,目前还没有加入到
内核
mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树
文件
。如果你手头的开发板或
内核
平台还没有支持device tree overlay,可以学习本期课程,学习
内核
中设备树overlay的实现原理,如何给
内核
打补丁,使
内核
支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。本期课程的主要内容如下:在开发板上如何实现设备树的overlay功能Configfs
文件
系统的配置与挂载Configfs编程接口如何编写设备树 overlay插件设备树 overlay的编译和运行设备树overlay运行机制分析本期课程适合哪些人学习:嵌入式
驱动
工程师嵌入式BSP工程师嵌入式软件工程师想从事嵌入式开发的同学全网首家讲解设备树overlay的视频教程。
Linux_Kernel
4,436
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章