> 技术文档 > 电信设备中处理器与ARINC429总线的通信方法实战

电信设备中处理器与ARINC429总线的通信方法实战

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:处理器与ARINC429总线的通信在电信设备运行中扮演关键角色。ARINC429总线是航空电子设备中使用的标准,采用单向、串行通信方式,具备错误检测和容错能力。文章深入探讨了实现处理器与ARINC429总线通信的关键技术,包括接口电路设计、数据编码、时序控制、错误检测与恢复,以及驱动程序和软件支持的开发。这些技术要素是确保电信设备稳定性、可靠性和兼容性的基础。
电信设备-处理器和ARINC429总线的通信方法.zip

1. ARINC429总线标准介绍

ARINC429总线是航空电子系统中广泛采用的串行数据总线标准。它于1977年由航空无线电公司(Aeronautical Radio, Incorporated, ARINC)发布,并主要应用于飞机的飞行控制系统、导航系统、监控系统等关键部分。ARINC429标准提供了一种稳定可靠的数据传输方式,确保飞行过程中的信息能够准确无误地传递给相应的电子设备。

1.1 ARINC429的定义和特点

ARINC429总线被定义为双线、差分信号、半双工的通信方式,使用32位数据字进行信息的传递。数据格式包括源/目的地址、数据和状态/控制信息。其设计特点保证了数据传输的高可靠性,即便在电磁干扰较为严重的飞机内部环境也能稳定工作。

1.2 ARINC429总线的应用

ARINC429总线在现代飞机中的应用非常广泛,包括但不限于:

  • 飞行控制系统 :作为飞机的中枢神经系统,传递关键的飞行参数和指令。
  • 导航系统 :在飞行过程中提供实时的位置、速度等导航信息。
  • 监控系统 :对飞机的各种操作状态进行实时监控,保证飞行安全。

1.3 ARINC429总线的技术优势

ARINC429总线相较于其他总线技术,在航空电子领域具有以下技术优势:

  • 传输速率 :传输速率适中(约100kbps),适用于传输大量传感器数据。
  • 抗干扰能力 :差分信号传输有效提高了抗干扰能力。
  • 系统简化 :由于其简单的设计,使得系统集成和维护更为容易。

总而言之,ARINC429总线在航空电子系统中的关键角色不可替代,是确保飞行安全和效率的重要技术之一。随着技术的发展,ARINC429也在不断演进以适应新一代航空电子系统的需要。

2. 处理器与ARINC429总线通信的技术要素

2.1 通信协议的基础知识

2.1.1 ARINC429协议的起源和应用场景

ARINC429协议最初由航空无线电公司(Aeronautical Radio Incorporated,简称ARINC)开发,用于航空电子设备间的串行数据交换,以替代早期的并行数据总线。它是航空电子设备通信的主要标准,被广泛应用于飞机的飞行控制系统、导航系统、通信系统和监控系统中。

ARINC429协议提供了清晰的物理层和数据链路层规范,确保了数据在传输过程中的可靠性和有效性。其设计考量了航空电子设备的特殊需求,比如高可靠性和抗干扰能力。ARINC429协议通过将数据以32位长的消息格式进行传送,支持异步串行通信,适合在飞机振动和电磁干扰环境下使用。

在实际应用中,ARINC429总线常用于飞机的飞行数据记录器(black box)与各个传感器之间的数据交换,以及飞机的中央维护计算机与各个分系统之间的通信。此外,它也适用于其他需要稳定可靠数据传输的场合,例如军事和宇航系统。

2.1.2 通信协议的层次结构和作用

通信协议的层次结构基于开放系统互联(OSI)参考模型,通常分为七层,分别对应物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。ARINC429协议主要涉及OSI模型中的前两层:物理层和数据链路层。

物理层定义了ARINC429总线的电气特性和物理连接方式,确保数据能够通过物理媒介正确传输。数据链路层则主要负责数据帧的封装和拆分、错误检测、以及确保数据的正确顺序和流控制。

ARINC429协议的作用在于为航空电子设备提供了一个标准化的通信手段,使得不同制造商生产的设备可以无缝连接和交换信息。这种标准化的通信协议降低了系统的复杂性,提高了互操作性,并且通过提供良好的错误检测和控制机制,增强了通信过程的可靠性。

