应用层驱动与内核驱动

        写这篇博客是因为听到一句话,应用层驱动?开始思考驱动就驱动不是在内核吗,怎么跑应用层去了。其实这个应用层驱动并不是我们常说的内核驱动,只是一个模块实现功能的一个集合,被makefile按照规则生成了一个文件叫.SO动态链接库,他本身没有驱动操作硬件的功能,而是调用内核驱动去运作,就像以前单片机里面代码功能多了,我们就用多个C文件和H文件代表每个模块,主函数main去调用他们,这样看起来层次清晰很多。每个.SO文件看似相关,但是内部已经将其分离,比如通过摄像头采集图片后进行3A算法处理,可以将摄像头采集部分当一个模块.SO,3A当一个.SO,连个相对独立的部分,但又是关联的,分层两个后,当摄像头需要更换,我们就更新摄像头部分的动态库,不需要更新3A部分,3A只负责将采集的图片进行处理,图片怎么来的它不管。

(1).KO文件为内核驱动,必须在内核态工作,用来实际操作硬件。比如IIC协议。

(2).SO为动态链接库,工作在用户态,调用内核驱动实现功能。比如摄像头采集模块功能,使用到IIC协议工作。

(3).SO文件只更新DLL(动态链接库)就行,不需要重新编译内核,或做其他更改配置。

(4)需要保密的驱动可以使用驱动源码make生产.KO后,仅仅给用户提供.KO,不提供源代码C文件,用户动态安装该驱动。

(5)linux内核本身自带的可裁剪驱动是开源的,目录提供源码C文件,用户可以修改,并选择性添加或裁减驱动。

(6)当代码太大后,基本都是使用模块化思想,我们添加的外设,如果内核不支持,可以手动编写makefile生产.KO或.SO文件。

(7).SO文件可以被多个可执行文件共同调用,相比静态链接节省空间。

(8).SO文件作用相当于单边机代码里面的某个模块的.C文件和.H文件一样,主函数调用这个C文件里面的功能函数。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值