最新嵌入式软件设计PPT课件

上传人:鲁** 文档编号:568665555 上传时间:2024-07-26 格式:PPT 页数:61 大小:2.47MB
返回 下载 相关 举报
最新嵌入式软件设计PPT课件_第1页
第1页 / 共61页
最新嵌入式软件设计PPT课件_第2页
第2页 / 共61页
最新嵌入式软件设计PPT课件_第3页
第3页 / 共61页
最新嵌入式软件设计PPT课件_第4页
第4页 / 共61页
最新嵌入式软件设计PPT课件_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《最新嵌入式软件设计PPT课件》由会员分享,可在线阅读,更多相关《最新嵌入式软件设计PPT课件(61页珍藏版)》请在金锄头文库上搜索。

1、嵌入式软件设计嵌入式软件设计嵌入式软件系统特点(一)嵌入式软件系统特点(一)实时:允许的反应时间平均在1秒以内稳定:必须能够长时间稳定运行(可靠性)简单的内存写覆盖保护内存定期回收能力系统异常监控热插拔、热备份自恢复:系统异常具备重新运行的能力软件狗启动快抢占式下任务的优缺点抢占式下任务的优缺点优点:优点:系统的实时性很好系统的实时性很好监控比较方便监控比较方便缺点:缺点:系统的临界区很多,编程的时候要考虑保护,对开发系统的临界区很多,编程的时候要考虑保护,对开发人员的经验和技术要求比较高人员的经验和技术要求比较高设计不好,容易造成系统死锁或责系统颠簸,对设计设计不好,容易造成系统死锁或责系统

2、颠簸,对设计人员的要求也比较高人员的要求也比较高问题查找不方便问题查找不方便抢占式下任务的注意事项抢占式下任务的注意事项注意保护临界区,可采用的办法有任务锁,信号量,注意保护临界区,可采用的办法有任务锁,信号量,引用计数,消息,关中断引用计数,消息,关中断任务间的接口函数中不要直接使用指针进行操作,只任务间的接口函数中不要直接使用指针进行操作,只能够当成标识来使用能够当成标识来使用对数据结构的维护操作应该集中在一个任务中进行,对数据结构的维护操作应该集中在一个任务中进行,最好是集中在低优先级的任务中,这样需要增加的保护最好是集中在低优先级的任务中,这样需要增加的保护可以很少可以很少死循环也是不

3、允许的死循环也是不允许的任务间共享区的保护任务间共享区的保护任务锁任务锁信号量信号量引用计数引用计数消息消息关中断关中断任务锁任务锁最简单,可用于对某一段代码的保护,几乎可以适用最简单,可用于对某一段代码的保护,几乎可以适用于所有的保护的地方,但是用于保护用时很长的操作过于所有的保护的地方,但是用于保护用时很长的操作过程的时候与系统的实时性会产生冲突程的时候与系统的实时性会产生冲突当前的系统中对任务锁不支持嵌套,因此在锁任务的当前的系统中对任务锁不支持嵌套,因此在锁任务的程序中不要调用系统的输出、延迟等功能程序中不要调用系统的输出、延迟等功能信号量信号量用于保护系统的某段程序或者某一个数据结构

4、的资源用于保护系统的某段程序或者某一个数据结构的资源的独占性的独占性使用比较方便,应用范围广泛,适用于对代码和整个使用比较方便,应用范围广泛,适用于对代码和整个数据结构的保护数据结构的保护占有系统资源比较大,不适于用在需要长时间锁定整占有系统资源比较大,不适于用在需要长时间锁定整表的地方,但是如果用于表项的保护则会存在数量的限表的地方,但是如果用于表项的保护则会存在数量的限制(表项少可以,表项多不太合适)制(表项少可以,表项多不太合适)使用不好可能造成系统死锁,最好不要在有互相调用使用不好可能造成系统死锁,最好不要在有互相调用关系的任务中使用信号量关系的任务中使用信号量出问题时查找问题比使用任

