EDN China > 设计实例 > 通信 > 以太网 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于RapidIO的双主机节点嵌入式系统互联设计

/?? 2014年07月04日 ?? 收藏1

2 驱动软件设计

2.1 系统主从方式初始化

在使用RapidIO进行通信前,首先要进行RapidIO系统初始化,主要包括SRIO控制器初始化、Doorbell初始化、Message初始化、DMA初始化、RapidIO交换机初始化、RapidIO网络初始化等。

系统中采用两块CPU,两块CPU均可作为主机节点对RapidIO网络进行配置,为了保证RapidIO网络能够正常初始化,需使用主从方式的RapidIO网络初始化,初始化时由某一RapidIO节点进行主配置,实现RapidIO网络初始化,其他节点等待网络初始化成功后启动各自功能。如果进行主配置的节点出现问题,未完成RapidIO网络初始化,具有从配置功能的节点需要进行RapidIO网络初始化,以提高RapidIO网络初始化的鲁棒性。

由于TSI578设备在重复初始化时会产生异常,为了防止主从设备同时对交换机进行初始化,设计时考虑初始化时首先判断RIO_HOST_BASE _ID_LOCK寄存器是否已被锁定,若已被锁定,表明交换机已被初始化,则该节点直接跳过这一步骤。优势在于对应用而言只需提供一个初始化接口,设计人员在进行应用编程时无需考虑主设备或从设备是否已经对交换机进行了初始化,方便了应用设计。

2.2 网络映射

网络映射结果将系统中所有非主机结点的RapidIO空间映射到自己的地址空间上,不同的非主机节点根据需求不同可映射不同的起始地址和映射空间。系统中使用rioMapOutb和rioMapInb接口动态配置RapidIO网络地址映射,映射的地址长度都必须为4 kB的倍数,且地址需要对齐,映射后在此存储空间内进行通信。软件中使用的函数接口如下:

(1)STATUS rioMapOutb(UINT32 lstart,UINT32rstart,UINT32 size,UINT32 tid,UINT32 flags)rioMapOutb映射外部节点tid的以rstart开始的内存空间到本地lstart地址。

(2)STATUS rioMapInb(UINT32 lstart,UINT32rstart,UINT32 size,UINT32 flags)rioMapInb映射大小为size的本地地址lstart到RapidIO空间地址rstart;

(3)STATUS rioMapOutb4(UINT32 lstart,UINT32rstart,UINT32 size,UINT32 tid0,UINT32 tid1,UINT32tid2,UINT32 tid3,UINT32 flags)

rioMapOutb一次只能映射一个外部节点的内存空间,为了提升软件效率,使用rioMapOutb4接口一次性对4个外部节点进行映射。

2.3 网络通信

RapidIO的网络通信主要有消息、门铃、Nread和Nwrite等方式。软件中使用的函数接口如下:

(1)void rioSendMsg(BYTE localPort,BYTEmailBox,BYTE dstID,BYTE*msgPtr,WORD len)rioSendMsg函数接口用来在两个处理部件之间发送消息,loealPort为本地RapidIO端口号,mailBox为邮箱号,dstID为目标RapidIO ID号,msgPtr为消息内容数组指针,len为消息长度。

(2)void rioSendDoorbell(BYTE localport,BYTEdstPortID,WORD data)rioSendDoorbell函数接口发送门铃信息,门铃信息一般用于处理器间的中断。Localport为端口号,dstPortID为目标端口号,data为16位门铃信息。

(3)DWORD rioDmaNread(BYTE chan,DWORDlocaladr,DWORD rioaddr,DWORD bytecnt)应用程序调用rioDmaNread接口进行Nread操作,rioDmaNread接口调用DMA控制器直接从RapidIO空间读取数据块到本地内存空间。

(4)DWORD rioDmaNwrite(BYTE chan,DWORDlocaladdr,DWORD rioaddr,DWORD bytecnt)应用程序调用rioDmaNwrite接口进行Nwrite操作,rioDmaNwrite接口调用DMA控制器直接将本地内存空间的数据块写到RapidIO空间上。

(5)DWORD rioDmaTransfer(BYTE ehan,DWORDsouraddr,DWORD desaddr,DWORD datasize,DWORDphyNextDescPtr)rioDmaTransfer接口实现DMA传输功能,该接口使用了DMA中断功能,有阻塞,当DMA没有完成时不会退出。

2.4 Rapidio网络故障恢复

在实际应用中,RapidIO网络上的节点可能出现故障,需进行重启操作。重启后的节点,其硬件配置均回到最初状态,RapidIO部分功能(节点ID等)需要进行重新初始化,因此需进行RapidIO网络的故障恢复。

RapidIO网络的故障恢复具有以下3种基础形式:

(1)普通节点的故障恢复。主节点或从节点进行一次RapidIO网络的初始化即可恢复普通节点的RapidIO网络故障。

(2)从节点的故障恢复。需要主节点进行一次RapidIO网络的初始化。

(3)主节点的故障恢复。主节点自动恢复后从节点进行一次RapidIO网络的初始化。

在某些情况下,由于芯片上RapidIO控制器的问题,主节点无法进行自身的自动恢复。因此,在故障恢复的第3种基础形式中,仅能使用从节点进行一次RapidIO网络的初始化这种方式恢复主节点的故障。在这种情况下,主节点和从节点之间需要具有通信机制,使得主节点能够将其发生故障的事件通知给从节点,从而触发从节点进行一次RapidIO网络的初始化,完成主节点的故障恢复。主节点和从节点之间需要具有通信机制,由于主节点和从节点同属于一块板卡,且之间具有互相的中断触发功能,因此使用中断触发方式完成主节点和从节点之间的故障通知。

【分页导航】


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

RapidIO? 系统互联? 嵌入式系统? 以太网?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