2.2 处理器与ARINC429总线的接口技术

2.2.1 接口电路的设计原理

处理器与ARINC429总线的接口电路设计原理是将处理器的通信接口适配至ARINC429协议要求的数据格式和电气特性。接口电路包括发送器(Transmitter)和接收器(Receiver)两部分。

发送器负责将处理器的数据编码为符合ARINC429协议的32位消息格式,并通过适当的电气接口(比如差分信号)发送出去。发送器电路设计的关键在于确保信号的稳定性和满足传输速率的要求。

接收器则负责从ARINC429总线上接收数据,进行同步和解码,最终将数据传递给处理器。接收器需要能够处理高速数据流,并具备良好的抗干扰能力。

2.2.2 信号传输的特点和要求

ARINC429信号的传输特点在于其为差分信号传输,这样可以有效地减少电磁干扰,保证数据传输的准确性和稳定性。每个ARINC429信号由两根导线组成,导线间的电位差表示数据位的状态。

在设计信号传输线路时,需要考虑传输速率(100 kbit/s)、信号强度、传输介质(通常是双绞线)等因素。同时,ARINC429总线使用的是广播式通信,意味着多个接收器可以从一个发送器接收到相同的数据。

此外,接口电路设计中还需要包括信号的放大和过滤,保证信号到达接收器时的稳定性和准确性。由于信号在长距离传输后会衰减,接口电路的设计应包含信号增强机制,如使用驱动器放大信号。同时,信号过滤可以消除高频噪声,进一步提高信号质量。

2.3 通信过程中的同步与异步技术

2.3.1 同步通信的机制和优势

同步通信是一种通信机制,它要求通信双方在时间上保持精确的同步,确保数据可以以预定的速率和顺序正确传输。ARINC429协议支持同步通信,它通过数据帧的同步字段来实现。

同步字段位于每个ARINC429消息的开始位置,包含同步位模式,使接收器能够准确识别消息的开始和结束。这种方式确保了数据的同步传输,减少了数据包碰撞和数据错位的可能性。

同步通信的主要优势在于它的稳定性和低延迟。因为数据传输是连续的,不需要额外的控制信息来管理通信过程,因此减少了通信过程中的开销。这对于实时性要求高的航空电子设备来说非常重要。

2.3.2 异步通信的应用场景和处理方法

尽管ARINC429标准主要设计为支持同步通信,但在一些特殊的应用场景中,也会用到异步通信。异步通信不要求发送和接收设备之间有严格的时序同步,这对于非实时通信和低速数据交换来说更为适合。

在异步通信中,处理器通过接口电路发送数据时,不需要等待特定的时钟信号。这种方式简化了通信过程,使得数据发送更加灵活。然而,由于缺乏同步机制,异步通信的可靠性相对较低,容易受到时钟漂移和噪声的影响。

为了在ARINC429系统中处理异步通信,通常采用特定的协议机制,例如定时发送消息,或者在数据帧中加入额外的控制字段,如起始位和停止位。这些机制可以帮助接收器正确地识别和解析异步数据包,尽管需要额外的处理步骤。

在设计ARINC429系统的接口电路时,需要考虑到同步和异步通信的技术要求,并选择合适的通信模式以满足应用场景的特定需求。这通常涉及到硬件设计的复杂性和软件编程的灵活性,需要综合考量系统的整体性能和成本效益。

3. 接口电路设计与协议转换

3.1 接口电路设计的基本要求

3.1.1 电路设计的关键技术参数

在设计ARINC429接口电路时,必须考虑以下几个关键技术参数:

  • 电气特性 :ARINC429标准规定了总线的电气特性,包括信号的电平范围、输出驱动能力、输入阻抗要求等。设计时应确保电路满足这些电气参数,以保证信号的完整性和设备的兼容性。
  • 信号完整性 :信号在传输过程中的质量直接影响到数据的准确性和系统的可靠性。这需要在设计中考虑到信号的反射、串扰、噪声等因素,并采取相应措施进行优化。

  • 防护设计 :航空电子设备面临复杂的工作环境,因此接口电路设计必须考虑防雷击、防静电、过压保护等防护措施。

3.1.2 硬件实现的考虑因素