5、务锁困难出问题时查找问题比使用任务锁困难引用计数引用计数使用引用计数时必须使用原子操作使用引用计数时必须使用原子操作引用计数占有系统空间少,可用于保护表项和长时间引用计数占有系统空间少,可用于保护表项和长时间占用的地方,可弥补信号量的缺陷占用的地方,可弥补信号量的缺陷编程的时候比较复杂,需要增加相应的判断和处理编程的时候比较复杂,需要增加相应的判断和处理对表项的引用计数操作的地方越多,一旦出问题的时对表项的引用计数操作的地方越多,一旦出问题的时候查找起来就越困难,因此最好只用于必须使用的地方,候查找起来就越困难,因此最好只用于必须使用的地方,并且简化引用关系,三个以内的地方操作引用计数是比并且

6、简化引用关系,三个以内的地方操作引用计数是比较合适的较合适的消息消息其他任务对数据结构的操作过程都转换成消息发给一其他任务对数据结构的操作过程都转换成消息发给一个模块进行处理,自然不存在共享区的问题个模块进行处理,自然不存在共享区的问题可以解决绝大部分问题,但是编程复杂,并且对流程可以解决绝大部分问题,但是编程复杂,并且对流程的冲击比较大,效率低,适用于的冲击比较大,效率低,适用于:时间要求不敏感,并且可以进行挂起或异步处理的地时间要求不敏感,并且可以进行挂起或异步处理的地方:命令行、网管、任务监控等方:命令行、网管、任务监控等任务本身对时间要求敏感,并且不要求回应结果的地任务本身对时间要求敏

7、感,并且不要求回应结果的地方:定时器,中断,通讯任务等方:定时器,中断,通讯任务等任务的划分原则任务的划分原则任务是处理事务的单元,可以是多个功能的集合,是模任务是处理事务的单元,可以是多个功能的集合,是模块在系统中的体现。在任务的划分中,要体现数据流与块在系统中的体现。在任务的划分中,要体现数据流与控制流分离。任务要么完成控制功能,要么完成控制和控制流分离。任务要么完成控制功能,要么完成控制和数据转发功能,对后一种任务,需要提供两个入口将其数据转发功能,对后一种任务,需要提供两个入口将其两个流程分开,例如两个队列。注意两个流程分开,例如两个队列。注意Agent的处理应该是的处理应该是控制流。

