资料介绍
一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下5个窍门是每一个开发者在设计驱动程序时应该考虑的,跟随我看看这些设计方法。
1.使用设计模式
设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢?
驱动程序设计模式大致分属以下4个类别:Bit bang、轮询、中断驱动和直接存储器访问(DMA)。
Bit bang模式:
当微控制器没有内外设去执行功能的时候,或者当所有的内外设都已经被使用了,而此时又有一个新的请求,那么开发者就应该选择Bit bang设计模式。Bit bang模式的解决方案很有效率,但通常需要大量的软件开销来确保其实施的能力。Bit bang模式可以让开发者手动完成通信协议或外部行为。
轮询模式用于简单地监视一个轮询调度方式中的事件。轮询模式适用于非常简单的系统,但许多现代应用程序都需要中断。
中断可以让开发者在事件发生时进行处理,而不用等代码手动检查。
DMA(直接存储器访问)模式允许其它外围设备来处理数据传输的需求,而不需要驱动的干预。
2.了解实时行为
一个实时系统是否能满足实时需求取决于它的驱动程序。写入能力差的驱动是低效的,并可能使不知情的开发者放弃系统的性能。设计者需要考虑驱动的两个特点:阻塞和非阻塞。一个阻塞的驱动程序在其完成工作之前会阻止其他任何软件执行操作。例如,一个USART驱动程序可以把一个字符装入传输缓冲区,然后一直等到接收到传输结束标志符才继续执行下一步操作。
另一方面,非阻塞驱动则是一般利用中断来实现它的功能。中断的使用可以防止驱动程序在等待一个事件发生时拦截其他软件的执行操作。USART的驱动程序可以将一个字符装入传输缓冲区然后等主程序发布下一个指令。传输结束标志符的设置会导致中断结束,让驱动进行下一步操作。
无论哪种类型,为了保持实时性能,并防止系统中的故障,开发人员必须了解驱动的平均执行时间和最坏情况下的执行时间。一个完整的系统可能会因为一个潜在的风险而造成更大的安全问题。
3. 重用设计
在时间和预算都很紧张的情况下为什么还要再造轮子呢?在驱动程序开发中,重用、便携性和可维护性都是驱动设计的关键要求。这里面的许多特征可以通过硬件抽象层的设计和使用来说明。
硬件抽象层(HAL)为开发人员提供一种方式来创建一个标准接口去控制微控制器的外设。抽象隐藏实现细节,取而代之的是提供了可视化功能,如 Usart_Init和Usart_Transmit。这个方法就是让任何USART、SPI、PWM或其他外设具备所有微控制器都支持的共同特点。 使用HAL隐藏底层、特定设备的细节,让应用程序开发人员专注于应用的需求,而不是关注底层的硬件是如何工作的。同时HAL提供了一个重用的容器。
4.参考数据手册
微控制器在过去的几年里变得越来越复杂。以前想要完全了解一个微控制器需要掌握由一个大约包含500页组成的单一数据手册。而如今,一个32位微控制器通常包含由部分的数据手册、整个微控制器系列的资料表、每个外设数以百计的资料以及所有的勘误表组成的数据手册。 开发人员如果想要完全掌握这部分的内容需要了解几千页的文件。
不幸的是,所有这些数据手册都是一个驱动程序能真正合理实现所需要的。开发人员在一开始就要对每个数据手册中包含的信息进行收集和排序。通常它们中的每一个都需要被访问以使外设启动和运行。 关键信息被分散(或隐藏)在每种类型的数据手册中。
5.谨防外设故障
最近我刚好有机会把一系列的微控制器驱动移植到其他的微处理器上。制造商和数据手册都表明PWM外设在这两个系列的微控制器之间是相同的。 然而,实际情况却是在运行PWM驱动器的时候两者之间有很大的不同。该驱动程序只能在原来的微控制器工作,而在新系列的微控制器上却无效。
在反复翻看数据手册之后,我在数据手册中一个完全不相关的注脚里发现了PWM外设上电时会处于故障状态,需要将一个隐藏在寄存器中的标志位清零。在驱动程序实现的开始,确认外设可能出现的故障并查看其他看似无关的寄存器错误。
(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 嵌入式系统中驱动程序的结构和设计方法
- 嵌入式Linux的摄像头驱动程序设计与实现
- 细说嵌入式驱动程序设计
- 嵌入式RFID的驱动程序设计
- ARM嵌入式系统BSP的程序设计总结
- 嵌入式开发板的USB驱动程序源代码资料免费下载 1次下载
- 嵌入式Linux设备驱动程序开发基础知识总结免费下载 13次下载
- 嵌入式Linux的中断驱动程序设计 3次下载
- 嵌入式Linux下的LCD驱动程序设计方案解析 0次下载
- 嵌入式Linux下CAN总线驱动程序设计.rar 51次下载
- 基于嵌入式Linux的步进电机驱动程序设计
- 嵌入式USB从设备驱动程序设计
- 嵌入式通信设备驱动程序设计标准化
- 基于VxWorks实时嵌入式操作系统的设备驱动程序设计
- 嵌入式系统的C程序设计
- 设计嵌入式驱动程序有什么窍门 2508次阅读
- 设计嵌入式驱动程序有哪些小窍门 2553次阅读
- 基于嵌入式软件的JNI技术应用解析 1020次阅读
- 嵌入式Linux内核的驱动程序开发是怎样的 1415次阅读
- 基于嵌入式操作系统的VxWorks设备驱动程序设计 1336次阅读
- 嵌入式系统的七个开发技巧资料合集 2970次阅读
- 基于PXA255开发板外围字符设备的嵌入式Linux字符设备驱动设计与应用 1138次阅读
- 基于嵌入式Linux内核的系统设备驱动程序开发设计 1113次阅读
- 嵌入式系统开发中驱动程序设计的5个方法盘点 3057次阅读
- 关于驱动程序设计的5个窍门 4378次阅读
- 嵌入式操作系统是什么_嵌入式操作系统有哪些 2w次阅读
- 嵌入式软件工程师和嵌入式硬件工程师有什么区别 7w次阅读
- 基于嵌入式Linux的无线视频监控系统设计 3004次阅读
- 基于FPGA嵌入式系统的设备驱动开发 2259次阅读
- 典型的嵌入式系统设计 2650次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大威廉希尔官方网站 图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成威廉希尔官方网站 应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口威廉希尔官方网站 图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字威廉希尔官方网站 基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动威廉希尔官方网站 设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6威廉希尔官方网站 仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多