下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、欢迎访问Freekaoyan论文站在Windows2000下用多线程实现1394串行总线通信欢迎访问Freekaoyan论文站 欢迎访问Freekaoyan论文站摘 要:基于Windows2000环境开发了1394主控机与1394设备机间进行串行总线通信的软硬件系统,其中采用了多线程技术,并利用临界区实现线程间共享资源的同步,从而有效地解决了串行通信中的实时响应问题,降低了数据的丢失率,提高了系统的可靠性。关键词:多线程;1394总线;线程同步1 引言 为了便于LS-1394物理层、链路层芯片设计课题
2、的研究,我们采用FPGA和ISA总线开发了基于TI公司的TSB41AB3和TSB12LV01的ISA-1394的1394总线接口卡,并在Windows2000环境下开发了一套利用多线程技术实现1394主控机与1394设备机之间进行串行通信的软件系统。2 硬件部分 硬件部分主要包括:1394主控机、1394设备机、PCI-1394卡、ISA-1394卡。其中,PCI-1394卡是TI公司的1394总线接口芯片控制卡,该卡插在1394主控机的PCI插槽中;ISA-1394卡是利用一块型号为EPM7256AETC144-5的FPGA、一块TI公司的TSB12LV0
3、1链路层芯片和一块TSB41AB3物理层芯片自行设计的1394总线接口芯片控制卡,该卡插在1394设备机的ISA插槽中。1394主控机和1394设备机之间通过1394接口进行串行通信,传输介质为1394线缆。硬件结构图如图1所示。 3 软件部分 软件设计主要包括1394主控机端和1394设备机端两大部分,由于1394主控机端有现成的demo应用程序,所以软件设计主要针对1394设备机端。1394设备机端的编程环境是WinDriver 5.0 和VC+6.0。 1394串行总线有两种通信方
4、式:等时通信和异步通信。异步通信采用的是请求/应答模式,数据传输可靠性较高,因此这里主要讨论异步通信。1394串行总线异步通信的原理为:发送数据包时,等待发送器空闲,将数据包写到1394链路层芯片的发送FIFO中发送出去;接收数据包时,一旦有数据包到达,接收器会将数据包放到1394链路层芯片的接收FIFO,接收到数据包后必须立即发送一个应答包,否则,对方会重发此数据包,直到重发次数到。需注意的是,用户必须自行访问接收FIFO查看是否有数据包并及时地取出数据包,否则就会使接收FIFO溢出,丢失数据,造成通信出错。 在串行通信程序设计中,通常采用定时查询或中断来
5、解决上述问题,其中采用中断的方法比定时查询法拥有更高的工作效率和可靠性,因此本系统采用中断法来完成1394串行总线的数据通信。 为了实现数据处理和数据接收及发送的分离,本系统引入了多线程技术。在应用程序的主线程之外再创建一个用户线程,即中断处理线程,在中断处理线程中实现数据包的接收和发送。如果接收中断到来,中断处理线程就负责取出接收FIFO中的数据,放到用户定义的接收缓冲区rBuf中;如果发送中断到来,中断处理线程就负责从用户定义的发送缓冲区sBuf中取出数据放到发送FIFO中发送出去。主线程负责调用解释处理程序对rBuf中的数据包进行解释处理,或者调用其它
6、程序给sBuf中写请求数据包。 由于多个线程可以访问同一进程中的公共数据,所以使用多线程的过程中需要注意的问题是如何防止两个或两个以上的线程同时访问同一个数据,以免破坏数据的完整性。在本系统中,当中断处理线程从发送缓冲区sBuf取数据包,此时若有一个线程正给发送缓冲区sBuf写数据包,这样就存在访问发送缓冲区sBuf资源的冲突,即所谓的线程不同步问题。针对该问题,系统中采用临界区来加以解决。它可保证在某一个时间只有一个线程可以访问sBuf,通过在不同的线程中设置一个共享的临界区对像,无论哪个线程占有临界区对像,都可以访问受保护的sBuf,这时候其它的线程需要
7、等待,直到该线程释放临界区对像为止。临界区被释放后,另外的线程可以强占这个临界区,以便访问sBuf。 基于多线程技术的1394串行总线通信系统软件结构如图2所示。 各模块的功能如下: 1) 主线程:响应用户的输入,提供前端的人机交互界面;完成线程的创建、终止及线程间的同步;接收线程发来的消息,并调用相应的线程处理程序; 2) 中断处理线程:当接收中断到来时,接收GRF中的数据包放到接收
8、缓冲区rBuf,并向主线程发送接收到数据包的消息,当发送中断到来时,从发送缓冲区sBuf中取出数据包写到ATF中; 3) 解释处理程序:从接收缓冲区rBuf中取出数据包进行解释处理后放到dataBuf,并构造响应包放到发送缓冲区sBuf中; 4) 初始化程序:初始化串口资源及程序设置; 5) 其他程序:从数据缓冲区dataBuf中取数据进行进一步处理,或者给发送缓冲区sBuf中写请求数据包。 该软件采用多线程技术,使前端人
9、机交互部分、中间处理部分和后台的串口通信部分并行处理,让耗时的I/O通信在后台运行,在大数据量通信的情况下对改善程序的响应速度是相当有效的。 1394设备机端的程序主要由ISA接口卡的驱动程序、初始化程序、中断处理程序及解释处理程序四大主要部分组成。 由于WinDriver具有强大的设备驱动开发能力,支持用户模式下直接对硬件进行访问,并且WinDriver提供的驱动程序开发向导DriverWizard可以自动生成驱动程序框架,大大降低了设备驱动程序的开发难度,减少了开发时间,所以ISA接口卡的驱动程序在WinDriver下
10、开发。驱动程序主要完成对ISA接口卡的I/O地址读写及对硬件中断的处理。该ISA卡的I/O端口地址为:0x3000x510;中断号为9。 在开始通信前,首先要对串口资源、链路层寄存器及程序设置进行初始化,其中包括链路层寄存器初始化、打开驱动设备、打开硬件中断、定义临界区对像及收发缓冲区等工作。 CCriticalSection m_cs; InterruptHandle()是一个全局的中断处理函数,它一直在等待硬件中断,一旦有中断到来就立即响应。具体
11、形式如下:UINT InterruptHandle (LPVOID wParam) while(1) ISA_WriteByte(0x502,0x01); >"file:/开/">中断WD_IntWait(hWD,&Intrp); >"file:/等/">待中断
12、 >"file:/判/">断中断类型,复位中断寄存器if(RxDta)
13、60; >"file:/接/">收中断 Data = QuadletReadLLC(GRFStatusReg); >"file:/读/">GRF状态寄存器 WriteCount = (BYTE)Data & 0xff; >"
14、file:/获/">得接收数据包的大小 pt = (PLISTBLOCK)malloc(sizeof(LISTBLOCK); >"file:/申/">请节点pt存放数据包pd = (DWORD*)malloc(WriteCount*sizeof(DWORD);pt->pdata = pd; pt->next = NULL; for(i=0;i<=WriteCount;i+,pd+)
15、160; >"file:/读/">GRF的数据 *pd = QuadletReadLLC(GRFReg); ps = &rBuf;
16、0; >"file:/给/">链表rBuf尾插入数据节点pt while(ps->next!=NULL) ps=ps->next; ps->next = pt; SendMessage(hWnd,WM_MY_MESSAGE,0,0); >"file:/发/">送接收到数据包的消息 if(TxRdy) &
17、#160; >"file:/发/">送中断 m_cs.Lock();
18、60; >"file:/锁/">定临界资源 p = &sBuf; if(p->next!=NULL) >"file:/sBuf/">不为空
19、; pd = p->pdata; sBuf->next = p->next; >"file:/删/">除链表sBuf的第一个节点 free(p
20、); >"file:/释/">放p
21、60; QuadletWriteLLC(ATF_First, *pd); >"file:/写/">第1个Quadlet到ATFpd+; for(i=1;i<=WriteCount-2;i+,pd+) >"file:/第/">2(WriteCount-1)个Quadlet QuadletWriteLLC(ATF_Continue, *pd); QuadletWriteLLC(ATF_ContinueUpdata, *pd);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国地质器材行业投资前景及策略咨询研究报告
- 2024至2030年微机控制硬支承动平衡机项目投资价值分析报告
- 2024至2030年家居挂袋项目投资价值分析报告
- 2024至2030年哑光丝绸内墙乳胶漆项目投资价值分析报告
- 2024至2030年不锈钢雕刻工艺品项目投资价值分析报告
- 2024年中国陶瓷异鞍环填料市场调查研究报告
- 2024年防静电牛仔服项目可行性研究报告
- 2024年针线拉钩项目可行性研究报告
- 2024年豪华型电子根尖测定仪项目可行性研究报告
- 2024年中国营养壮骨粉市场调查研究报告
- 《土地增值税培训》课件
- 山东师范大学形势与政策期末复习题
- 预防医学模考试题(附答案)
- 精神病药物与药物性肝损伤
- (统编版2024)语文七年级上册 第四单元写作《思路要清晰》 课件(新教材)
- 2024年教师资格考试高中面试英语试题及答案指导
- 老年病人重症护理
- 期末练习卷(试题)-2024-2025学年四年级上册数学沪教版
- 2024人教版七年级语文上册第六单元-大单元整体教学方案
- 安徽省淮南市2023-2024学年八年级上学期期末语文试题(附答案)
- 【课件】 2024消防月主题培训:全民消防 生命至上
评论
0/150
提交评论