问答题 PH软件公司承接了一项嵌入式系统软件研发项目。该项目主要用于车载电子系统中监视发动机及燃油系统等系统工作状况,并通过综合仪表显示给驾驶员。经过多次与用户沟通,形成以下技术要求。
(1)本项目的硬件平台由主处理机模块和多种接口模块组成,底板采用标准VME总线(硬件结构图如下图所示),具体硬件模块配置如下。
①主处理机模块(CPM)采用PowerPC755,主频266MHz,配有SDRAM存储器和Flash存储器;提供一个定时/计数器;支持16级中断和二级Cache。
②输入/输出模块(IOC)支持16路RS422接口信号,传输速率不低于115.2kbps,IOC模块与CPM模块的数据交换采用64KB端口存储器。
③离散量接口模块(DAM)支持64路开关型离散量输入/输出接口;2路频率量输入:12位A/D转换器和12位D/A转换器。
④图形处理模块(GPM)用于显示图形,支持OpenGL标准接口软件。
⑤MBI模块主要提供1553B外总线接口,PSM为电源支持模块。

(2)本项目软件主要工作在CPM模块中,完成对外部设备的数据采集、分析和相应的控制,将监视结果以图形方式显示给驾驶员。该系统的软件主要包括外部接口驱动软件、VME数据传输软件、处理软件、图形显示和外总线(1553B)数据交换软件。要求数据的采集必须确保每帧数据无丢失,并在本帧内完成数据的处理工作,本帧信息显示给驾驶员的时刻最晚不能超过下帧。详细的技术要求如下。
①16路RS422接口主要完成对汽车燃油系统、动力系统和驾驶员命令的数据采集与控制。RS422数据传输格式将以32B为基本数据块,分别以20ms、40ms、60ms和1s这4个不同周期交换数据。
②64路离散量数据主要监控发动机的工作状态,要求每10ms采集一次,并在下一个10ms周期内将发动机状况显示到驾驶员座舱。
③多路模拟量数据主要采集发动机转速、油量,以及汽车的其他数据,为驾驶员监控汽车状态提供必要的量化数据。模拟量数据的刷新频率为1s。
④外总线(1553B)主要完成该系统与汽车其他电子系统的数据交换。
PH公司将本项目交给项目主管郭工实施,要求郭工按技术要求完成本项目的软件设计工作,公司根据合同关于“数据的采集必须确保每帧数据无丢失,并在本帧内完成数据的处理工作,本帧信息显示给驾驶员的时刻最晚不能超过下帧”的要求,提醒郭工在设计中要重点考虑整个系统的实时性问题。郭工完成设计后,提交公司评审,会上就郭工设计中存在的缺陷展开了激烈讨论,最终达成一致。

