gzyueqian
13352868059

嵌入式开发:编写外部设备驱动程序的 3 个技巧

更新时间: 2022-02-13 07:00:00来源: 粤嵌教育浏览量:10416

  今天使用微控制器的一个主要优势是嵌入式软件开发人员通常不必再编写自己的驱动程序。微控制器供应商提供软件框架来抽象硬件并允许开发人员进行简单的函数调用来初始化、读取和写入外围设备(如 SPI、UART、模数转换器等)是很常见的。然而,嵌入式开发人员仍然经常需要编写驱动程序来与外部集成电路进行交互,这些集成电路可能是传感器、执行器、电机控制器等。在今天的文章中,我们将探讨几个编写自己的外部设备驱动程序的最佳实践。


  最佳实践 #1——将实现与配置分开


  编写任何驱动程序的一个关键方面是将实现与配置分开。这种分离有助于确保驱动程序可重用和灵活。例如,驱动程序可以很容易地编译成一个目标文件,这样开发人员就看不到内部,因此它可以用于多个项目。开发人员仍然可以访问配置模块,他们可以使用该模块来配置驱动程序以满足其特定的应用程序需求。如果配置需要机会,它不会影响驱动程序设计或强制使用驱动程序的其他项目不同步或被迫接受新更改并经历验证周期。


  将实现与配置分开还允许抽象外部硬件,以便开发人员不需要完全了解硬件中发生的事情,就像在微控制器上一样。我经常希望集成电路供应商停止提供配置工具 GUI,而是花精力为他们的设备编写可重用和便携的驱动程序。他们的每个客户都很难通过阅读大约 100 页的数据表来编写驱动程序并理解他们的模块。


  最佳实践#2——创建一个简单的底层接口


  在编写驱动程序时,嵌入式开发人员试图在他们的实现中做太多事情,驱动程序成为驱动程序和应用程序代码的混合体,驱动程序的接口应该包含一个简单的接口,其中包括:


  一个初始化函数

  写函数

  读取功能


  除此之外的任何东西都真正开始进入应用程序领域!这背后的逻辑很简单,驱动程序应该简单地提供与设备通信并允许读取和写入操作的能力,然后,应用程序模块将访问这些读取和写入功能,以构建更高级别应用程序代码所需的可重用应用程序组件。



  最佳实践#3——提供错误检测


  不幸的是,许多嵌入式开发人员编写的代码只是假设一切都会好起来的,在为外部设备编写驱动程序时,我们没有那么奢侈。设备驱动程序应考虑潜在的错误和故障。例如驱动程序可以超时并提供错误吗?如果执行了读操作,函数能否返回读是否成功?如果发生奇偶校验错误怎么办?


  有几种不同的方法可以在驱动程序中提供错误和故障检测。首先,每个函数都可能返回错误代码。如果操作成功,则此错误代码将简单地为真,如果发生问题,则此错误代码将简单地为假。其次,如果确实发生了问题,那么可以在设备接口中添加一个允许检查错误的附加功能,会包括以下附加操作:


  返回驱动错误状态

  清除驱动错误状态


  同样,这为驱动程序提供了灵活性和故障检测能力,并允许应用程序代码仔细监控驱动程序操作是否成功。


  为微控制器之外的集成电路编写设备驱动程序是嵌入式开发人员的最后一个前沿领域之一,我们仍然必须编写自己的驱动程序。在今天的帖子中,我们研究了为外部集成电路编写驱动程序的几个最佳实践,这些最佳实践将帮助读者开发可扩展和可重用的驱动程序,这些驱动程序可以检测故障并允许应用程序代码做出适当的响应。

免费预约试听课