一.潜在的危机
1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂。尤其是接收状态为被动状态时,只能靠串行口中断来接收数据。
2.在进行串行通信时,双方遵循相同的通信协议。由于波特率不变,因此相邻两次串口中断的间隔时间基本固定。
3.在以下两种情况时会使接收过程出现错误:
(1)第一种情况是系统关中断的最长时间大于相邻两次串行接收中断的间隔时间,这时将可能导致遗漏一次中断,造成数据丢失。
(2)实时操作系统内核的关中断的最长时间是已知的,通常很短,它不是问题关键。
(3)系统关中断的最长时间往往是由用户软件造成的,例如:我们编写的中断服务函数过于复杂,导致系统为了处理中断服务函数而导致关中断时间过长。
(4)第二种情况是在串口程序正在运行期间有一个比它优先级更高的中断程序中断了串口程序。从而造成数据丢失。
(5)在这里提一个概念:把不能响应串口接收中断的这段时间称为“死区”。因此解决问题的关键是:死区时间不能比相邻两次串口中断的间隔时间长。
二.如何解决危机
l 任务在访问比较耗时的共享资源时不要采用关中断的方式(改成互斥信号量)。
l ISR要尽可能简短,将可以剥离的工作转交关联任务去完成。
(此处的设计方式和Linux中把中断分为上半部分,和下半部分的原理有着同工异曲的含义)
采用上面的方法来缩短死区时间。
另一中方法是:
加长相邻两次串口接收中断的间隔时间。
l 方法一:降低波特率,这个方法简单,但因此也导致通信效率的下将。其次,一般在进行串口编程时,波特率一般是固定的。因此此方法一般不太适用。
l 方法二:在波特率不变的情况下减少中断次数,达到加长相邻两次串口接收中断间隔时间的效果。
ARM芯片的串口具有16字节的缓冲区,可以设置每接收1,4,8,14字节产生一次中断。如果设置每接收8字节中断一次,则比1字节中断一次要延长8倍的中断间隔时间。
Tiger-John说明:
l 在使用有数据缓冲功能的串口编程后,比较容易满足相邻两次串口接收中断的间隔时间大于死区时间的条件,但仍然存在潜在的危险。
想要可靠的避免这场危机:必须要满足以下条件
(1)相邻两次串口接收中断的间隔时间必须大于系统死区时间
(2)接收缓冲区的空闲时间必须足够存放在“死区”时间内接收到的新数据。
若设置每接收8字节中断一次,则空闲空间也为8字节。由于死区时间比中断间隔时间短,故接收的新数据必然少于8字节,才不会出现数据丢失现象。
即在满足中断间隔时间大于“死区”时间的前提下,将中断条件设置为接收缓冲区的1/2,则死区时间接近中断间隔时间,接收过程是可靠的。
上一篇: UART0串口编程(一):通信协议设计;RS232标准
下一篇:各种ARM仿真器接口图
推荐阅读
史海拾趣
2013年,FTDI推出了最新的嵌入式视频引擎(EVE)技术产品。这项技术将高度先进的图形控制器、显示器、音频和触摸功能集成到单一芯片中,为智能显示器的实施提供了高效、便捷的解决方案。这一创新不仅提升了FTDI在嵌入式系统领域的竞争力,也为公司在智能家居、工业自动化等多个领域的市场拓展提供了有力支持。
作为一家以开源硬件为核心的公司,BeagleBoard深知教育和人才培养的重要性。他们积极与学校、教育机构合作,提供教育支持和培训服务,帮助更多的学生了解嵌入式系统开发的魅力。同时,公司还设立了奖学金和竞赛项目,鼓励年轻开发者积极参与创新实践,为行业培养了一批批优秀的人才。
随着技术的不断进步,BeagleBoard公司始终保持着对创新的追求。他们不断研发新的技术,优化产品设计,推出了一系列具有创新性的产品。其中,BeagleBone Black是该公司的一款明星产品,它集成了高性能处理器、丰富的外设接口和强大的扩展能力,为开发者提供了更加便捷的开发体验。此外,公司还推出了工业宽温应用的变体,以满足不同领域的需求。
为了进一步拓展市场,Adam Tech开始实施全球化战略。公司在北美、欧洲和亚洲等地设立了多个代表处,以便更好地服务全球客户。这些代表处不仅为公司带来了更多的业务机会,也提升了公司在国际市场上的知名度。同时,公司还积极与各地合作伙伴建立紧密的合作关系,共同推动电子连接器行业的发展。
进入2015年后,随着物联网、5G等新兴技术的兴起,光电子器件的市场需求呈现出爆发式增长。Hei Inc Optoelectronic Division敏锐地捕捉到了这一市场趋势,及时调整产品策略,加大了对低功耗、小型化光电子模块的研发力度。公司推出的新一代光电子模块不仅满足了市场对于高效能、低能耗的需求,还凭借其优异的性价比迅速占领了市场份额。这一举措不仅推动了公司的快速增长,还进一步巩固了其在光电子领域的市场地位。
近年来,随着全球对环保和可持续发展的重视,Hei Inc Optoelectronic Division积极响应国家号召,将绿色可持续发展理念融入到企业的生产经营中。公司投入巨资研发环保型光电子器件,并不断优化生产工艺流程以降低能耗和排放。同时,公司还积极参与各类环保公益活动,提升公众对绿色光电子技术的认知度。这些举措不仅赢得了社会各界的广泛赞誉,还为公司树立了良好的企业形象和品牌形象。在绿色可持续发展的道路上,Hei Inc Optoelectronic Division正稳步前行,不断开创光电子领域的新篇章。
提供RM/RVMB硬盘播放器方案 RM播放器方案,RMVB播放器方案,硬盘播放器方案,广告机方案,RM播放方案,RM/RMVB播放方案 详细介绍 1、流媒体视频播放:全码率支持RM/RMVB格式,网络流媒体视频音频电视化。 2、影视播放:支持绝大部分视 ...… 查看全部问答∨ |
|
Wince6.0下,想用nandflash做永久性存储设备。 但是只有当注册表设置成AutoPart=1和AutoFormat=1时,对nandflash进行分区和格式化,才能在my device里看到nandflash的分区。如果不进行分区和格式化,只是设置AutoMount=1,就看不到nandflash的分区 ...… 查看全部问答∨ |
|
我调用ActivateDeviceEx函数动态加载编写的DLL驱动程序。 ActivateDeviceEx()对应的是XXX_Init()函数,可是调用ActivateDeviceEx函数时,不但执行了XXX_Init()函数,打印输出显示还执行了XXX_Open(),XXX_Close()函数。(我在这些函数中都加了打印 ...… 查看全部问答∨ |
我用LPC2119做一个数据采集器,用CAN通讯,用EEPROM存储参数。 现在我要实现两个不能同时运行的功能函数: 1)通过串口对EEPROM通过SPI设置参数,函数为ComCommunity(); 2)将采集到的数据通过CAN传递出去,函数为CanCommunity(); 由于(1)不 ...… 查看全部问答∨ |
Design Strategies for PCB DecouplingView Details Who: Signal Integrity Engineers Power Integrity Engineers Digital Designers What:Learn new design strategies for PCB decoupling analysis; including new methods ...… 查看全部问答∨ |