thumbnail
4.模块与接口设计
一.软件分层 二.模块 模块: 嵌入式软件开发与复用的最小单位 太大: 不符合单一职责原则 太小: 不符合高内聚低耦合原则 具有契约指定的接口和显式上下文依赖性的组合单元,是对数据和方法的封装 三. 模块接口 模块接口的定义: 接口体现模块功能,但不暴露细节: 接口决定了软件模块的功能,但将实现的细节屏蔽在内部 模块接口的合理性与稳定性: 接口的合…
thumbnail
3.识别与管理数据和软件分解
一.合理识别与管理数据 合理识别与管理数据: 即将类型相同的数据组合成一个个模块进行管理 例子: 例如下面是对AGV(搬运机器人)的数据识别和管理 二.软件分解 1.软件分解的方式 [!NOTE]对于“任务分解”,实际存在两种方案 按组件: 一个功能中颗粒度最小的单位,不能再进一步划分了 适合于资源比较充沛的嵌入式平台 按任务: 每个任务几乎都是实…
2.软件基础设施
软件基础设施: 其主要是对软件进行抽象,屏蔽掉某些软件或硬件上的细节,使得软件得以在不同的平台上能够复用,较少重复造轮子的次数 软件基础设施的内容: 基础类型与宏定义: 对基础类型起别名,以便在出现不同的硬件平台和编译器存在差异时可以方便的修改 中间件: 文件系统、各种协议栈、数据库等 框架: 外设驱动框架、设备框架、状态机框架、行为树框架等 操作…
thumbnail
1.抽象层
一.隔离结构 调用抽象层代码应用层的实现只依赖抽象层提供的接口,不能跨层调用 符合依赖倒置原则 应用层不依赖固件库,而是依赖于抽象层 驱动模块也按照抽象层的对下接口进行实现 便于移植硬件相关的功能,变得相对集中,在移植时只需要集中修改 二.抽象层 对上接口: API,供应用层调用 逻辑实现: 抽象设备或者抽象硬件的内部实现 比如: 增加缓冲区、保证…
thumbnail
16.重定位及动态链接
一.重定位概念 重定位的目的: 在符号解析的基础上将所有关联的目标模块(集合E[所有目标文件集合]中的模块)合并,并确定运行时每个定义符号在虚拟地址空间中的地址,在定义符号的引用处重定位引用的地址 重定位: 在初次编译源文件时,编译器会将不确定的函数/变量地址赋予一个"临时地址"放到可重定位目标文件的call指令处,待到链接阶段…
thumbnail
1.系统概述和数据的表示、存储
一.指令集体系结构(ISA) 1.介绍 ISA: 指Instruction Set Architecture,即指令集体系结构,有时简称为指令系统,是在通用计算机系统中是必不可少的一个抽象层 ISA: 是一种规约(Specification),它规定了如何使用硬件 可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定 指令可…
thumbnail
2.浮点数的编码表示
计算机中浮点数的表示: 用一个二进制的定点小数和一个二进制的定点整数来表示一个浮点数 一.早期浮点数的表示 1.表示1 符号位S: 用一位表示 阶码E: 是指数的表示范围,就上图而言是8位移码表示 尾数M: 小数点后面的数,就上图而言使用23位表示 其中第一位默认为1,不予以表示,故多出1位,总计24位 表示范围: 最大正数: $(1-24^{-2…
thumbnail
3.非数值数据的编码表示
一.逻辑数据的编码表示 表示: 用一位表示 。N位二进制数(位串)可表示N个逻辑数据 运算: 按位进行 如,按位与 / 按位或 / 逻辑左移 / 逻辑右移 等 识别: 逻辑数据和数值数据在形式上并无差别,也是一串0/1序列,计算机靠指令来识别 二.西文字符的编码表示 特点: 是一种拼音文字,用有限几个字母可拼写出所有单词 只需对有限个字母和数学符号…
thumbnail
4.数据宽度和存储容量的单位
一.数据的基本宽度 比特(bit,位): 是计算机中处理、存储、传输信息的最小单位 字节(Byte): 是二进制信息最基本的计量单位 现代计算机中,存储器按字节编址 字节是最小可寻址单位(addressable unit) 如果以字节为一个排列单位,则LSB表示最低有效字节,MSB表示最高有效字节 字和字长: 字: 表示被处理信息的单位,用来度量数…
thumbnail
5.数据存储时的字节排列
一.大端小端 大端方式(Big Endia): MSB所在的地址是数的地址 小端方式(Little Endian): LSB所在的地址是数的地址 二.检测系统的字节顺序 原理: union的存放顺序是所有成员从低地址开始的,利用该特性可以测试CPU的大/小端方式 代码: #include <stdio.h> void main(){ u…