首页 > 知识点讲解
       可扩展性的设计
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式软件开发过程 > 嵌入式软件设计 > 特性设计技术 > 
相关知识点:5个      
        出于系统的升级、维护和重用的考虑,对软件的可扩展性提出了要求,需要在设计过程中规划好系统的架构,并采用模块设计方法实现。例如,在面向航空领域应用的特定系统,其系统功能由软硬件共同实现,如何区分软硬件功能分配以及两者之间的界限非常重要,同时应用中涉及大量驱动软件、功能组件,就需要对这些部分进行模块化设计。
               采取混合编程的方式
               混合编程模式是指同时利用汇编语言和高级语言进行嵌入式软件设计。这主要是利用汇编语言对硬件操作的方便性和汇编语言的高效执行特点来编写与硬件紧密相关,或实时要求严格的代码;而利用高级语言接近人的思维、处理逻辑关系功能强大的优势编写逻辑功能函数。
               通常,高级语言实现的代码比汇编语言实现相应功能的代码具有更好的移植性。在系统设计时,要从系统整体的性能和效率考虑,合理分配高级语言和汇编语言的实现比例,不过分强调某一方面而忽略另一方面。
               硬件驱动管理机制
               嵌入式领域软件开发时,常常需要开发大量的硬件设备驱动软件,包括各类处理器的驱动、各类外部设备的驱动软件。由于驱动软件需要与硬件进行深度结合,并且部分是采用汇编语言实现,如果没有合理硬件驱动管理机制的支持,很难做到软件在不同硬件平台上的迁移与扩展。
               类似于Windows系统的硬件设备驱动,在嵌入式系统的软件开发中引入了硬件驱动层,对系统运行的各类设备驱动进行封装。上层的系统软件通过标准的接口进行访问,实现系统软件与硬件的隔离,降低系统软件的开发难度,缩短了开发时间。硬件驱动层包括CPU片内资源的硬件驱动和板子上外围设备硬件的驱动,如下图所示。
               
               硬件驱动层结构
               CPU的硬件驱动通常包括寄存器、时钟、中断、异常、存储管理单元等。在系统引导过程中,要配置好各种寄存器,进行时钟、中断、异常、存储管理等部件初始化,后续系统软件则通过子程序的方式调用相关硬件驱动。
               其他外部设备驱动通常包括串口、网口、鼠标、键盘、存储器等。在系统开发时,需要为目标机所有的外部设备逐一编写驱动程序,以供其他应用软件进行调用。例如键盘,硬件会记录每次按下的键码,放入输入键码队列中,编制的驱动程序即从键码队列中取出按下的键,根据键值的不同执行不同的操作。通过编制硬件驱动层,并通过标准的接口向上提供访问,使得上层软件的编写就与硬件无关了,只要软件之间逻辑关系正确,就不需要改动。即便是驱动程序需要移植到其他硬件上,只要硬件设计基本相同,也可以直接重用硬件驱动程序,使得整个软件方便地移植。
               软件的模块化设计
               模块化设计方法适用于通用软件和嵌入式软件的设计,是提高系统可扩展性和软件复用性的通用方法。模块化设计包括四个方面:模块、数据、体系和程序设计。
               模块设计降低了系统的复杂性、使得系统易于修改、且支持了各部分的并行开发。针对模块的操作特性,则是通过时间历史、激活机制和控制模式进行体现。在程序结构内部,模块可分类:
               (1)顺序模块,由应用程序进行引用和执行,运行过程中不能被打断。
               (2)增量模块,运行过程中可被其他应用程序打断,而后再从断点重新开始。
               (3)并行模块,在多处理器环境下可以与其他模块同时执行。
               由于单个模块的功能已被划分出来,开发起来相对较为容易,更多要从独立性的角度关注模块之间的界限。功能的独立性可以使用内聚性和耦合性这两个特性要素进行衡量:内聚性衡量模块功能强度的相关性,耦合性衡量模块间的相互依赖的相关性。
               数据设计至关重要,并被有些人认为是最重要的设计行为。数据设计主要取决于数据结构的设计和程序复杂性的设计,通常采用如下办法保证数据设计的质量:
               (1)用于功能和行为分析的系统分析原理也适用于数据。
               (2)模块涉及的数据结构及基于数据结构的操作应被确定。
               (3)创建数据词典并用来详细说明数据和程序的设计。
               (4)较低层次的数据设计策略延迟至设计过程的后期。
               (5)数据结构的信息应只被需要使用此结构内数据成员的模块知道。
               (6)可在适当时候借鉴有用的数据结构和操作库。
               (7)设计和编程语言应支持抽象数据类型的规范和实现。
               体系设计的主要目标是定义适合模块化开发的程序结构,并描述出模块之间的控制相关性。体系设计应融合程序结构与数据结构,并对数据在程序中流动的界限进行定义。体系设计要关注系统的整体设计而不是单独组件。进行体系设计有许多不同的方法,但这些方法无一例外都是从软件的全局性出发,逐步接近设计的原点。
               过程设计通常是在数据、程序结构及算法被确定后(通常是类似英语的自然语言),再进行程序过程设计。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有