硬件实现中需要特别注意的几个因素如下:

  • 芯片选择 :ARINC429接口芯片的选择是设计中的关键。通常需要选择支持ARINC429标准、具有较高可靠性和工业级温度范围的专用芯片。

  • 布线和封装 :电路板的布线和封装对于信号完整性和电磁兼容性至关重要。设计时应尽量使用多层板,合理布局高速信号线,避免干扰。

  • 功率管理 :根据处理器和总线的工作电压和电流需求,设计合理的电源管理方案,保证供电稳定性和效率。

3.2 协议转换的基本原理与方法

3.2.1 从ARINC429到处理器的数据转换过程

ARINC429总线协议是一种串行传输协议,每条消息由32位组成,分为标签字段(Label)、数据字段(Data)、符号/状态字段(SSM)和奇偶校验位(PARITY)。数据转换过程需要实现以下步骤:

  • 接收信号 :首先,接口电路通过专门的ARINC429接收器获取传输信号。
  • 解码处理 :接着,对接收到的信号进行解码,提取出有效载荷信息,包括标签、数据和状态。
  • 格式转换 :然后,将ARINC429协议的数据格式转换为处理器可以识别的格式,如并行数据、字节序列等。
  • 错误校验 :最后,进行必要的错误检测和校验,确保数据的正确性。

3.2.2 数据格式和速率的匹配技术

为了实现ARINC429与处理器之间的无缝通信,必须解决数据格式和传输速率的匹配问题。以下是常见的匹配技术:

  • 速率适配 :ARINC429标准的传输速率固定为100 Kbit/s,而处理器的处理速度可能远高于此速度。速率适配通常通过缓存机制来实现,以平衡两者之间的速度差异。

  • 数据重组 :ARINC429总线以32位为单位传输数据,而处理器可能以字节为单位处理数据。因此,需要进行数据重组,将接收到的32位数据分解成字节,并按照处理器的通信协议进行打包。

  • 协议适配 :协议适配涉及将ARINC429的特定数据字段转换为处理器的通信协议所要求的数据格式。这可能需要额外的软件处理,如使用微控制器来管理数据的格式转换。

// 以下代码示例展示如何使用伪代码实现从ARINC429接收到的数据进行解码和转换的过程// 请注意,这不是真实的代码,仅用于说明概念void decode_and_convert_arinc429_to_processor(char* arinc_data) { // 假设 arinc_data 是一个包含32位ARINC429数据的数组 // 解码ARINC429数据帧 label = extract_label(arinc_data); data = extract_data(arinc_data); ss = extract_ssm(arinc_data); parity = calculate_parity(arinc_data); // 验证奇偶校验位 if (check_parity(arinc_data, parity) != true) { // 处理奇偶校验错误 handle_parity_error(); return; } // 根据标签和状态字段决定数据格式转换的策略 switch (label) { case TEMPERATURE_LABEL: processor_data = format_temperature_data(data); break; case PRESSURE_LABEL: processor_data = format_pressure_data(data); break; // 其他标签的处理... } // 将数据传送到处理器进行进一步处理 send_to_processor(processor_data);}

上述代码展示了一个抽象的过程,从ARINC429总线接收到数据,进行解码和格式转换,最终转换为处理器可以识别的格式。实际实现中,解码函数、格式化函数和错误处理函数将更复杂,并需要根据实际硬件和处理器的要求进行编写。

graph LRA[ARINC429数据帧] -->|解码| B(提取标签/数据/SSM)B -->|奇偶校验| C{校验正确?}C -->|是| D(格式转换)C -->|否| E(处理奇偶校验错误)D --> F[处理器数据]E --> A

通过上述流程图和代码逻辑,可以看出从ARINC429总线接收信号到处理器数据处理的完整流程。这包括了解码、校验和格式转换等关键步骤,每一环节都需要准确无误地执行以保证数据的准确性和通信的可靠性。

4. ARINC429数据编码规则

4.1 数据帧的结构和编码

在ARINC429协议中,数据帧是信息传递的基本单位,其结构和编码规则确保了数据的准确传递。数据帧由5个部分组成:标号字段(Label),数据字段(Data),源/目的地识别符(SDI),奇偶校验位(PARITY),和状态/指示位(SSM)。每个部分都承载着特定的含义和编码要求。

