|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式软件开发过程 > 嵌入式软件设计 > 嵌入式软件的设计约束 >
|
考试要求:掌握
相关知识点:7个
|
|
|
|
(1)如果应用任务对系统响应时间要求非常高,应使用抢占式的调度方法。抢占式调度总能保证最高优先级的任务在运行,并且该最高优先级任务的执行是确定的,其任务级响应时间可以最小化。
|
|
|
(2)如果系统采用并发处理方式,那么就应该考虑函数的可重入性。正在执行非可重入函数的任务被抢占后,可能会导致数据的破坏。采用可重入函数可以解决上述问题。可以通过仅使用局部变量(CPU寄存器变量或栈中的变量),或者在使用全局变量时对其进行互斥保护来实现可重入。
|
|
|
(3)如果软件需要使用互斥机制,那么优先考虑使用操作系统提供的互斥机制。当多个任务间通过共享数据结构进行通信时,需要实现互斥,以保证数据不会被破坏。如果选用了操作系统,优先考虑使用操作系统提供的互斥机制,如互斥信号量等。
|
|
|
(4)任务与任务之间、任务与中断之间需要访问共享资源时应使用互斥机制。共享资源包括全局数据、端口、内存地址等,对这些共享资源进行访问需采用互斥机制。
|
|
|
(5)调用函数后,检查返回值。不应认为调用的函数一定是正确执行的,建议调用后立即检查其返回值,并做相应处理。
|
|
|
(6)对于计算系统的安全关键子系统编写故障检测和隔离程序。故障检测程序必须设计成在这些有关安全关键功能执行之前检测潜在的安全关键失效。故障隔离程序必须设计成将故障隔离到实际的最低级,并向操作员或维护人员提供这个信息。
|
|
|
(7)通过数据隐藏的方式实现全局数据的保护。借鉴面向对象设计中数据封装的思想,将全局数据封装为抽象数据类型,不允许任务直接访问该全局数据,而是通过与该全局数据配套的函数来访问,并且在访问该全局数据时进行互斥保护。
|
|
|
(8)仅在软件初始化时完成空间分配。软件正常状态不释放内存。动态的内存释放与分配会导致产生内存碎片,可能存在空闲空间总和满足要求,却申请不到内存的情况,从而导致软件行为的不确定性。
|
|
|
(9)变量使用前应初始化。特别是静态变量,不能依赖编译器对其进行初始化设置,应将其人工设置为特定的值。
|
|
|
(10)应将硬件设备初始化为确定状态。不能想当然地认为硬件设备上电后就处于某种状态,而应该人工将其设定为某种状态。
|
|
|
(11)延时设计应避免采用循环的方法。采用循环方法延时在代码优化时可能出现错误。建议借助硬件高精度时钟实现延时。如由于硬件条件限制只能采用循环延时方法,应考虑编译器优化和硬件特性问题,并在软件设计文档中进行特别说明,如增加防止编译优化,及要求使用何种硬件。
|
|
|
(12)应确保延时使用的时钟精度满足延时误差的要求。
|
|
|