社区
Linux_Kernel
帖子详情
Linux 2.6 和2.4 驱动开发有什么不同,特别是驱动模块
zdhzidy
2004-11-16 03:57:42
如题
请问那里有相应的资料。麻烦大家介绍一下。
...全文
154
5
打赏
收藏
Linux 2.6 和2.4 驱动开发有什么不同,特别是驱动模块
如题 请问那里有相应的资料。麻烦大家介绍一下。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
binjuny
2004-11-17
打赏
举报
回复
现在让我们来看一个例子,分析一下新的内核编译系统如何来编译并加载一个简单的模块。这个模块是一个“hello world”模块,代码和2.4模块代码基本类似,只是 module_init 和 module_exit 要换成 init_module 和 cleanup_module (内核2.4.10模块已经使用这种机制)。这个模块命名为 hello.c,Makefile 文件如下:
清单 3. 驱动程序 makefile 文件示例
KERNEL_SRC = /usr/src/linux
SUBDIR = $(KERNEL_SRC)/drivers/char/hello/
all: modules
obj-m := module.o
hello-objs := hello.o
EXTRA_FLAGS += -DDEBUG=1
modules:
$(MAKE) -C $(KERNEL_SRC) SUBDIR=$(SUBDIR) modules
makefile 文件使用内核编译机制来编译模块。编译好的模块将被命名为 module.ko,并通过编译 hello.c 和连接 vermagic 而获得。KERNEL_SRC 指定内核源文件所在的目录,SUBDIR 指定放置模块的目录。EXTRA_FLAGS 指定了需要给出的编译期标记。
一旦新模块(module.ko)被创建,它可以被新的模块工具加载或缷载。2.4中的原有模块工具不能用来加载或缷载2.6的内核模块。这个新的模块加载工具会尽量减少在一个设备仍在使用的情况下相应的模块却被缷载的冲突发生,而是在确认这些模块已经没有任何设备在使用后再缷载它。产生这种冲突的原因之一是模块使用计数是由模块代码自己来控制的(通过MOD_DEC/INC_USE_COUNT)。
在2.6中,模块不再需要对引用计数进行加或减,这些工作将在模块代码外部进行。任何要引用模块的代码都必须调用 try_module_get(&module),只有在调用成功以后才能访问那个模块;如果被调用的模块已经被缷载,那么这次调用会失败。相应的,可以通过使用 module_put() 来释放对模块的引用。
CoolQ
2004-11-17
打赏
举报
回复
visit www.lwn.net.
there are a series of articles about porting 2.4 driver to 2.6
ChChip
2004-11-16
打赏
举报
回复
顶顶顶顶顶顶顶顶顶顶顶顶顶顶
zdhzidy
2004-11-16
打赏
举报
回复
还是自己顶阿 阿阿阿
zdhzidy
2004-11-16
打赏
举报
回复
自己顶!!
从
2.4
到
2.6
:
Linux
内核可装载模块机制的改变对设备
驱动
的影响
从
2.4
到
2.6
:
Linux
内核可装载模块机制的改变对设备
驱动
的影响 从
2.4
到
2.6
,
Linux
内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱 动
开发
人员面临着将
驱动
从
2.4
移植到
2.6
内核,或是使
驱动
同时支持
2.4
与
2.6
内核的任务。站在 设备
驱动
开发
人员的角度,
驱动
由一个或几个外部可加载内核模块组成,本文针对
2.6
内
从单片机到ARM
Linux
驱动
——
Linux
驱动
入门篇
大一到大二这段时间里学习过单片机的相关知识,对单片机有一定的认识和了解。如果要深究其原理可能还差了一些火候。知道如何编写程序来点量一个LED灯,改一改官方提供的例程来实现一些功能做一些小东西,对IIC、SPI底层的通信协议有一定的了解,但是学着学着逐渐觉得单片机我也就只能改改代码了(当然有的代码也不一定能改出来)。对于我这种以后只想搬砖的码农来说已经差不多了(仅仅是个人观点), ...
嵌入式
LINUX
驱动
学习心得--基于正点原子IMX6ULL
笔者基于正点原子IMX6ULL来学习嵌入式
LINUX
驱动
开发
,嵌入式
LINUX
开发
大致可分为两个大方向:1.应用
开发
;2.
驱动
开发
。其中应用
开发
主要是使用已经编写好的
驱动
来完成具体的项目应用,对芯片底层相关知识要求较低,程序运行于用户态;
驱动
开发
顾名思义,主要是为应用
开发
提供各个功能模块的接口,
开发
者需要对芯片的硬件性能和
LINUX
内核有一定了解。由于笔者目前只学习了
驱动
开发
故只介绍
驱动
开发
相关知识。...
linux
内核
2.6
和
linux
内核4.0的区别
这种方法的好处是,它允许同一个 Makefile 在两个
不同
的上下文中工作:一次是作为一个外部模块的构建脚本,一次是作为内核构建系统的一部分。总之,从
2.6
到 4.0,
Linux
内核经历了巨大的发展,不仅在性能和稳定性上有所提高,还引入了许多新的功能和技术。指向的是你当前运行的
Linux
内核版本的源代码目录。是在
Linux
内核构建过程中设置的一个变量,它包含了正在构建的内核的版本。综上所述,这个命令的作用是:在当前目录中查找源代码,然后在内核构建系统的上下文中编译这些源代码为内核模块。
Linux_Kernel
4,469
社区成员
17,458
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章