8、控制流。在任务中,控制优先,必须先完成控制再处理转发在任务中,控制优先,必须先完成控制再处理转发每一个任务必须要有一个逻辑实体用于对任务进行管理,每一个任务必须要有一个逻辑实体用于对任务进行管理,通常是任务的主函数通常是任务的主函数任务的优先级分配原则任务的优先级分配原则系统中任务按功能特点可以分成系统中任务按功能特点可以分成操作系统及定时器任务(操作系统及定时器任务(030)监控任务和设备管理任务等不经常执行的任务监控任务和设备管理任务等不经常执行的任务协议和报文处理任务(协议和报文处理任务(120以上)以上)后台处理,日志等非紧急的任务后台处理,日志等非紧急的任务如果一个任务处理的事务包含

9、了多个优先级,那么他应如果一个任务处理的事务包含了多个优先级,那么他应该划分成多个任务该划分成多个任务可能长时间连续工作的任务应该优先级较低或定期释放可能长时间连续工作的任务应该优先级较低或定期释放CPU如受外界攻击的任务会连续执行,要特别注意处理如受外界攻击的任务会连续执行,要特别注意处理CPU占用问题。占用问题。抢占式下任务调度的灵活使用抢占式下任务调度的灵活使用优先级依赖:生产者优先级依赖:生产者P-消费者消费者CC高于高于P:优点:避免在优点:避免在P-C的队列中出现积压的队列中出现积压缺点:缺点:C会立刻抢占,导致每个消息触发一次任务切换。会立刻抢占,导致每个消息触发一次任务切换。对

10、控制消息对控制消息OK,对报文处理不好。,对报文处理不好。P高于高于C:反之反之P=C:通常可行通常可行互斥等候:互斥等候:如果如果P可以挂起,则可在队列满时挂起,等候可以挂起,则可在队列满时挂起,等候C将队列读出一部分。将队列读出一部分。动态调整:动态调整:如果系统本身要求如果系统本身要求P尽量快速响应,可以通过队列长度对任务优先尽量快速响应,可以通过队列长度对任务优先级做动态调整。队列将满,就把级做动态调整。队列将满,就把P相对降低优先级。队列将空,恢复相对降低优先级。队列将空,恢复P的优先级。的优先级。任务的删除任务的删除系统的任务应该尽量做到不需要删除系统的任务应该尽量做到不需要删除如

11、果确实需要进行任务删除操作,则必须再任务释放所如果确实需要进行任务删除操作,则必须再任务释放所有占有的相关资源后再进行删除有占有的相关资源后再进行删除系统的层次划分系统的层次划分在当前的系统中,依照不同的功能实现,我们可以将系在当前的系统中,依照不同的功能实现,我们可以将系统的软件体系分成统的软件体系分成5个平面:个平面:系统支撑平面:操作系统,设备管理系统支撑平面:操作系统,设备管理系统配置平面:命令行,系统配置平面:命令行,SNMP系统控制平面:系统的监控任务系统控制平面:系统的监控任务系统数据转发平面:协议栈,路由,二层功能系统数据转发平面:协议栈,路由,二层功能系统业务平面:接入业务,

12、系统业务平面:接入业务,MPLS当前的系统是一个立体的概念,不是平面的概念当前的系统是一个立体的概念,不是平面的概念模块的设计原则模块的设计原则数据与控制分离数据与控制分离松耦合,高内聚松耦合,高内聚简单(复杂的问题简单化)简单(复杂的问题简单化)高效高效资源占用少资源占用少必要的冗余必要的冗余模块间的关联模块间的关联由于功能性质不同,不同层面的模块之间的关联是不一由于功能性质不同,不同层面的模块之间的关联是不一样的:样的:系统支撑和系统配置平面的模块可能与系统内各个模系统支撑和系统配置平面的模块可能与系统内各个模块都存在接口,但之间的接口不一定存在块都存在接口,但之间的接口不一定存在系统数据

13、转发和业务平面各自的内部接口比较多,与系统数据转发和业务平面各自的内部接口比较多,与各个平面的接口也都存在。各个平面的接口也都存在。系统监控模块用于监控系统的运行状况,不同的功能系统监控模块用于监控系统的运行状况,不同的功能模块只与对应的模块产生接口,之间的接口很少模块只与对应的模块产生接口,之间的接口很少模块的平台化模块的平台化系统中的所有模块,硬件相关性最大的是系统支撑平系统中的所有模块,硬件相关性最大的是系统支撑平面的模块,然后是数据转发平面的模块,其他平面的面的模块,然后是数据转发平面的模块,其他平面的模块基本上不与硬件相关。实际上,通过设计,硬件模块基本上不与硬件相关。实际上,通过设

14、计,硬件相关性可以做到只与设备管理,二层模块,三层的一相关性可以做到只与设备管理,二层模块,三层的一部分相关,其他的模块可以做到很少的硬件相关部分相关,其他的模块可以做到很少的硬件相关平台化决定了各个模块之间必须是松耦合,高内聚的平台化决定了各个模块之间必须是松耦合,高内聚的设计思想,模块间的接口不能有模块相关的情况设计思想,模块间的接口不能有模块相关的情况平台化也决定了系统是与操作系统无关的,因此对操平台化也决定了系统是与操作系统无关的,因此对操作系统的调用要进行封装,使用自己的操作系统函数作系统的调用要进行封装,使用自己的操作系统函数接口接口平台化会造成模块产生一定的冗余代码平台化会造成模

15、块产生一定的冗余代码模块间的接口设计模块间的接口设计1.不同的层次的决定了接口设计需要考虑的方面不同:不同的层次的决定了接口设计需要考虑的方面不同:2.支撑平面与配置平面需要考虑接口的标准化和通用性,支撑平面与配置平面需要考虑接口的标准化和通用性,考虑与模块无关考虑与模块无关3.设备管理,二层与硬件,三层与二层之间需要考虑将设备管理,二层与硬件,三层与二层之间需要考虑将接口的抽象化,标准化。将动作归纳为读写和控制这接口的抽象化,标准化。将动作归纳为读写和控制这几个接口,借鉴设备的思想几个接口,借鉴设备的思想4.其他模块之间必须考虑接口的模块无关性,不能在接其他模块之间必须考虑接口的模块无关性,

16、不能在接口当中直接操作其他模块的指针和数据结构口当中直接操作其他模块的指针和数据结构模块间的数据结构封装模块间的数据结构封装松耦合决定了模块不能之间操作其他模块的数据,只松耦合决定了模块不能之间操作其他模块的数据,只能够通过标识来进行间接操作能够通过标识来进行间接操作模块对模块内的数据结构的操作使用宏或者函数封装,模块对模块内的数据结构的操作使用宏或者函数封装,对外则只提供标识,其他模块通过提供的标识和函数来对外则只提供标识,其他模块通过提供的标识和函数来间接操作这个数据结构间接操作这个数据结构模块的需要完成的例行功能模块的需要完成的例行功能模块的命令的处理模块的命令的处理(包括包括showr

17、un)模块的网管功能处理模块的网管功能处理模块的模块的Debug信息信息模块的重要数据结构的模块的重要数据结构的DUMP功能功能模块的热插拔处理模块的热插拔处理模块的热备份处理模块的热备份处理模块的模块的IPC处理处理模块的初始化(要求每一个模块都必须使用函数初始模块的初始化(要求每一个模块都必须使用函数初始化所有模块的全局变量)化所有模块的全局变量)模块的内部处理顺序模块的内部处理顺序模块的一般处理顺序是:模块的一般处理顺序是:前一次未完成的工作前一次未完成的工作控制消息队列控制消息队列数据队列数据队列其他其他一般控制消息队列建议建立多个优先级队列,针对不同一般控制消息队列建议建立多个优先级

18、队列,针对不同模块来的控制信息进行优先级分类处理模块来的控制信息进行优先级分类处理效率优化效率优化对于数据转发流程,一定要考虑效率对于数据转发流程,一定要考虑效率对于大数据量操作的流程和模块,也一定要考虑效率:对于大数据量操作的流程和模块,也一定要考虑效率:定时器队列操作定时器队列操作表项查找表项查找嵌入式系统的启动速度越快越好,因此处于启动流程嵌入式系统的启动速度越快越好,因此处于启动流程中的模块功能也需要考虑效率中的模块功能也需要考虑效率高效与简单是对立的,与资源占用也是对立的,需要高效与简单是对立的,与资源占用也是对立的,需要综合考虑综合考虑常用的提高效率的办法:常用的提高效率的办法:

19、Hash Hash链表链表减少报文的拷贝减少报文的拷贝模块的资源占有模块的资源占有嵌入式系统相对资源比较少嵌入式系统相对资源比较少模块的资源评估是必须的模块的资源评估是必须的评估模块达到设计目标时占用的资源大小,有助于我们评估模块达到设计目标时占用的资源大小,有助于我们确定模块的实现方案,综合考虑模块的效率和资源占用确定模块的实现方案,综合考虑模块的效率和资源占用情况的方案才是比较合适的方案情况的方案才是比较合适的方案系统的特殊部件系统的特殊部件中断中断定时器定时器软件狗软件狗IDLE任务任务中断中断1.与与中断的接口程序中必须关中断中断的接口程序中必须关中断2.中断是系统中优先级最高的任务中

20、断是系统中优先级最高的任务3.大量的中断对大量的中断对CPU的占用是很可怕的,要控制中断的的占用是很可怕的,要控制中断的数目数目4.关中断的时间不能很长,中断中对太长的用户操作应关中断的时间不能很长,中断中对太长的用户操作应该发消息将操作转移到其他任务中做该发消息将操作转移到其他任务中做5.对接口中断最好使用轮讯机制来替代,避免线路不稳对接口中断最好使用轮讯机制来替代,避免线路不稳造成中断过多造成中断过多定时器定时器1.定时器任务应该是系统中除中断外优先级最高的任务定时器任务应该是系统中除中断外优先级最高的任务2.完成对系统的定时器功能完成对系统的定时器功能3.定时器内部不能存在太长的用户操作

21、,太长的用户操定时器内部不能存在太长的用户操作,太长的用户操作应该发消息将操作转移到其他任务中做作应该发消息将操作转移到其他任务中做4.定时器与其他模块之间最好采用消息接口,以保证系定时器与其他模块之间最好采用消息接口,以保证系统的实时性和任务优先级的权威性统的实时性和任务优先级的权威性软件狗软件狗1.系统中必须存在软件狗,以保证在故障的时候能够使系统中必须存在软件狗,以保证在故障的时候能够使设备继续工作,系统异常启动时最好能够不进行系统设备继续工作,系统异常启动时最好能够不进行系统的启动信息输出的启动信息输出IDLE任务任务用于完成对系统的空闲计数,可用于进行用于完成对系统的空闲计数,可用于

22、进行CPU效率的统效率的统计计可靠性设计可靠性设计硬件的可靠性设计硬件的可靠性设计电源冗余备份电源冗余备份风扇冗余备份风扇冗余备份支持热备份支持热备份支持热插拔支持热插拔软件的可靠性设计软件的可靠性设计简单的内存覆盖保护简单的内存覆盖保护内存回收内存回收松耦合松耦合系统定期状态同步系统定期状态同步异常攻击保护异常攻击保护多队列设计多队列设计宏宏热备份热备份系统可以存在多个主控制单元,当一个控制单元失效,系统可以存在多个主控制单元,当一个控制单元失效,其他单元可以主动获得系统的控制权,保证系统的持续其他单元可以主动获得系统的控制权,保证系统的持续运行运行硬件需要提供对热备份支持硬件需要提供对热备

23、份支持各个主控单元之间要进行定期的通讯检测各个主控单元之间要进行定期的通讯检测软件系统需要提供相应的支持软件系统需要提供相应的支持热备份实现方案(一)热备份实现方案(一)系统的两个主控之间只进行配置的同步,其他的运行状系统的两个主控之间只进行配置的同步,其他的运行状态不同步态不同步相当与系统重新启动,但是速度更快相当与系统重新启动,但是速度更快业务板上的系统如果与主控关联小,尽量做到切换时不业务板上的系统如果与主控关联小,尽量做到切换时不重启重启工作量最小,只需要命令行和热备份模块参与,系统的工作量最小,只需要命令行和热备份模块参与,系统的延续性不够,我们称为冷备份延续性不够,我们称为冷备份系

24、统的两个主控之间进行配置同步和简单的状态同步。系统的两个主控之间进行配置同步和简单的状态同步。模块产生的动作被同步到另一块上同样执行一遍模块产生的动作被同步到另一块上同样执行一遍系统的延续性比较好,基本上是切换的检测时间,业务系统的延续性比较好,基本上是切换的检测时间,业务板应该要做到切换时不重启板应该要做到切换时不重启协议栈四层以下的模块容易做到状态同步,对模块的设协议栈四层以下的模块容易做到状态同步,对模块的设计有一定的要求,热备份模块只是提供通道功能,有一计有一定的要求,热备份模块只是提供通道功能,有一定的工作量,我们可以称为温备份定的工作量,我们可以称为温备份四层以上的模块完全同步几乎

25、不可能,设计很复杂,没四层以上的模块完全同步几乎不可能,设计很复杂,没有必要考虑,因此没有完全的热备份有必要考虑,因此没有完全的热备份热备份实现方案(二)热备份实现方案(二)热插拔热插拔系统能够在运行时支持单板的插入拔出功能,并完成该系统能够在运行时支持单板的插入拔出功能,并完成该板对应的配置恢复板对应的配置恢复热插拔有利于系统的升级热插拔有利于系统的升级系统的整体稳定性可以得到提高系统的整体稳定性可以得到提高热插拔的实现困难在于单板相关的配置恢复热插拔的实现困难在于单板相关的配置恢复热插拔实现方案(一)热插拔实现方案(一)系统的各个模块自身保留对应的单板控制实体和相关配系统的各个模块自身保留

26、对应的单板控制实体和相关配置,但是对外不可见,单板插入的时候通知配置恢复。置,但是对外不可见,单板插入的时候通知配置恢复。系统启动的时候配置恢复困难系统启动的时候配置恢复困难关联的模块很多,并且对各个模块原有的流程冲击很大关联的模块很多,并且对各个模块原有的流程冲击很大模块配置恢复的时候需要判断配置存在的前提环境是否模块配置恢复的时候需要判断配置存在的前提环境是否依旧存在依旧存在重要的参与模块:命令行和设备管理重要的参与模块:命令行和设备管理热插拔实现方案(二)热插拔实现方案(二)系统的各个模块在单板拔出时将配置重新系统的各个模块在单板拔出时将配置重新build,反馈回,反馈回命令行,然后删除

27、对应的实体和配置命令行,然后删除对应的实体和配置命令行对每一单板提供一个配置命令缓冲区,当单板插命令行对每一单板提供一个配置命令缓冲区,当单板插入时使用该缓冲区的命令恢复配置入时使用该缓冲区的命令恢复配置各个模块对现有的流程冲击比较少,命令行和设备管理各个模块对现有的流程冲击比较少,命令行和设备管理增加复杂度,设备管理需要提供虚设备的功能增加复杂度,设备管理需要提供虚设备的功能简单的内存写覆盖保护简单的内存写覆盖保护系统自身进行内存的管理和分配机制系统自身进行内存的管理和分配机制系统分配出去的内存前后进行空间预留,长度不超过系统分配出去的内存前后进行空间预留,长度不超过此空间预留的覆盖可以做到

28、保护此空间预留的覆盖可以做到保护可以实现内存写覆盖告警可以实现内存写覆盖告警内存回收内存回收系统自身管理内存系统自身管理内存对分配的内存打上时间标签,系统进行时间设定,超过对分配的内存打上时间标签,系统进行时间设定,超过此预设时间的内存进行回收此预设时间的内存进行回收简单:系统回收前不进行确认简单:系统回收前不进行确认复杂:系统回收前根据复杂:系统回收前根据ModuleID进行确认,各个模块需进行确认,各个模块需要提供确认接口,报文占用的空间在模块间传递前需要要提供确认接口,报文占用的空间在模块间传递前需要修改修改ModuleID系统定期状态同步系统定期状态同步系统的运行中,不同模块间的相同状

29、态可能产生不同步系统的运行中,不同模块间的相同状态可能产生不同步分布式系统中的主控板和业务板之间分布式系统中的主控板和业务板之间端口的端口的UPDOWN状态状态各个硬件表与各个硬件表与Shadow表之间表之间两个主控板之间两个主控板之间定期同步可以避免不同步加剧定期同步可以避免不同步加剧异常攻击保护异常攻击保护系统对可能产生大流量数据和控制消息的地方都需要考系统对可能产生大流量数据和控制消息的地方都需要考虑强壮性虑强壮性半连接攻击半连接攻击特定报文流量攻击特定报文流量攻击ARP扫描攻击扫描攻击DOS攻击攻击考虑方法:考虑方法:队列优先级,流控队列优先级,流控关中断关中断任务优先级调整任务优先级

30、调整资源限制资源限制屏蔽不需要处理的报文:屏蔽不需要处理的报文:IPX,未知单播,未知单播多队列设计多队列设计针对消息优先级和报文优先级设置多个队列,避免丢失针对消息优先级和报文优先级设置多个队列,避免丢失最重要的信息最重要的信息系统内部产生的消息都需要可控,平滑系统内部产生的消息都需要可控,平滑SNMP可能产生大规模的查询消息,可能产生大规模的查询消息,SNMP必须将消息串必须将消息串行化,并控制每秒的消息处理条数行化,并控制每秒的消息处理条数定时器的消息一定不能丢失,定时器消息一定要精简定时器的消息一定不能丢失,定时器消息一定要精简消息队列大小一定要估算好,消息队列的冗余是允许的消息队列大

31、小一定要估算好,消息队列的冗余是允许的宏宏宏尤其是常量宏的使用将有助于减少环境变量改变带来宏尤其是常量宏的使用将有助于减少环境变量改变带来的错误,并且可以增加模块的适应性的错误,并且可以增加模块的适应性系统异常跟踪调试手段系统异常跟踪调试手段越丰富越好越丰富越好DUMPASSERTSyslog信息信息系统轨迹跟踪系统轨迹跟踪系统例外信息保存系统例外信息保存堆栈反向查找堆栈反向查找Debug信息信息MMUCPU占用率占用率集成集成Shell系统轨迹跟踪系统轨迹跟踪任务切换轨迹任务切换轨迹消息转发轨迹消息转发轨迹信号量的使用轨迹信号量的使用轨迹内存使用轨迹内存使用轨迹Debug信息信息每一个模块都

32、必须产生每一个模块都必须产生Debug信息信息状态迁移状态迁移报文接收和处理转发报文接收和处理转发异常处理异常处理信息过多,需要提供信息过多,需要提供字符串过滤功能字符串过滤功能端口级的端口级的Debug操作硬件操作硬件对硬件的操作尽可能得少,如果存在软件表就不要去读对硬件的操作尽可能得少,如果存在软件表就不要去读硬件表硬件表对芯片的响应尽可能快对芯片的响应尽可能快对可能造成芯片死锁的情况要严格避免对可能造成芯片死锁的情况要严格避免芯片控制表的维护芯片控制表的维护尽可能做到尽可能做到Shadow表和硬件表的同步,不同步需要评估表和硬件表的同步,不同步需要评估影响影响表项要做到自恢复表项要做到自

33、恢复某些地方可能需要增加复杂度,提高处理智能:路由表某些地方可能需要增加复杂度,提高处理智能:路由表其他其他系统初始化系统初始化命令风格统一和输出正确的信息命令风格统一和输出正确的信息编程规范编程规范兼容与扩展兼容与扩展静态数组静态数组RFC系统初始化系统初始化各个模块必须进行使用函数初始化所有的全局变量各个模块必须进行使用函数初始化所有的全局变量与初始化相关的流程必须提高效率与初始化相关的流程必须提高效率异常启动时不要输出启动信息异常启动时不要输出启动信息完成配置恢复完成配置恢复硬件硬件Enable操作必须在启动的最后一项进行操作必须在启动的最后一项进行命令风格统一和输出正确的信息命令风格统

34、一和输出正确的信息产品系列的命令统一可以提高产品形象产品系列的命令统一可以提高产品形象命令统一命令统一命令注解统一命令注解统一输出的信息要检查单词和语法的正确性输出的信息要检查单词和语法的正确性平台化平台化多交流多交流定期检查定期检查编程规范编程规范好的编程风格可以减少低级错误的发生,越难查的问题好的编程风格可以减少低级错误的发生,越难查的问题产生问题的原因越简单产生问题的原因越简单强调:强调:1.指针只有在初始化后才可以使用指针只有在初始化后才可以使用2.申请空间后必须判断申请是否成功申请空间后必须判断申请是否成功3.如果一个指针需要循环使用,那么它在使用如果一个指针需要循环使用,那么它在使

35、用Free函数函数后必须置后必须置NULL4.局部指针申请的空间在退出函数前要释放局部指针申请的空间在退出函数前要释放5.变量用于做数组的下标前必须保证变量值在下标范围变量用于做数组的下标前必须保证变量值在下标范围内内兼容与扩展兼容与扩展系统的设计要考虑兼容以前在市场上应用的硬件,如果系统的设计要考虑兼容以前在市场上应用的硬件,如果确实不能兼容,必须明确切换时间,提供版本配套表确实不能兼容,必须明确切换时间,提供版本配套表对类似对类似Client和和Server这种模式的模块,重新设计的时候这种模式的模块,重新设计的时候一定要考虑向前兼容一定要考虑向前兼容802.1x与客户端与客户端H.lin

36、kSNMP自定义的报文格式一定要考虑扩展:自定义的报文格式一定要考虑扩展:长度扩展长度扩展操作码扩展:操作码扩展:2byte基本类型基本类型1byte扩展类型扩展类型1byte静态数组静态数组对重要的,固定的数据结构,可以考虑使用静态数组对重要的,固定的数据结构,可以考虑使用静态数组VLANPort设备管理的实体设备管理的实体硬件硬件Shadow表表RFCRFC非常松散,常用非常松散,常用shouldbe、suggest,而极少,而极少Mustbe建议可省的一定有人省,我们不能对可省项严格检查建议可省的一定有人省,我们不能对可省项严格检查建议可以这么做的一定有人做,我们一定要考虑兼容建议可以这么做的一定有人做,我们一定要考虑兼容对内容没什么建议的我们一定不要检查内容对内容没什么建议的我们一定不要检查内容标明可扩展的我们最好能够设计命令可配标明可扩展的我们最好能够设计命令可配对可有可无的返回信息一定要设置开发进行控制对可有可无的返回信息一定要设置开发进行控制RFC至少要看三遍:编码前,自测时,联调时至少要看三遍:编码前,自测时,联调时结束语结束语谢谢大家聆听!谢谢大家聆听!61

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号