阅读以下关于嵌入式系统软件设计方面的叙述,在答题纸上回答问题1 至问题3。
某公司承担了一项嵌入式系统软件开发项目。该项目主要用于车载电子系统中监视发动机及燃油系统等系统工作状况,并通过综合仪表显示给驾驶员。经过多次与用户沟通,形成以下技术要求:
(1)本项目的硬件平台由主处理机模块和多种接口模块组成,底板采用标准VME总线(硬件结构图见图3-1),具体硬件模块配置如下:
①主处理机模块(CPM)采用PowerPC755,主频266MHz,配有SDRAM存储器和FLASH 存储器;提供一个定时/计数器;支持16级中断和二级cache。
②输入输出模块(IOC)支持16路RS422接口信号,传输速率不低于115.2kbps,IOC 模块与CPM模块的数据交换采用64KByte双端口存储器。
③离散量接口模块(DAM)支持64路开关型离散量输入输出接口;2路频率量输入;12位A/D 转换器和12位D/A 转换器。
④图形处理模块(GPM)用于显示图形,支持OpenGL标准接口软件。
⑤MBI模块主要提供1553B 外总线接口,PSM为电源支持模块。
(2)本项目软件主要工作在CPM模块中,完成对外部设备的数据采集、分析和相应的控制,将监视结果以图形方式显示给驾驶员。该系统的软件主要包括外部接口驱动软件、VME数据传输软件、处理软件、图形显示和外总线(1553B)数据交换软件。要求数据的采集必须确保每帧数据无丢失,并在本帧内完成数据的处理工作,本帧信息显示给驾驶员的时刻最晚不能超过下帧。详细的技术要求如下:
①16路 RS422 接口主要完成对汽车燃油系统、动力系统和驾驶员命令的数据采集与控制。RS422数据传输格式将以32Byte为基本数据块,分别以20ms、40ms、60ms、1s四个不同周期交换数据。
②64路离散量数据主要监控发动机工作状态,要求每10ms采集一次,并在下一个10ms周期内将发动机状况显示到驾驶员座舱。
③多路模拟量数据主要采集发动机转速、油量以及汽车的其他数据,为驾驶员监控。
汽车状态提供必要的量化数据。模拟量数据的刷新频率为1s。
④外总线(1553B)主要完成该系统与汽车其他电子系统的数据交换。
公司将本项目交给项目主管李工实施,要求李工按技术要求完成本项目的软件设计工作,公司根据合同关于“数据的采集必须确保每帧数据无丢失,并在本帧内完成数据的处理工作,本帧信息显示给驾驶员的时刻最晚不能超过下帧”的要求,提醒李工设计中重点考虑整个系统的实时性问题。李工完成设计后,提交公司评审,会上就李工设计中存在的缺陷展开了激烈讨论,最终达成一致。
【问题1】(12 分)
李工在设计IOC模块软件时指出:为了使CPM模块能够及时处理RS422数据,在IOC 与 CPM 间的双端口存储器中为每个 422 通道设计一级缓冲,当某通道接收一个字节时,就将数据放入缓冲,由 CPM 接收(其结构见图 3-2)。这样的好处在于每当有数据输入时,CPM模块可立即读取,而增大双口缓冲的目的是在CPM来不及处理时可防止数据的丢失。同时,IOC 中的程序相对简单、实时性好、可以不考虑422通道的数据传输周期,只要按查询方式对16路422输入进行查询读取即可。
会上,王工提出了强烈的反对意见,认为这种设计方法绝对不可取,这种方法只考虑了软件的简单与便利,而没有针对软件特点考虑问题,在设计中对实时性、负载平衡分配以及实现算法上均存在缺陷,必须改进。
(1)你认为李工的设计在实时性、负载平衡分配和实现算法上存在怎样的缺陷?详细说明理由。
(2)请给出IOC 模块和CPM模块之间双口存储器数据交换方法。
【问题2】(7 分)
如果 CPM 模块中采用了嵌入式实时操作系统,请根据本项目的需求,用 300 字以内的文字说明 CPM 模块中数据采集任务应如何划分?系统对任务调度的最小调度周期如何计算?各个任务周期及优先级如何定义?
【问题3】(6 分)
请用150 字以内的文字说明针对 IOC 模块的多路 RS422 接口的数据采集,其驱动程序使用中断方式或查询方式的主要差别是什么?主要优缺点有哪些?