《软件单元测试入门与实践 周立功》

只有以下这些概念有印象,其他有关测试用例的内容没看懂,另找教程学习。
单元测试:测试最小单位,模块或类。
集成测试:在单元测试基础上,将各个单元有序、递增的组合测试。目的是验证软件单元之间、软件单元和已集成的软件系统之间的接口关系,并验证已集成的软件系统是否符合设计要求。
系统测试是在真实或模拟系统运行的环境下对集成了硬件和软件的系统进行测试。目的是检验系统在真实工作环境下的运行情况,以验证完整的软硬件系统能否实现用户的实际需求
测试框架
嵌入式产品的资源有限,Unity 是一个轻量级的测试框架,它使用 C 语言实现,代码本身很小,不到 200K。由于 Unity 的代码中大多数是宏定义,所以实际编译后的代码会更小。

《ARM嵌入式系统基础教程(周立功第2版)》

嵌入式系统概述
Page5
中断服务程序处理异步事件,可以看成前台行为。
程序循环中调用函数的操作,可以看出后台行为。
Page6
操作系统:
负责计算机系统中全部软硬资源的分配与回收、控制与协调等并发的活动
实时操作系统(RTOS):
根据各个任务的优先级,动态地切换任务。工程师在编写程序时,可以分别编写各个任务。
任务:
也称为线程。每个任务有优先级、CPU寄存器、栈空间
当一个运行着的任务使另一个高优先级任务进入了就绪状态,当前任务被挂起,高优先级任务运行。
当中断服务子程序使一个高优先级任务进入就绪状态,中断完成时,中断了的低优先级任务被挂起,高优先级任务运行。
同步和异步:
同步就是一件事一件事的执行。只有前一个任务执行完毕,才能执行后一个任务。
而异步比如:
setTimeout(function cbFn(){
console.log(‘learnInPro’);
}, 1000);
console.log(‘sync things’);
setTimeout就是一个异步任务,当JS引擎顺序执行到setTimeout的时候发现他是个异步任务,则会把这个任务挂起,继续执行后面的代码。直到1000ms后,回调函数cbFn才会执行,这就是异步,在执行到setTimeout的时候,JS并不会傻呵呵的等着1000ms执行cbFn回调函数,而是继续执行了后面的代码。
中断:
是一种硬件机制,通知CPU有个异步事件发生了。CPU保存部分或全部寄存器的值,跳转到中断服务子程序(ISR),处理完成后回到后台程序,非抢占式内核,回到中断了的任务,抢占式内核,进入就绪态优先级最高的任务。
时钟节拍:
是特定的周期性中断。一般在10ms到200ms之间。使内核可以将任务延时若干个整数时钟节拍。以及当任务等待时间发生时,提供等待超时的依据。
实时性操作系统遇到干扰只是破坏了一个进程,可以通过系统运行的系统监控进程对其修复。将程序分解为多个任务模块,任务之间耦合程度低,提高了开发效率。
实时性:
实时性是指能够在限定时间内执行完规定的功能并对外部的异步时间做出响应。实时性强弱是以完成规定功能和做出响应时间的长短来衡量。

嵌入式系统项目工程设计

1、项目的生命周期
在这里插入图片描述

识别需求:结束标志是客户提出需求建议书或招标书,又称立项报告。确认需求,分析投资收益比,研究项目可行性。
提出方案:由厂商提交投标书、介绍解决方案。
执行项目:细化目标、制定工作计划、协调人力和其他资源、定期监控进展、分析项目偏差、采取必要措施以实现目标。
结束项目:帮助客户实现商务目标、交接给系统维护人员、项目评估、举行庆祝仪式。
2、UML系统建模
嵌入式系统设计阶段使用UML来描述系统模型,可以短时间内让参与项目的人员对系统更加了解,及早确定系统方向、规划系统功能、提早发现问题。
3、面向对象
对象是客观世界中具有独立属性和能力的实体,有着某种特征(状态)和行为。
面向对象的分析:划分系统的各个部分,然后将各个部分作为一个对象进行功能或行为上的分析和定义;
面向对象的设计:将分析所建立得分析模型转变为软件构造蓝图的设计模型,即在预定义的基本类框架上构建一个系统,这个阶段中只要进一步确定各个对象的功能以及各个对象之间的关系;
面向对象的编程:使用面向对象的设计语言(JAVA、C++)把面向对象设计的系统模型程序化,即完成具体实现。

传统的结构化方法是将系统分解为很多基本函数的集合,数据被孤立分离,并且不考虑并发。
面向对象方法的基本分解单位是对象,一个系统作为一个对象,由多个对象组成。面向对象代码侧重于对象之间的交互,多个对象各司其职,相互协作以完成目标

《嵌入式系统可靠性设计技术及案例解析》

第6章 接口软件可靠性设计
数据和变量类型及命名、存储方式、接口防护、代码逻辑结构
读取数据:判断数据的数量、数值范围、数据顺序(与本地接收端对比0x01r[0], 0x02r[1])
扇入:是指直接调用该模块的上级模块的个数,复用性好。
扇出:该模块调用其他模块的个数,逻辑性强弱。