4.1.1 数据位的排列和顺序

ARINC429协议规定每个数据帧包含32位,被分为四组,每组8位,每组的排列顺序为最高有效位(MSB)到最低有效位(LSB)。数据位的排列顺序直接关系到数据的实际值,因此正确编码和解读数据位是至关重要的。

flowchart TD A[数据帧] --> B[标号字段 Label] A --> C[数据字段 Data] A --> D[源/目的地识别符 SDI] A --> E[奇偶校验位 PARITY] A --> F[状态/指示位 SSM]

数据位按照这个顺序排列,使得数据的解读从左到右依次进行,保证了数据在ARINC总线上的传输的一致性和准确性。

4.1.2 差错控制位的计算和应用

差错控制在ARINC429中主要由奇偶校验位(PARITY)来实现。奇偶校验位是一个额外的位,用于确保数据帧中1的数量是奇数或者偶数,具体取决于系统的要求。这样,接收器可以通过检查数据位和奇偶校验位的一致性来检测潜在的单比特错误。

奇偶校验位的计算方法是将数据帧中的所有位(除PARITY位本身外)进行异或运算(XOR)。如果得到的结果为1,则设置PARITY位为1,以确保整个数据帧中1的总数为偶数(偶校验)。反之,如果结果为0,则PARITY位为0,保持数据帧中1的总数为奇数(奇校验)。

// 伪代码示例uint32_t dataFrame; // 32位数据帧bool parity = false; // 奇偶校验位// 计算PARITY位for(int i = 0; i > i) & 0x01);}// 根据偶校验设置PARITY位dataFrame &= ~(1 << 31); // 清除第32位if(parity) { dataFrame |= (1 << 31); // 设置第32位为PARITY位}

差错控制位是数据完整性的关键。在实际应用中,接收方会对数据帧的PARITY位进行校验,来确认数据是否在传输过程中发生改变。如果发现错误,接收方通常会忽略该数据帧或者要求重新发送。

4.2 标号字段的功能和规则

4.2.1 标号字段的意义和分类

标号字段(Label)是ARINC429数据帧中的首要组成部分,它标识了数据帧的内容和发送源。ARINC429规定了标准的标签值,涵盖了一系列的飞行器系统信息。标签值由11位组成,允许有2048种可能的组合,其中一些被预留给特定的用途,如系统时间、测试信息等,而其他的则根据具体系统自定义。

标号字段的分类依据其功能和传输的内容,可以分为以下几类:

  • 数据源识别标签 :用于指示数据的发送源,例如发动机参数或飞行控制系统的信号。
  • 系统功能标签 :指示数据所代表的系统功能,如导航、飞行控制、发动机性能等。
  • 测试和维护标签 :用于系统测试和维护过程中的特殊功能标识。

4.2.2 特殊标号的应用和解析

特殊标号(也称为“非标准”标号)在飞行器控制系统中占据着重要的位置。这些标号被用于那些未在标准中定义的特殊用途。例如,一个自定义的应用程序可能会使用一个未分配的标准标签,以传输特定的控制命令或数据。

在应用特殊标号时,系统设计者必须遵循几个关键规则:

  • 唯一性 :确保每个特殊标号在整个系统中是唯一的,以避免混淆和潜在的错误。
  • 文档化 :特殊标号的使用必须被详细记录在相关文档中,包括其含义、数据格式和数据源。
  • 兼容性 :特殊标号的定义要保证与现有ARINC429标准的兼容性,不能引起与标准数据的冲突。

解析特殊标号需要对使用它们的应用场景有深入的理解。例如,在飞行控制软件中,某个特殊标号可能代表特定的控制命令,而该命令的格式和传输条件则可能与标准命令有所不同,需要单独的处理逻辑。

| 特殊标号 | 描述 | 应用 ||-----------|------|-------|| 1234 | 自动油门设定 | 发动机控制系统 || 5678 | 机载维护日志 | 飞行数据记录仪 || 90AB | 特殊测试命令 | 飞行器测试平台 |

在解析特殊标号时,软件通常会对照预定义的标号表,将二进制代码转换为具体的含义。这种转换过程需要与硬件接口同步,并且要保证转换逻辑的准确性和鲁棒性。

