一.潜在的危机
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仿真器接口图
推荐阅读
史海拾趣
随着电子行业的快速发展,Capar Components Corp意识到只有不断创新才能在市场中立足。于是,公司加大了对研发的投入,引进了一批高素质的技术人才。经过数年的努力,公司成功研发出了一种新型的高性能集成电路,这一创新不仅提升了产品的性能,还降低了生产成本,使公司在市场上获得了更大的竞争优势。
Dowosemi公司一直将产品质量视为企业的生命线。他们建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都进行严格的把控。此外,公司还定期对员工进行质量培训,确保每一位员工都能深刻理解并贯彻执行质量标准。这种对质量的坚持让Dowosemi公司的产品在市场上赢得了良好的口碑。
Able Systems公司成立于1982年,初创时期面临着资金短缺、市场竞争激烈等诸多挑战。然而,公司凭借对微型打印机技术的深刻理解和独特见解,成功开发出了具有竞争力的产品。通过不懈的努力和持续的技术创新,Able Systems逐渐在市场中站稳了脚跟,并赢得了客户的信任。
品质一直是BLT Circuit Services公司的核心竞争力。公司注重品质管理,建立了严格的质量控制体系,从原材料采购到生产过程中的每一个环节都进行严格把关。正是这种对品质的执着追求,使得BLT Circuit Services的产品在行业内赢得了良好的口碑,为公司赢得了大量的忠实客户。
在追求经济效益的同时,CMOSIS公司也注重可持续发展和社会责任。公司积极采用环保材料和工艺,减少生产过程中的能源消耗和废弃物排放。同时,公司还积极参与社会公益活动,为推动社会进步和可持续发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实的基础。
请注意,以上故事是基于一般性的电子行业发展趋势和CMOS图像传感器市场的特点构建的,并未涉及CMOSIS公司的具体内部情况。如果需要更详细和准确的信息,建议直接查阅CMOSIS公司的官方资料或相关新闻报道。
Eagle-Picher公司的历史可以追溯到1843年,最初是由Edgar和他的兄弟Stephen J. Conkling在俄亥俄州辛辛那提成立的,专注于生产商业涂料颜料。随着时间的推移,公司经历了多次转型和变革。1847年,Stephen离开公司后,Edgar引入了新的合伙人威廉·伍德,并更名为康克林木业公司。随后,公司在不同的业务领域内扩展,直到1922年,Eagle-Picher正式进入电池市场,开始了其电子行业的历程。
是转帖哦 本人创业10年,9死1生,占过便宜吃过亏,辛苦过也懒惰过,看到这个论坛里面充斥着大量的没有创业经验的人在指导别人创业,另有大量由于缺乏思路赔光家底的故事,本人非常痛心,本着救人加吹牛的心态特将本人独家秘籍和盘托出,以免大家少走弯路 ...… 查看全部问答∨ |
|
大量复杂VHDL程序范例不同方式实现的8线-3线编码器 D触发器 奇偶校验 多路选择器 多输入与门 编码器/译码器 D触发器 分频器BCD-七段译码器 RAM/ROM ROM初始化 移位寄存器 状态机 LED显示译码 加法器 乘法器 多路选择器 寄存器 ...… 查看全部问答∨ |
|
本人现在正在预研一个项目,硬件平台是SAMSUNG S3C2443,我做2440的BSP开发两年,OS是WINCE5.0,现在一下跳到2443,心里没底,主要是要加ATA和WIFI功能,目前对2443了解不是很多,仅仅是粗略的读过DATASHEET,目前,计划买个开发包(重点是驱动), ...… 查看全部问答∨ |
|
小弟正学习注册表的操作, 但是一直有个问题不明白, 注册表能做什么, 我也知道很多应用程序,驱动,系统配置信息都存在里面, 但还是不理解注册表发挥作用是什么机制,在什么时候会操作注册表, 各种信息为什么要存入注册表,它到底为什么存 ...… 查看全部问答∨ |
|
编译reg_aggr.vhd总是出现这个错误 Error:Termination notification:errors in ...\\reg_aggr.vhd prevent from further processing ------------------------------------------reg_aggr.vhd----------------------------------------------- ...… 查看全部问答∨ |