6.2 嵌入式软件系统设计
过程监控:软件开发过程的每个阶段,对文档检查。早期软件检查和测试,checklist
6.2.2 硬件与软件功能的分配原则
电子器件参数稳定性要求高,用软件
硬件成本高,用软件
运算、逻辑复杂,用软件
要求反应快、效率高,用硬件
6.2.3在这里插入图片描述

6.2.4 安全关键功能的人工确认
人工确认按钮,确认?取消?
6.2.5 安全性内核
比如在输出前,做阈值极限检查和合理性检测。
确保输入、输出环节的任何意外输入、输出全部在程序中受控,而且必须给操作交代。
6.2.6自动记录系统故障和运行情况 掉电后仍能保留这类信息。
6.2.8 容错性设计:保证数据的来源、传输过程、接收过程没有失真和错误。比如图6-4(page171,记录接收过程空等待次数,过久则提示),以及逻辑错误。都是人为错误。
6.3 硬件设计
1.硬件选用:选市面长期使用过的、运算速度高、工作频率低的。采购规格书制定生产商而不是贸易商。
3.加电检测:包括过欠压,电源跌落
4.安全措施:电源失效有另一种安全关闭方法,能检测主控失效自动进入安全状态,反馈回路传感器失效时接口软件不会失控。
5.电磁干扰的防护措施:EMI干扰信号质量时,软件必须有对信号质量的判别设计保证不失控。当等待时间大于实际运行时间时,将等待时段设计成休眠,避免电磁干扰。
6.维修互锁措施:例如拔下模块后会被维修人员可触及的部位,必须通过软硬件控制使其变成安全状态。即:模块连接时解锁,正常工作。模块断开时锁定,安全。
6.4 软件需求和危险分析 软件需求分析遵守GJB 1091,
6.6 冗余设计 重复执行控制指令
6.6.2 软件陷阱与软件拦截技术 将捕获的程序指针引向处理错误的程序地址,例如打印“ERROR”
6.6.3 软件冗余
安全性可靠性要求高的话采用 热备份:两段代码同时执行一个功能,判断结果是否一致
6.8 软件健壮性设计
6.8.3 系统不稳定
例如刚上电,或启动继电器后,延迟一段时间,再启动AD,避免EMI
6.8.4 接口故障
非交互期间,周期性发送握手信号,超过一定次数未获得反馈,则报错(LLS)
6.9 简化设计
6.9.1 模块的独立性
模块之间要低耦合,避免过度依赖。
6.12 防错程序设计
2. 对公共数据或变量,使用前可先检查变量是否为0,确认没被使用。

《软件项目管理在嵌入式的应用》

在建立了硬件开发平台(包括嵌入式CPU选型、外围电路设计、功能模块设计、PCB电路板制作等)之后,嵌入式系统软件的开发工作对于整个系统的成功与否至关重要。其从算法设计、代码实现、流程控制到代码重用性、可靠性的提高等,都接近于PC平台的软件设计。二者都可以利用软件工程的方法来优化软件质量,通过软件项目管理来控制整个开发过程,使得每个项目能够有序、高效、高质量、按时的完成。二者的异同如图1所示。在嵌入式系统的开发中,同样应该利用软件项目管理方法来规划、控制整个项目的进行。
在这里插入图片描述

《嵌入式系统原理与设计 沈刚》

嵌入式处理器选型
技术指标:功能 速度 寻址能力 功耗 温度(民用070,工业-4085,军用-55~125)
熟悉程度
成本
技术支持
与其他部件兼容

微处理器
ARM powerPC MIPS

ARM7种运行模式
用户模式 FIQ IRQ

描述一下imx6ul信息

CISC RISC指令体系各自特点

ARM Thumb两种工作状态特点

ARM异常处理机制

ARM初始化过程

描述SPI、I2C总线的结构和特点

描述AD的技术指标

嵌入式Linux图形驱动接口
Framebuffer显示内存的映像,写在屏幕上,设备文件是/dev/fb0 /dev/fb1

嵌入式Linux内核的裁剪和移植过程

Ucos
任务管理:64个任务。优先级号越低优先级越高。运行进入就绪态的优先级最高的任务。建立任务,删除任务,挂起任务,恢复任务。静态或动态分配任务的堆栈空间,动态分配注意内存碎片。
任务通信与信号同步:信号量 邮箱 消息队列
内存管理

嵌入式Linux软件开发
硬件设计包括核心板、母版、电源板、接口板设计
BootLoader移植包括对硬件资源地址分配,对内核、根文件系统加载地址和方式配置
Linux内核移植包括对专用硬件进行裁剪和配置,重新编译内核
驱动程序开发:对特定硬件设计驱动包括ADC驱动、GPIO驱动、USB驱动、键盘驱动
文件系统用于操作系统和应用程序的保存
图形界面方便操作嵌入式设备
应用程序开发,有了操作系统,开发者无需关心硬件细节。

开发方式
NFS

《嵌入式系统软件设计中的常用算法》

数字滤波算法:限幅滤波、中值滤波、算术平均滤波、滑动平均滤波
自动控制算法:PID
数据压缩算法:霍夫曼编码、增量压缩编码、预测压缩编码
检错与纠错算法:奇偶校验、和校验、循环冗余校验(CRC)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