【小识堂】嵌入式系统开发中设计驱动程序的方法 有哪些? - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3698|回复: 0

【小识堂】嵌入式系统开发中设计驱动程序的方法 有哪些?

[复制链接]

61

主题

61

帖子

677

积分

创龙

Rank: 8Rank: 8

积分
677
发表于 2018-5-3 10:52:50 | 显示全部楼层 |阅读模式
欢迎临创龙小识堂~

        (。・∀・)ノ゙嗨,又到了我们每周一课的时间了。。。

        今天小编Jane给大家分享内容是:嵌入式系统开发中设计驱动程序的方法有哪些呢?

       不一样的干货,喜欢的记得转载或留言哦*^-^*


嵌入式系统开发中设计驱动程序的方法
有哪些?

前言

一个嵌入式应用软件都会在某些时候访问最底层的固件和进行一些硬件控制。

驱动的设计和实施是确保一个系统能够满足其实时性要求的关键。以下设计驱动程序的方法是每一个开发者在设计时应该考虑的。

下面就随嵌入式小编Jane一起来看看这些设计方法:


1、使用设计模式

设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢?


驱动程序设计模式大致分属以下4个类别:Bit bang、轮询、中断驱动和直接存储器访问(DMA)。

Bit bang模式:当微控制器没有内外设去执行功能的时候,或者当所有的内外设都已经被使用了,而此时又有一个新的请求,那么开发者就应该选择Bit bang设计模式。Bit bang模式的解决方案很有效率,但通常需要大量的软件开销来确保其实施的能力。Bit bang模式可以让开发者手动完成通信协议或外部行为。


轮询模式:用于简单地监视一个轮询调度方式中的事件。轮询模式适用于非常简单的系统,但许多现代应用程序都需要中断。


中断:可以让开发者在事件发生时进行处理,而不用等代码手动检查。


DMA(直接存储器访问)模式:允许其它外围设备来处理数据传输的需求,而不需要驱动的干预。


2、了解实时行为

一个实时系统是否能满足实时需求取决于它的驱动程序。写入能力差的驱动是低效的,并可能使不知情的开发者放弃系统的性能。设计者需要考虑驱动的两个特点:阻塞和非阻塞。一个阻塞的驱动程序在其完成工作之前会阻止其他任何软件执行操作。例如,一个USART驱动程序可以把一个字符装入传输缓冲区,然后一直等到接收到传输结束标志符才继续执行下一步操作。

另一方面,非阻塞驱动则是一般利用中断来实现它的功能。中断的使用可以防止驱动程序在等待一个事件发生时拦截其他软件的执行操作。USART的驱动程序可以将一个字符装入传输缓冲区然后等主程序发布下一个指令。传输结束标志符的设置会导致中断结束,让驱动进行下一步操作。

无论哪种类型,为了保持实时性能,并防止系统中的故障,开发人员必须了解驱动的平均执行时间和最坏情况下的执行时间。

一个完整的系统可能会因为一个潜在的风险而造成更大的安全问题。



      3、了解实时行为

嵌入式DDR(Double Data Rate,双数据速率)设计是含DDR的嵌入式硬件设计中最重要和最核心的部分。

随着嵌入式系统的处理能力越来越强大,实现的功能越来越多,系统的工作频率越来越高,DDR的工作频率也逐渐从最低的133 MHz提高到200 MHz,从而实现了更大的系统带宽和更好的性能。然而,更高的工作频率同时也对系统的稳定性提出了更高的要求,这需要硬件设计者对电路的布局走线有更多的约束和考虑。

而影响整个系统能否工作正常且稳定的最重要的部分就是DDR部分的电路设计。

嵌入式系统使用DDR内存,可以在传统的单数据数率内存芯片上实现更好。



      4、参考数据手册

微控制器在过去的几年里变得越来越复杂。以前想要完全了解一个微控制器需要掌握由一个大约包含500页组成的单一数据手册。而如今,一个32位微控制器通常包含由部分的数据手册、整个微控制器系列的资料表、每个外设数以百计的资料以及所有的勘误表组成的数据手册。开发人员如果想要完全掌握这部分的内容需要了解几千页的文件。

不幸的是,所有这些数据手册都是一个驱动程序能真正合理实现所需要的。开发人员在一开始就要对每个数据手册中包含的信息进行收集和排序。通常它们中的每一个都需要被访问以使外设启动和运行。关键信息被分散(或隐藏)在每种类型的数据手册中。



       5、谨防外设故障

最近我刚好有机会把一系列的微控制器驱动移植到其他的微处理器上。制造商和数据手册都表明PWM外设在这两个系列的微控制器之间是相同的。然而,实际情况却是在运行PWM驱动器的时候两者之间有很大的不同。该驱动程序只能在原来的微控制器工作,而在新系列的微控制器上却无效。

在反复翻看数据手册之后,我在数据手册中一个完全不相关的注脚里发现了PWM外设上电时会处于故障状态,需要将一个隐藏在寄存器中的标志位清零。在驱动程序实现的开始,确认外设可能出现的故障并查看其他看似无关的寄存器错误。


结语

嵌入式小编Jane就为大家介绍以上5种方法,你有更好的想法或方法,欢迎留言,让更多的攻城狮,学有所用。

本文来源于:21ic


  小编Jane,今天就先为大家讲解到这里。后续更加精彩!敬请留意。




想更多地了解广州创龙,欢迎与我们联系:

    销售邮箱:sales@tronlong.com
    技术邮箱:support@tronlong.com
    创龙总机:020-8998-6280
    技术热线:020-3893-9734
    创龙官网:www.tronlong.com
    技术论坛:www.51ele.net
    线上商城:https://tronlong.taobao.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-29 13:32 , Processed in 0.035912 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表