问答题
李工在设计IOC模块软件时指出:为了使CPM模块能够及时处理RS422数据,在IOC与CPM间的双端口存储器中为每个422通道设计一级缓冲,当某通道接收一个字节时,就将数据放入缓冲,由CPM接收(其结构见图2)。这样的好处在于每当有数据输入时,CPM模块可立即读取,而增大双口缓冲的目的是在CPM来不及处理时可防止数据的丢失。同时,IOC中的程序相对简单、实时性好、可以不考虑422通道的数据传输周期,只要按查询方式对16路422输入进行查询读取即可。
【正确答案】(1)从本题的第(2)项要求中的描述①可以看出,RS422的数据是按32B为基本数据块进行传输的,这说明数据块应是连续发送的。
①实时性:李工提出的在。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的数据采集负载。
【答案解析】
问答题
如果CPM模块中采用了嵌入式实时操作系统,请根据本项目的需求,用300字以内的文字说明CPM模块中数据采集任务应如何划分?系统对任务调度的最小调度周期如何计算?各个任务周期及优先级如何定义?
【正确答案】根据本题第(2)条要求中对数据采集的技术要求,按照采集任务周期划分,CPM模块中的软件应划分成:1个10ms任务、1个20ms任务、1个40ms任务、1个60ms任务、2个1s任务和1个非周期任务。其中:
●10ms任务主要负责64路离散量数据的采集、处理和显示。
●20ms任务主要负责具有20ms数据交换周期的RS422通道的数据采集。
●40ms任务主要负责具有40ms数据交换周期的RS422通道的数据采集。
●60ms任务主要负责具有60ms数据交换周期的RS422通道的数据采集。
●1s任务有2个。一个任务主要负责具有1s数据交换周期的RS422通道的数据采集;另一个任务主要负责多路模拟量数据采集。
●非周期任务主要负责该系统与汽车其他电子系统的数据交换。
系统对任务调度的最小调度周期应为所有任务周期的最大公约数,即10ms、20ms、40ms、60ms、1s的最大公约数是10ms。
根据实时系统常用的小周期任务优先调度的算法。CPM上7个任务的优先级顺序应为:
非周期任务<1s任务1=1s任务2<60ms任务<40ms任务<20ms任务<10ms任务
[*]
【答案解析】
问答题
请用150字以内的文字说明针对IOC模块的多路RS422接口的数据采集,其驱动程序使用中断方式或查询方式的主要差别是什么?主要优缺点有哪些?
【正确答案】(1)主要差别
中断方式是在程序接收或发送每一个字节时,均产生中断信号,发中断主要通知处理器一个字节已经发送完成;接收中断主要通知处理器RS422接口中有一个字节数据达到。
查询方式主要用程序读取RS422接口的寄存器,判别接口是否有数据到达或接口发送缓冲区是否空。
(2)优缺点
中断方式:及时响应数据、不会产生数据丢失、系统开销大、实现较复杂。
查询方式:软件实现简单、接收数据快、系统开销小、不能及时响应。
在实现时,可根据具体要求,将两种方式结合使用。
【答案解析】[解析] 本题主要考查考生对以下实时系统基本技术知识的掌握。
①因为嵌入式实时系统与实际应用要求结合性很高,为了满足系统总的要求,设计软件时,应充分考虑硬件平台的配置和系统的实际技术特点,掌握好这一点尤其重要。
②实时系统必须保证在规定的时间范围内完成预先规定处理工作。而本题给出的多个数据采样、处理时间要求,是嵌入式实时系统设计中主要面临的设计问题。对仅有一个处理器而言,如何安排好多个任务协调处理的顺序,即任务的优先顺序,是考查考生综合设计能力最有效的方法。
③本题给出的硬件平台结构根据系统的处理量,按功能划分成了多个处理单元,考生应从题中可以隐含看出。那么,在软件设计中应充分发挥本题所给出的条件,学会使用负载平衡方法分配每个处理机所承担的任务,达到各个处理单元的负载基本相同,以增强系统的实时性。
[问题1]
本问题主要考查考生对本题的理解能力和具体设计中如何充分发挥各自处理单元的能力。设计时应重点考虑IOC处理模块和主处理模块间的任务接口功能的划分问题。李工给出的方案不是不可行。只能说是不是最优方法。李工设计方案中的缺陷主要体现在如下两个方面:其一是系统实时性不是太好;其二是IOC和CPM工作负载不平衡,如果CPM能够有充分的处理能力(速度极快),完全可以按每个字节接收16路RS422数据,那么IOC就可以不用智能模块设计了,这样也可降低成本。但是,考生应清楚,这样的设计要求CPM要不断响应IOC模块的数据到达请求,势必使CPM消耗大量的时间处理此事务,而根据本题给出的技术说明“RS422数据传输格式将以32B为基本数据块”,因此,李工的设计方法是不可取的。只有CPM模块按每帧32B一次接收完成,才可以大大降低CPM模块任务负载,确保CPM的大部分时间处理自己的工作。
[问题2]
本问题主要考查考生针对本题提出的不同周期任务的周期要求,在采用操作系统情况下,如何设计CPM中不同任务的工作时序。这里主要考查考生对操作系统的掌握程度,理解操作系统中任务调度的抢占式优先级调度的基本原理,并根据具体任务的时间关系,画出任务的优先级分配图。这也是考核考生对实时系统的基础知识。
[问题3]
查询方式是处理器直接利用I/O指令编程,实现数据的输入输出。处理器发出I/O命令,命令中包含了外设的地址信息和所要执行的操作,相应的I/O系统执行该命令并设置状态寄存器;处理器不停地(定期地)查询I/O系统以确定该操作是否完成。由程序主动查询外设,完成主机与外设间的数据传送,方法简单,硬件开销小。
中断方式是处理器利用中断方式完成数据的输入/输出,当I/O系统与外设交换数据时,处理器无须等待也不必去查询I/O的状态,当I/O系统完成了数据传输后则以中断信号通知处理器。处理器然后保存正在执行程序的现场,转入I/O中断服务程序完成与I/O系统的数据交换。再返回原主程序继续执行。与查询方式相比,中断方式因为处理器无须等待而提高了效率。