最简单IO驱动的智慧

干货 | 最简单io驱动的智慧
从单片机到arm7、arm9、cortex-a8,从uc/os到wince、linux,gpio驱动都是最简单、最易编写的驱动。但看似简单、毫无技术含量的驱动,其是否完整?是否规范?是否安全?
典型案例
本节将选取两例典型案例,从反、正两个角度进行对比。
反方案例
以某一源码中xxx驱动为例,截取xxx_iocontrol部分的代码,如程序清单1所示;请留意代码突出显示部分。
程序清单1
从反方案例,实现gpio电平状态的读或写的功能仅需要几行代码,非常简单。
正方案例
如程序清单2所示,代码截取自zlg某核心板gpio驱动,请留意代码中突出显示部分。
程序清单2
从正方案例,实现gpio电平状态的读或写的功能却花费了2倍的代码工作量,差异为何如此大?
案例点评
一、指针使用
在反方案例中,函数传递进来的指针参数未经判断而直接使用,这种情况下若为空指针或野指针,则程序极可能出现异常甚至崩溃!
反方案例在读取操作后,使用“*pbytesreturned = 2;”返回实际读取的字节数,但是,该指针依然未经判断而直接使用!
而正反案例则在每一项参数使用前均对参数范围、有效性进行判断,从根本上避免了参数异常情况的发生!
二、错误提示
在反方案例中,xxx_iocontrol只是返回true或false,返回false时应用层无从获取或获知是什么原因造成了“false”!
对比正方案例,在参数判断时即开始添加错误提示,在return之前,调用setlasterror函数,应用层则可以通过getlasterror获取错误原因,允许用户更快速、准确的定位错误点。
三、注释
反方案例函数体内外几乎无注释;
而正方案例,无论函数体内的关键位置还是函数体外,均做必要、详细的注释说明,为程序的后期维护带来极大的便利!
包括最简单的gpio在内,驱动实现功能非常容易,但驱动的完整性与可靠性却蕴藏着软件工程的大智慧。

无需管理底层基础设施,亚马逊云科技向量数据库轻松创建ML增强的搜索体验和应用程序
2018年5月国内手机市场出货量上升 4G手机出货量增长1.7%
oppor11什么时候上市?oppor11最新消息:oppor11抢占先机,oppor11售价意外曝光,只需3299带回家
三相交直流校验装置的功能都有哪些
使用OpenGL ES构架和GPU的离屏帧合成器/分解器功能实现
最简单IO驱动的智慧
腾达交换机深耕监控领域数年 致力于为所有客户提供最佳解决方案
线性稳压器的基础-效率和热计算
2*150W无大环反馈高保真功放电路原理图
拓维信息亮相2023数字科技生态大会 软硬一体赋能数字中国建设
MIPS平台上运动控制器的调度抖动的测试方法设计详解
Osconiq 产品系列满足个性化的 LED 需求
登临科技创新通用GPU荣获“中国芯”优秀技术创新产品荣誉
思必驰钱彦旻团队获得吴文俊人工智能自然科学奖一等奖
合适的电压基准怎么选?
怎么确定每个稳压管的稳压值并且区分出来呢?
AI制药公司冰洲石生物科技宣布完成数千万美元新一轮融资
智能镜子显示屏变身为智能管家,它是怎么做到的
车用连接器产品介绍
信号隔离和电源隔离的知识点解读