问答题 郭工在设计IOC模块软件时指出为了使CPM模块能够及时处理RS422数据,在IOC与CPM问的双端口存储器中为每个422通道设计一级缓冲,当某通道接收一个字节时,就将数据放入缓冲,由CPM接收(其结构如下图所示)。这样的好处在于每当有数据输入时,CPM模块可立即读取,而增大双口缓冲的目的是在CPM来不及处理时可防止数据的丢失。同时,IOC中的程序相对简单,实时性好,可以不考虑422通道的数据传输周期,只要按查询方式对16路422通道输入进行查询读取即可。
[*]
会上,柳工提出了强烈的反对意见,认为这种设计方法绝对不可取,这种方法只考虑了软件的简单与便利,而没有针对软件特点考虑问题,在设计中对实时性、负载平衡分配,以及实现算法上均存在缺陷,必须改进。
(1)结合你的系统架构设计经验,请分析郭工的设计方案在实时性、负载平衡分配和实现算法上存在怎样的缺陷?并用400字以内的文字详细说明理由。
(2)请用350字以内的文字给出IOC模块和CPM模块之间双口存储器数据交换的方法。
【正确答案】(1)实时性:在IOC接收到一个字节后就发送给CPM模块,不但影响了IOC的实时性,同时也影响了CPM的实时性。
①负载平衡分配:由于IOC是智能设备,可以独立完成RS422的数据采集,而郭工的设计方案中没有充分发挥IOC的处理能力,而加大了CPM模块负载量,使得两模块的负载不平衡。
②实现算法:基于前两个设计缺陷的存在,使得实现算法上软件的功能模块设计不完整,增大了CPM模块上的软件设计复杂度,没有有效地利用硬件资源。
(2)IOC和CPM之间的数据交换设计办法如下(包含但不限于以下方法)。
①将IOC和CPM两模块的任务负载量划分均衡,具体使IOC按每个RS422通道的32B为基本数据块进行接收,一次性地统一提交给CPM模块。
②在IOC模块中为每个通道设计1~2个32B缓冲区。IOC在接到一个字节后,将数据放入每个32B缓冲区,当一个完整的数据块接收完成后,一次性地将数据发送给CPM模块。
③IOC的软件可以使用中断方式(或查询方式)进行数据接收,一旦数据块的头字节到达后,使用查询方式连续将32个字节接收完成。
④CPM模块的通道采集程序可一次性读取完成的数据块,从而降低了CPM的数据采集负载。
【答案解析】因为嵌入式实时系统与实际应用要求结合性很高,为了满足系统总的要求,设计软件时,应充分考虑硬件平台的配置和系统的实际技术特点,掌握好这一点尤其重要。本题给出的硬件平台结构根据系统的处理量,按功能划分成了多个处理单元,考生应从题中可以隐含看出。那么,在软件设计中应充分发挥本题所给出的条件,学会使用负载平衡方法分配每个处理机所承担的任务,达到各个处理单元的负载基本相同,以增强系统的实时性。
(1)依题意,本问题设计时应重点考虑IOC处理模块和主处理模块间的任务接口功能的划分问题。郭工给出的方案不是不可行,只能说不是最优方法。郭工设计方案中的缺陷主要体现在以下两个方面:①系统实时性不是太好;②IOC和CPM工作负载不平衡。如果CPM能够有充分的处理能力(速度极快),完全可以按每个字节接收16路RS422数据,那么IOC就可以不用智能模块设计了,这样也可降低成本。但是,这样的设计要求CPM要不断响应IOC模块的数据到达请求,势必使CPM要消耗大量的时间处理此事务:从题干说明(2)中的技术要求①的描述可以看出,RS422的数据是按32B为基本数据块进行传输的,这说明数据块应是连续发送的。因此,郭工的设计方法是不可取的。只有CPM模块按每帧32B一次接收完成,才可以大大降低CPM模块任务负载,确保CPM的大部分时间处理自己的工作。基于前两个设计缺陷的存在,使得实现算法上软件的功能模块设计不完整,增大了CPM模块上的软件设计复杂度,没有有效地利用硬件资源。
(2)10C和CPM之间的数据交换设计办法如下。
①将IOC和CPM两模块的任务负载量均衡划分,具体使IOC按每个RS422通道的32B为基本数据块进行接收,一次性的统一提交给CPM模块。
②在IOC模块中为每个通道设计1~2个32B缓冲区。IOC在接收到一个字节后,将数据放入每个32B缓冲区,当一个完整的数据块接收完成后,一次性地将数据发送给CPM模块。
③IOC的软件可以使用中断方式或查询方式进行数据接收,一旦数据块的头字节到达后,使用查询方式连续将32个字节接收完成。
④CPM模块的通道采集程序可一次性读取完成的数据块,这样就降低了CPM的数据采集负载。
问答题 如果CPM模块中采用了嵌入式实时操作系统,请根据本项目的需求,用350字以内的文字说明CPM模块中数据采集任务应如何划分?系统对任务调度的最小调度周期如何计算?各个任务周期及优先级如何定义?
【正确答案】(1)按照采集任务周期划分,CPM模块中的软件应划分成一个10ms任务、一个20ms;任务、一个40ms任务、一个60ms任务、两个1s任务和一个非周期任务。其中:
·10ms任务主要负责64路离散量数据的采集、处理和显示。
·20ms任务主要负责具有20ms数据交换周期的RS422通道的数据采集。
·40ms任务主要负责具有40ms数据交换周期的RS422通道的数据采集。
·60ms任务主要负责具有60ms数据交换周期的RS422通道的数据采集。
·1s任务有两个,一个任务主要负责具有1s数据交换周期的RS422通道的数据采集;另一个任务主要负责多路模拟量的数据采集。
·非周期任务主要负责该系统与汽车其他电子系统的数据交换。
(2)系统对任务调度的最小调度周期应为所有任务周期的最大公约数,即10ms、20ms、40ms、60ms、1s的最大公约数是10ms。
(3)根据实时系统常用的小周期任务优先调度的算法,CPM上7个任务的优先级顺序应为:
非周期任务<1s任务1=1s任务2<60ms任务<40ms任务<20ms任务<10ms任务。
(优先级最低)→(优先级最高)
【答案解析】实时系统必须保证在规定的时间范围内完成预先规定的处理工作。而本题给出的多个数据采样和处理时间要求,是嵌入式实时系统设计中主要面临的设计问题。对仅有一个处理器而言,如何安排好多个任务协调处理的顺序,即任务的优先顺序,是考查考生综合设计能力最有效的方法。
本问题主要考查考生针对本题提出的不同周期任务的周期要求,在采用操作系统的情况下,如何设计CPM中不同任务的工作时序,这就要求考生对操作系统有深入的掌握,理解操作系统中任务调度的抢占式优先级调度的基本原理,并根据具体任务的时间关系,画出任务的优先级分配图。
(1)根据题干说明第(2)点对数据采集的技术要求,按照采集任务周期划分,CPM模块中的软件应划分成一个10ms任务、一个20ms任务、一个40ms任务、一个60ms任务、两个1s任务和一个非周期任务。其中:
·10ms任务主要负责64路离散量数据的采集、处理和显示。
·20ms任务主要负责具有20ms数据交换周期的RS422通道的数据采集。
·40ms任务主要负责具有40ms数据交换周期的RS422通道的数据采集。
·60ms任务主要负责具有60ms数据交换周期的RS422通道的数据采集。
·1s任务有两个,一个任务主要负责具有1s数据交换周期的RS422通道的数据采集;另一个任务主要负责多路模拟量数据采集。
·非周期任务主要负责该系统与汽车其他电子系统的数据交换。
(2)系统对任务调度的最小调度周期应为所有任务周期的最大公约数,即10ms、20ms、40ms、60ms、1s的最大公约数是10ms。
(3)根据实时系统常用的小周期任务优先调度的算法,CPM上7个任务的优先级顺序应为:非周期任务<1s任务1=1s任务2<60ms任务<40ms任务<20ms任务<10ms任务
(优先级最低)——(优先级最高)
问答题 请用200字以内的文字说明针对IOC模块的多路RS422接口的数据采集,其驱动程序分别使用中断方式和查询方式的主要差别是什么?这两种方式的主要优缺点有哪些?
【正确答案】(1)中断方式是在程序接收或发送每一个字节时,均产生中断信号,发送中断用于通知处理器一个字节已经发送完成;接收中断用于通知处理器在RS422接口中有一个字节数据达到。查询方式主要用程序读取RS422接口的寄存器,判别接口是否有数据到达或接口发送缓冲区是否为空。
(2)中断方式:及时响应数据,不会产生数据丢失;系统开销大,实现较复杂。
查询方式:软件实现简单,接收数据快,系统开销小;不能及时响应。
【答案解析】本问题要求考生理解中断方式和查询方式之间的差别,并能根据系统的具体技术要求进行综合考虑。
通常情况下,在进行嵌入式系统设计时,对于数据输入/输出处理的方法有中断驱动和查询驱动两种方式。中断方式是在程序接收或发送每一个字节时,均产生中断信号,发送中断主要通知处理器一个字节已经发送完成;接收中断主要通知处理器在RS422接口中有一个字节数据达到。中断方式具有及时响应数据,不会产生数据丢失等优点,但其系统开销大,实现较复杂。
查询方式主要用程序读取RS422接口的寄存器,判别接口是否有数据到达或接口发送缓冲区是否为空。查询方式具有软件实现简单、接收数据快,以及系统开销小等优点,但主要存在不能及时响应等缺点。例如,如果双口存储器和离散量接口是直接访问存储器,则采用查询驱动方式较合适。A/D和D/A这两种接口存在数据的转换时间,应在等待时交出处理机时间,因此选用定时查询驱动方式较合适。
由于嵌入式处理器的工作速度远远比数据传输速度快,在采集时不易消耗太多的时间,而查询驱动方式存在等待数据时间,需要消耗较多的处理机时间。因此RS422接口适合采用中断驱动方式,或者在实现时,可根据具体要求,将两种方式结合使用。