了解和正确应用ARINC429数据帧的结构和编码规则是确保系统间正确、高效通信的基础。通过对数据位排列顺序和差错控制位的理解和应用,以及对标号字段意义的深入研究,系统设计者可以有效地构建符合ARINC429协议要求的数据通信系统。

5. 时序控制要求与实现

5.1 时序分析的基本理论

时钟频率和信号的同步问题

在ARINC429总线系统中,时钟频率的稳定性对于信号同步至关重要。由于ARINC429协议采用的是异步串行通信方式,因此对于时钟频率的要求非常高。时钟频率的波动会影响数据传输的准确性和可靠性。

时钟频率偏差过大会导致位同步出现问题,进而使得接收到的数据发生位错。因此,系统中的每个组件都必须具有高度精确的时钟源,以确保在不同的工作条件下,都能保持稳定的时钟频率。

时序要求的严格性和容错性

为了保证数据传输的准确无误,ARINC429总线协议对时序要求非常严格。这意味着设备的时序设计必须考虑最大可能的容错范围,以应对实际应用中可能遇到的温度变化、电压波动等环境因素。

一个典型的设计策略是使用硬件时序控制,结合软件的容错处理机制,来确保整个系统的鲁棒性。这可能包括时钟补偿技术,以及在软件层面对接收到数据进行校验和纠错。

5.2 时序控制技术的实现方法

硬件时序控制的设计

硬件时序控制的设计通常通过专用的时序控制器来实现,例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)。这些控制器能够提供精确的时钟信号,确保数据同步。

在设计硬件时序控制时,通常需要考虑以下因素:

  • 时钟信号的产生和分频
  • 信号传输的时序布局
  • 时钟域之间的同步处理

以下是一个简单的示例代码块,展示了如何在FPGA中配置一个时钟分频器:

module clock_divider( input clk, // 输入时钟信号 output reg out_clk // 输出分频后的时钟信号);// 参数定义,用于确定分频比parameter DIVIDE_BY = 2;// 寄存器定义,用于存储时钟周期计数reg [31:0] counter;always @(posedge clk) begin if(counter >= (DIVIDE_BY-1)) begin counter <= 0; out_clk <= ~out_clk; end else begin counter <= counter + 1; endendendmodule

在上述代码中,定义了一个名为 clock_divider 的模块,它接收一个时钟信号 clk ,并产生一个分频后的时钟信号 out_clk 。分频比例由参数 DIVIDE_BY 决定,这个值定义了 counter 寄存器的溢出点。

软件时序控制的策略

软件时序控制通常涉及到驱动程序中的定时器管理和中断服务例程。软件需要能够处理不同类型的定时事件,并且需要能够应对由时钟漂移或其他不确定性因素引起的同步问题。

在软件层面上,一个关键的实现方法是利用操作系统提供的定时器功能,以确保定时事件的准确触发。此外,驱动程序还必须能够处理异常情况,例如中断服务例程的延迟调用。

下面是一个简化的示例,展示了Linux内核中定时器的使用:

#include #include static struct timer_list my_timer;void my_timer_callback(struct timer_list *timer) { pr_info(\"my_timer_callback called (%ld).\\n\", jiffies);}int init_module() { int ret; // 初始化定时器 timer_setup(&my_timer, my_timer_callback, 0); // 设置定时器超时时间(以jiffies为单位) ret = mod_timer(&my_timer, jiffies + msecs_to_jiffies(1000)); if (ret) pr_info(\"Error in mod_timer\\n\"); return 0;}void cleanup_module() { int ret; // 删除定时器 ret = del_timer(&my_timer); if (ret) pr_info(\"The timer is still in use...\\n\");}

在此示例中,创建了一个名为 my_timer 的定时器,并为其注册了一个回调函数 my_timer_callback 。定时器被设置为每隔1000毫秒触发一次。这是通过调用 mod_timer 函数来实现的,如果定时器尚未到期,该函数会更新定时器并将其加入到系统的定时器队列中。

在定时器的回调函数中,可以通过各种方式来处理与时间相关的工作,例如进行数据采集、处理定时事件或执行周期性的任务。

硬件和软件时序控制的相互配合是实现稳定、可靠的ARINC429通信的关键。在实际应用中,还需要考虑更多的细节和特殊情况,以及通过测试和优化来提高系统的整体性能和稳定性。

6. 错误检测与恢复机制

错误检测与恢复机制是确保通信系统可靠性的关键技术。在ARINC429总线系统中,由于环境复杂,干扰多样,以及硬件和软件的不稳定性,实施有效的错误检测与恢复是至关重要的。

6.1 错误检测技术的原理与应用

6.1.1 常见的错误类型和检测方法

在ARINC429通信系统中,常见的错误类型可以分为传输错误和逻辑错误两大类。传输错误通常是由噪声、干扰引起的信号畸变,这类错误可能影响到单个数据字或是一串数据字。逻辑错误则可能是由于硬件故障、软件缺陷或协议不匹配导致的,例如数据内容的不一致性、地址错误等。

检测方法主要包括奇偶校验、循环冗余校验(CRC)以及ARINC429特有的奇偶校验和符号奇偶校验位。奇偶校验是最简单的方法,通过对数据位进行奇偶性校验来发现错误。CRC则提供更高的错误检测率,通过计算数据字的余数来进行错误检测。ARINC429协议要求数据格式的最后一位是奇偶校验位,这是为了进一步确保数据传输的正确性。

6.1.2 错误检测的效率和准确性问题

错误检测方法的有效性和准确性直接关系到系统的稳定性和可靠性。奇偶校验由于只能检测奇数个位错误,对偶数个位错误则无能为力,因此它的效率和准确性是有限的。CRC的错误检测率相比奇偶校验大大提升,可以检测出绝大多数的单、双位错误,并能检测出所有小于等于校验字段长度的错误。

为了提高错误检测的效率和准确性,ARINC429协议还定义了针对特定数据字段的奇偶校验规则。例如,对于标识符、源/目的终端识别和数据字段,都可能有不同的奇偶校验要求,这些细节需要在实际应用中严格按照规范来实现。

6.2 错误恢复策略与实施

错误恢复策略是指在错误检测之后,如何采取措施纠正错误,或至少保持通信系统的正常运行。

6.2.1 自动重传请求(ARQ)的实现

自动重传请求(ARQ)是一种常见的错误恢复机制。在ARINC429系统中,当接收方检测到错误后,可以通过发送特定的反馈信息来请求发送方重新发送数据。ARQ的实现需要注意的是重传的条件、重传的次数限制以及超时时间的设定。

重传条件的判断通常依赖于错误检测结果,当错误检测指示数据损坏时启动ARQ。为了避免无限重传的情况,发送方通常会有重传次数的限制。超过次数限制后,如果仍然无法正确接收数据,则可能采取其他恢复措施,例如异常处理流程。

6.2.2 异常处理和系统稳定性维护

异常处理不仅仅是简单地重传数据,它还包括了一系列的错误恢复动作,比如错误日志记录、系统状态回退、以及切换到备用通信通道等。

在异常处理过程中,系统稳定性维护是关键。对于一些非关键性错误,可以通过配置容错机制来保障系统的持续运行,而无需中断服务。例如,在关键系统中,可以设置主备路径自动切换的机制,在主路径发生错误时,自动切换到备用路径继续通信,从而提高系统的整体可靠性。

在进行错误恢复时,还需要考虑到实时性和系统资源的限制。错误恢复动作不应该引入新的延迟,否则会影响通信系统的性能。同时,错误恢复策略的设计应该尽量减少对系统资源的消耗,避免因错误处理过程中的资源竞争导致系统性能下降或崩溃。

以上内容介绍了错误检测与恢复机制在ARINC429总线系统中的实现和应用,阐述了主要错误类型、检测方法、以及采取的恢复策略。在设计和实施这些策略时,必须结合实际应用场景和系统特性,合理地选择和配置,以确保通信系统的稳定性和可靠性。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:处理器与ARINC429总线的通信在电信设备运行中扮演关键角色。ARINC429总线是航空电子设备中使用的标准,采用单向、串行通信方式,具备错误检测和容错能力。文章深入探讨了实现处理器与ARINC429总线通信的关键技术,包括接口电路设计、数据编码、时序控制、错误检测与恢复,以及驱动程序和软件支持的开发。这些技术要素是确保电信设备稳定性、可靠性和兼容性的基础。

本文还有配套的精品资源,点击获取
menu-r.4af5f7ec.gif