嵌入式系统设计与开发——软件开发
嵌入式软件开发流程:
-
平台选择:
-
硬件平台选择:处理器性能、技术指标、功耗、软件支持工具、是否内置调试工具
-
软件平台选择:操作系统、编程语言、集成开发环境
-
软件设计:
-
准备工作计划:过程管理方案、开发环境准备方案、软硬件联机调试方案、质量保证方案、配置控制方案
-
确定软件的结构:任务结构的设计、线程的设计、公共数据结构的设计、操作系统资源的定义、类的设计、模块结构设计、内存的分配与布局
-
设计评审:工作执行方法是否恰当,内容是否完善;确认完成系统需求规格说明书的功能和服务;评估任务结构设计、评估类的设计、评估模块结构设计:编写软件设计的结果总结文档。
-
维护工作计划
-
与硬件部门密切合作、相互协调
-
控制工作的结果,记录存档
-
软件架构设计原则:抽象、信息隐蔽、强内聚、松耦合、关注点分离(将不同的接口设计成组件),将一个完整的问题分解成多个模块,需要定义边界条件、描述系统组织结构、对系统的定量属性进行约束、帮助对模型进行描述并基本构造早期的原型、更准确地描述费用和时间的评估。

-
软件设计方法:基于功能分解、面向对象设计、模型驱动开发,实时性设计(合理划分实时单元和分时单元、实时任务)、可扩展设计(高级语言和汇编语言混合编程、硬件设备驱动,包括寄存器、时钟、中断、异常、存储单元)、模块化设计(顺序、增量、并行)、可定制性设计(可裁剪、可配置)
设计约束
-
接口设计约束:参数定义与输入参数定义一致、调用参数与模块参数定义一致、不能对仅作为输入值的参数进行修改、模块参数传递不超过5个、模块间采用系统接口
-
中断设计约束:初始化屏蔽无用中断、中断资源初始化(中断向量号、触发方式、中断服务程序)、分析中断措施,占用大小、避免嵌套、优先级、简短处理
-
模块设计约束:单入单出、控制扇入和扇出数、高内聚低耦合、禁止递归
-
异常设计约束:异常接管、统一异常处理机制、分析异常处理
-
数据安全设计约束:数据范围、数据误差、运算精度、范围检查、近零浮点数处理、定期检查
-
余量设计约束:资源余量设计、时间余量设计
-
其他约束:实时性响应、并发系统、互斥机制、检查返回值、故障检测和隔离程序、全局数据保护、初始化时进行空间分配、变量使用前初始化、硬件初始化为确定状态、延时避免用循环方法、确保时钟精度
-
编码:指定规范 -> 准备环境 -> 编写代码 -> 代码审查
-
编码准则:短小精悍、封装、消除冗余、减少实时、优雅、借助检查工具
-
编码技术:编程规范(命名、格式、注释)、性能优化(整数优先、避免乘除法)
-
下载:简单文件传输协议TFTP(Trivial File Transfer Protocol)
移植
-
无操作系统移植:算法和数据结构一定要重用,设备驱动层(IO模块)与尽量硬件无关,增加硬件抽象层
-
有操作系统移植:4层结构(设备驱动、操作系统、中间件、应用软件),主要是引导加载程序BootLoader(汇编初始化程序的Stage1和C语言的Stage2)、设备驱动程序、操作系统处理器程序
-
应用软件:采用分层和模块化设计、采用系统抽象的体系结构、采用可移植函数、采用宏定义数据类型、不可移植局域化、提高代码可重用
网络基础知识
IPV4
大型网络中,网络地址占1个字节,主机地址占3个字节,可以容纳的主机数为 2^24 。
中型网络中,网络地址占2个字节,主机地址占2个字节,可以容纳的主机数为2^16 。
小型网络中,网络地址占3个字节,主机地址占1个字节,可以容纳的主机数为2^8 。
-
IP地址掩码
-
标准地址掩码
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
-
地址掩码表示方法
点分十进制
位计数

192.168.100.1/25:C类网络,这里25表示网络位为25位,借用主机位中的一位作为子网掩码,主机位变为7位。
主机位的数量计算:
2^n −2
其中n表示主机空间,-2表示减去全0和全1的两个不可用地址,全0为子网号,全1为广播地址。

IPV6
12AB::CD30:0:0:0:0/60: 其中::表示0压缩,这里压缩了两个0,全部展开可以表示为 12AB:0:0:CD30:0:0:0:0/60
IPV4与IPV6网络之间的通信技术
双协议栈、隧道技术、翻译技术
DNS和DHCP
dns域名解析


DHCP协议
-
客户机/服务器模型
-
租约默认为8天
-
当租约过半时,客户机需要向DHCP服务器申请续租
-
当租约超过87.5%时,如果仍然没有和当初提供IP的DHCP服务器联系上,则开始联系其他的DHCP服务器。
-
固定分配、动态分配和自动分配
夜雨聆风
