首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组织微控制器外部外围驱动程序软件的最佳方法

组织微控制器外部外围驱动程序软件的最佳方法
EN

Software Engineering用户
提问于 2015-06-01 01:32:36
回答 1查看 443关注 0票数 2

最近,我开始为微控制器设计和编写代码,以便更深入地了解它们的工作原理。我承担的第一个主要项目是为令人信赖的日立HD44780液晶显示控制器编写驱动程序。在没有任何时间,我能够实现一个通信接口与液晶显示器和所有定义的液晶显示命令。我对基本的司机很满意,我相信这是按照惯例进行的。它使用一种分层的自顶向下的方法,这样就有一个定义良好的公共接口,底层包含了与GPIO硬件对话的唯一功能。

然而,我已经开始实现高级功能,如垂直移位/滚动、动画等。到目前为止,实现是在一个模块内完成的,这是很好的,因为它将所有功能保持在一起,并且驱动程序的用户只需调用提供给他/她的功能。它的缺点是驱动程序的维护变得越来越复杂,这告诉我,我可能需要分解它,而不是追求单块设计。

我正在考虑创建另一个模块,比如垂直滚动。公共接口将包含执行滚动所需的数据结构和功能,所有这些都由main处理。这是一个有效的方法,还是我完全遗漏了什么?

当我说模块时,我指的是一组相互关联的功能。我的理解是,驱动程序是控制一些硬件的模块,但模块并不一定意味着驱动程序,例如C字符串库。

EN

回答 1

Software Engineering用户

发布于 2015-06-01 12:27:03

驱动程序经常被分成几个层次。作为鼠标驱动程序的“简单”功能有单独的模块,用于:

  • 不同的USB规范: 1.0,2.0等。
  • 专用USB控制器芯片。
  • 隐藏装置。
  • USB老鼠。
  • 所有老鼠都在内核水平。
  • 在PS/2和串行鼠标上的等效实现。
  • 窗口系统鼠标驱动程序(Xorg等)
  • 图形工具包鼠标API (GTK、QT等)

当然,根据抽象级别或可能会更改的内容来划分驱动程序是合理的。缓冲、滚动、格式化、包装和动画可以而且应该分开处理,只使用下面各层的公共API。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/285446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档