直到我干了底层开发,才知道不写业务代码有多爽!

新闻资讯   2023-07-21 20:06   45   0  

写业务代码,可能每天大部分时间调别人的接口,接口不合适封装个函数,需求也不断变动。

总归实现功能最重要,用户体验最重要,别人提需求,你只管实现。

你就像无情的机器,写重复的业务代码,实现相似的功能,感觉没长进,眼界也没提升......

但驱动开发截然不同......

行不行,你说了算

业务代码,最多的就是需求变动。

例如,这个模块再加个功能,这个代码再封装一下,你这样写不行要这样写......

但是,对于一个驱动来说,它能用就是能用,不能用就是不能用,没有太多的需求可言。

例如一个网卡驱动,它能正常连接网络,能正常传输文件就是它的功能,代码怎么写是根据芯片手册来的,没人会对你提什么需求。

所以,没有需求的烦恼。只要能用,你的任务就完成了,不会有什么需求过来,最多就是改一下bug。

除了你,一般人不敢动你的代码
为什么不敢动?

驱动代码不像应用层写的业务逻辑,业务代码可能更多的是一些编程技巧、代码优化上的东西,例如接口封装、参数判断、特殊情况处理等一些偏软件设计上的东西,如果看到某段业务逻辑写的不好,有些经验的人都是比较容易去改你的代码的。

但写驱动代码有一个最大特点,就是先把芯片手册看懂。

例如驱动里分配了一个64字节对齐的内存、调度前又设置了一遍寄存器,为什么要这么做?你是不知道的。

如果别人觉得你的驱动有问题,想改你的代码,那他应该先把芯片手册看懂。

没看过芯片手册之前,这个代码他没法动,这个名词、这个比特位是什么意思,代码为什么这么写,只有你才知道。

即便是驱动真有问题,也一定是你自己改,因为一般人不会闲着没事去看不属于他工作范围的文档,况且把文档看懂都要好几天。

即便是一处很小的错误,通常也是你自己改,因为别人不知道改了这个地方,会不会影响其他地方,只有写这个驱动的人才知道。

所以只要驱动能正常用,就不太会有人去动它了。

我告诉你我有什么功能,
而不是你来告诉我你要什么功能
如果是业务代码,通常都是需求牵着你走,一切为了用户体验。

但驱动代码相反,我只会告诉你,我有什么功能,而不是你来告诉我,你要什么功能。

一个驱动,它的功能就只有这些,只能少不能多,我可以告诉你这个驱动有这些功能,你想要什么样的接口,我可以提供ioctl接口或者其他接口给你调用。

如果你说你要传一个参数,把xxx返回给你,我也有可能跟你说,做不到。如果你说你要同时传一些参数,把xxx同时返回,我也只会告诉你做不到。

你问为什么?因为这个硬件本身就做不到这样的效果。如果你不信,那你去把芯片手册看一遍吧,看懂再来问我。

END

来源:嵌入式Linux充电站

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
STM32的ADC用法,你知道几种?
走嵌入式方向,一定要软硬件都懂?
单片机开发之节省内存大法(C语言版本)

→点关注,不迷路←

文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。