(软考嵌入式系统设计师)程序设计复习笔记
嵌入式软件面试知识点总结
嵌入式软件面试知识点总结1. 嵌入式系统概念- 什么是嵌入式系统?- 嵌入式系统与通用系统的区别?- 嵌入式系统的特点有哪些?2. 嵌入式软件开发基础- 嵌入式软件开发流程?- 嵌入式软件开发的编程语言?- 嵌入式系统的软硬件接口?3. 嵌入式系统架构- 常见的嵌入式系统架构有哪些?- 嵌入式系统的内存管理?- 嵌入式系统的中断处理?4. 嵌入式系统的实时性- 什么是实时系统?- 嵌入式系统的实时性要求?- 如何实现嵌入式系统的实时性?5. 嵌入式操作系统- 常见的嵌入式操作系统有哪些?- 不同的嵌入式操作系统的特点?- 嵌入式操作系统的调度算法?6. 嵌入式软件开发工具- 常用的嵌入式软件开发工具有哪些?- 嵌入式软件的调试工具?- 嵌入式软件的测试工具?7. 单片机及嵌入式处理器- 常见的单片机及嵌入式处理器有哪些?- 不同的单片机及嵌入式处理器的特点?- 如何选择适合的单片机及嵌入式处理器?8. 嵌入式软件开发中常用的通信协议- 常见的通信协议有哪些?- 通信协议的特点及应用场景?- 嵌入式系统中如何选择适合的通信协议?9. 嵌入式软件的优化- 嵌入式软件的性能优化?- 嵌入式软件的存储优化?- 嵌入式软件的功耗优化?10. 嵌入式系统的安全性- 嵌入式系统的安全性指标?- 嵌入式系统的安全性防护策略?- 如何提高嵌入式系统的安全性?以上是我对嵌入式软件面试知识点的总结,希望对面试者有所帮助。
在面试过程中,候选人可以结合自己的项目经验和技术能力,深入讨论和展示自己对嵌入式软件开发的理解和实践能力,以展现自己的专业素养和学习能力。
祝各位面试顺利!。
软考嵌入式系统设计师学习笔记
软考嵌⼊式系统设计师学习笔记⽬录第⼀章嵌⼊式系统需求分析与体系结构设计 (5)1.1软件需求分析 (5)1.1.1 关于选择裸机开发还是基于实时操作系统 (5)1.1.2 实时操作系统优点 (5)1.1.3 实时操作系统的时间性能评估 (5)1.2体系结构设计 (5)1.2.1系统需求 (5)1.2.2 规格说明书 (5)1.2.3 体系结构设计 (6)1.3项⽬进度管理 (6)1.3.1 快速原型开发法的优缺点 (6)1.3.2 项⽬管理的内容 (6)1.3.3 PERT图及关键路径 (6)1.4 UML(统⼀建模语⾔)建模技术 (6)1.4.1⾯向对象⽅法的优点 (6)1.4.2类图概念及六种关系 (7)1.4.3序列图概念 (7)1.4.4基于UML嵌⼊式软件开发环境 (7)第⼆章接⼝电路设计及编程 (8)2.1外接Flash Memory (8)2.1.1 关于NOR Flash 和NAND Flash的选型 (8)2.1.2 关于⼤⼩端问题 (8)2.2 键盘接⼝电路 (8)2.1.2 键盘结构的分类 (8)2.3 LCD接⼝电路设计及编程 (9)2.3.1 LCD显⽰⽅式 (9)2.3.2 LCD显⽰⽅法 (9)2.3.3 VCLK计算⽅法 (9)2.4 串⼝通信技术 (10)2.4.0 同步和异步传输的区别 (10)2.4.2 异步串⾏总线 (10)2.4.3 零调制解调器(Null Modem) (11)2.4.5 UART波特率 (11)2.4.6 CAN总线 (11)2.5 ⽹络接⼝技术 (12)2.5.1⽹络协议层次结构 (12)2.5.2各协议特点 (12)2.5.3嵌⼊式系统下以太⽹接⼝实现的⽅法 (13)2.5.4 IEEE 802.3标准MAC帧结构 (13)2.5.5⽹络接⼝控制芯⽚RTL8019的复位⽅式 (13)第三章嵌⼊式软件程序设计 (14)3.0软件开发模型 (14)3.1任务实现技术 (14)3.1.1 任务状态转换图 (14)3.1.2 任务的创建 (15)3.1.3 任务的切换 (15)3.2任务管理技术 (15)3.2.1 选择嵌⼊式软件平台时考虑的因素 (15)3.2.2嵌⼊式系统存储⽅案 (15)3.2.3如何区分进程和线程 (16)3.3程序设计技术 (16)3.3.1 初始化模块 (16)3.4软件分析技术 (16)3.4.1 选择嵌⼊式实时操作系统主要考虑的⽅⾯ (16) 3.4.2 选择数据IO处理⽅法要考虑的⽅⾯ (16)3.5⽂件系统管理 (16)3.5.1 嵌⼊式⽂件系统的功能 (16)3.5.2 ⽂件控制块 (17)3.5.3 ⽂件的物理结构 (17)3.5.4 FAT⽂件系统 (17)第四章嵌⼊式系统测试与维护 (18)4.1单元模块测试技术 (18)4.1.1 嵌⼊式软件的特点 (18)4.1.2 对嵌⼊式软件进⾏测试的特点 (18)4.1.3单元测试的内容 (19)4.1.4嵌⼊式软件测试的内容 (19)4.2覆盖测试技术 (19)4.2.1 嵌⼊式软件的测试活动步骤 (19)4.2.2 覆盖测试 (20)4.2.3程序的环路复杂度V(G) (20)4.2.4 利⽤⼯具软件对嵌⼊式软件进⾏动态覆盖测试 (20)4.3可移植性技术 (21)4.3.1 嵌⼊式软件开发原则 (21)4.3.2嵌⼊式软件移植 (21)4.3.2嵌⼊式Boot Loader (21)4.3.3函数的可重⼊性 (22)4.3.3系统移植测试 (22)4.4可靠性分析技术 (22)4.4.1 软件固有错误数预测⽅法(蒙特卡罗错误随机植⼊法) (22) 4.4.2 平均⽆故障时间MTBF (22)4.4.3负载压⼒测试 (22)4.5性能评价技术 (23)4.5.1嵌⼊式系统性能度量指标 (23)4.5.2资源利⽤率 (23)4.5.3系统传输数据的峰值流量 (23)第五章嵌⼊式Linux系统技术 (24)5.1 inittab配置⽂件 (24)5.1.1 inittab⽂件记录项 (24)5.1.2 运⾏级别 (25)5.1.3 Linux分区 (25)5.2 RPM操作技术 (26)5.2.2 RPM软件包名组成 (26)5.2.3 RPM软件包命令选项 (26)5.2.4 RPM软件包的校验⽅法 (27)5.3 内核移植与编译 (28)5.3.1 内核移植⼀般步骤 (28)5.3.2 嵌⼊式Linux系统的组成 (28)5.3.3 编译过程 (28)5.3.4 交叉编译⽅法 (28)5.3.5 init.S⽂件完成的⼯作 (28)5.3.6 内核的配置(裁剪)和编译 (29)5.4 Samba配置技术 (30)5.4.1 smb.conf (30)5.4.2 配置Samba使⽤加密⼝令步骤 (30)5.4.3 Samba安全级别 (30)5.4.4 其他Samba配置语句 (31)5.4.5 Samba的启动和停⽌ (31)5.5 TCP/IP⽹络配置 (34)5.5.1 基本配置语句 (34)5.5.2 基本关机/重启语句 (34)5.5.3路由协议 (34)5.5.4静态路由设置 (34)5.5.5⽹络连通命令 (35)第六章常考知识点 (36)第⼀章嵌⼊式系统需求分析与体系结构设计1.1软件需求分析描述了系统做什么的问题。
软考嵌入式系统设计师学习笔记
目录第一章嵌入式系统需求分析与体系结构设计 (5)1.1软件需求分析 (5)1.1.1 关于选择裸机开发还是基于实时操作系统 (5)1.1.2 实时操作系统优点 (5)1.1.3 实时操作系统的时间性能评估 (5)1.2体系结构设计 (5)1.2.1系统需求 (5)1.2.2 规格说明书 (5)1.2.3 体系结构设计 (6)1.3项目进度管理 (6)1.3.1 快速原型开发法的优缺点 (6)1.3.2 项目管理的内容 (6)1.3.3 PERT图及关键路径 (6)1.4 UML(统一建模语言)建模技术 (6)1.4.1面向对象方法的优点 (6)1.4.2类图概念及六种关系 (7)1.4.3序列图概念 (7)1.4.4基于UML嵌入式软件开发环境 (7)第二章接口电路设计及编程 (8)2.1外接Flash Memory (8)2.1.1 关于NOR Flash 和NAND Flash的选型 (8)2.1.2 关于大小端问题 (8)2.2 键盘接口电路 (8)2.1.2 键盘结构的分类 (8)2.3 LCD接口电路设计及编程 (9)2.3.1 LCD显示方式 (9)2.3.2 LCD显示方法 (9)2.3.3 VCLK计算方法 (9)2.4 串口通信技术 (10)2.4.0 同步和异步传输的区别 (10)2.4.2 异步串行总线 (10)2.4.3 零调制解调器(Null Modem) (11)2.4.5 UART波特率 (11)2.4.6 CAN总线 (11)2.5 网络接口技术 (12)2.5.1网络协议层次结构 (12)2.5.2各协议特点 (12)2.5.3嵌入式系统下以太网接口实现的方法 (13)2.5.4 IEEE 802.3标准MAC帧结构 (13)2.5.5网络接口控制芯片RTL8019的复位方式 (13)第三章嵌入式软件程序设计 (14)3.0软件开发模型 (14)3.1任务实现技术 (14)3.1.1 任务状态转换图 (14)3.1.2 任务的创建 (15)3.1.3 任务的切换 (15)3.2任务管理技术 (15)3.2.1 选择嵌入式软件平台时考虑的因素 (15)3.2.2嵌入式系统存储方案 (15)3.2.3如何区分进程和线程 (16)3.3程序设计技术 (16)3.3.1 初始化模块 (16)3.4软件分析技术 (16)3.4.1 选择嵌入式实时操作系统主要考虑的方面 (16)3.4.2 选择数据IO处理方法要考虑的方面 (16)3.5文件系统管理 (16)3.5.1 嵌入式文件系统的功能 (16)3.5.2 文件控制块 (17)3.5.3 文件的物理结构 (17)3.5.4 FAT文件系统 (17)第四章嵌入式系统测试与维护 (18)4.1单元模块测试技术 (18)4.1.1 嵌入式软件的特点 (18)4.1.2 对嵌入式软件进行测试的特点 (18)4.1.3单元测试的内容 (19)4.1.4嵌入式软件测试的内容 (19)4.2覆盖测试技术 (19)4.2.1 嵌入式软件的测试活动步骤 (19)4.2.2 覆盖测试 (20)4.2.3程序的环路复杂度V(G) (20)4.2.4 利用工具软件对嵌入式软件进行动态覆盖测试 (20)4.3可移植性技术 (21)4.3.1 嵌入式软件开发原则 (21)4.3.2嵌入式软件移植 (21)4.3.2嵌入式Boot Loader (21)4.3.3函数的可重入性 (22)4.3.3系统移植测试 (22)4.4可靠性分析技术 (22)4.4.1 软件固有错误数预测方法(蒙特卡罗错误随机植入法) (22)4.4.2 平均无故障时间MTBF (22)4.4.3负载压力测试 (22)4.5性能评价技术 (23)4.5.1嵌入式系统性能度量指标 (23)4.5.2资源利用率 (23)4.5.3系统传输数据的峰值流量 (23)第五章嵌入式Linux系统技术 (24)5.1 inittab配置文件 (24)5.1.1 inittab文件记录项 (24)5.1.2 运行级别 (25)5.1.3 Linux分区 (25)5.2 RPM操作技术 (26)5.2.2 RPM软件包名组成 (26)5.2.3 RPM软件包命令选项 (26)5.2.4 RPM软件包的校验方法 (27)5.3 内核移植与编译 (28)5.3.1 内核移植一般步骤 (28)5.3.2 嵌入式Linux系统的组成 (28)5.3.3 编译过程 (28)5.3.4 交叉编译方法 (28)5.3.5 init.S文件完成的工作 (28)5.3.6 内核的配置(裁剪)和编译 (29)5.4 Samba配置技术 (30)5.4.1 smb.conf (30)5.4.2 配置Samba使用加密口令步骤 (30)5.4.3 Samba安全级别 (30)5.4.4 其他Samba配置语句 (31)5.4.5 Samba的启动和停止 (31)5.5 TCP/IP网络配置 (34)5.5.1 基本配置语句 (34)5.5.2 基本关机/重启语句 (34)5.5.3路由协议 (34)5.5.4静态路由设置 (34)5.5.5网络连通命令 (35)第六章常考知识点 (36)第一章嵌入式系统需求分析与体系结构设计1.1软件需求分析描述了系统做什么的问题。
(软考嵌入式系统设计师)基础知识复习笔记
嵌入式系统设计师考试笔记之嵌入式系统基础知识一、引言自《嵌入式系统设计师考试复习笔记之存储管理篇》在嵌入式在线的博客出现后,意外的得到很多朋友的关注和评论,收到不少朋友的邮件,问一些有关考试的问题,希望得到我的复习笔记的其他部分。
我非常感谢他们,他们的热切关注,使我有了继续往下写的无限动力,使我萌生了将我以前的复习笔记、考试经验结合大纲教程并重新按《教程》的章节顺序整理一份适合考生复习的笔记手册,笔记后面再分析历年的真题,按章节考点找出相关的考题进行分析,希望能和有兴趣的人们一起讨论讨论。
嵌入式系统设计师的一天考试分为上午和下午部分,两部分的考试方式、试题难度、考点分布和复习方法都是不同的。
这次我们讨论的是嵌入式系统基础知识,我本人觉得,这部分出下午大题的可能性不大,主要是分布在上午的75道选择题之中。
从历年的真题和考试大纲来看,上午的选择题主要考查一些基本概念,重要原理的理解,一些关键技术和一些重要的原理引申出来的简单计算。
根据这些考试特点,复习的时候可以采用适当的策略,当然每个人的方法都是不一样的,适合自己的办法才是最好的办法。
方法大家可以自己慢慢去体会,我的也不多说了,通过笔记和真题分析就可以体现处理。
对于很多关键的知识点和基本概念,除了记住之外还要彻底理解,否则出题的时候会进行一些变换,或者引申一些计算,那么就算你知道考那个考点,可能你也做不好。
在复习的过程中,你要记住:你不是要考一个很高的分数,而是要考一个通过的分数,在复习过程中可以放弃一些内容,只要保证在大部分基本概念,关键技术,重要原理和历年考点上都把握住,能够拿到需要的分数就可以了。
二、复习笔记1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
(软考嵌入式系统设计师)基础知识复习笔记
嵌入式系统设计师考试笔记之嵌入式系统基础知识一、引言自《嵌入式系统设计师考试复习笔记之存储管理篇》在嵌入式在线的博客出现后,意外的得到很多朋友的关注和评论,收到不少朋友的邮件,问一些有关考试的问题,希望得到我的复习笔记的其他部分。
我非常感谢他们,他们的热切关注,使我有了继续往下写的无限动力,使我萌生了将我以前的复习笔记、考试经验结合大纲教程并重新按《教程》的章节顺序整理一份适合考生复习的笔记手册,笔记后面再分析历年的真题,按章节考点找出相关的考题进行分析,希望能和有兴趣的人们一起讨论讨论。
嵌入式系统设计师的一天考试分为上午和下午部分,两部分的考试方式、试题难度、考点分布和复习方法都是不同的。
这次我们讨论的是嵌入式系统基础知识,我本人觉得,这部分出下午大题的可能性不大,主要是分布在上午的75道选择题之中。
从历年的真题和考试大纲来看,上午的选择题主要考查一些基本概念,重要原理的理解,一些关键技术和一些重要的原理引申出来的简单计算。
根据这些考试特点,复习的时候可以采用适当的策略,当然每个人的方法都是不一样的,适合自己的办法才是最好的办法。
方法大家可以自己慢慢去体会,我的也不多说了,通过笔记和真题分析就可以体现处理。
对于很多关键的知识点和基本概念,除了记住之外还要彻底理解,否则出题的时候会进行一些变换,或者引申一些计算,那么就算你知道考那个考点,可能你也做不好。
在复习的过程中,你要记住:你不是要考一个很高的分数,而是要考一个通过的分数,在复习过程中可以放弃一些内容,只要保证在大部分基本概念,关键技术,重要原理和历年考点上都把握住,能够拿到需要的分数就可以了。
二、复习笔记1、嵌入式系统的定义(1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2)嵌入式系统发展的4个阶段:无操作系统阶段、简单操作系统阶段、实时操作系统阶段、面向Internet阶段。
嵌入式系统 复习笔记
一、每代计算机是根据什么划分的?嵌入式系统中计算机的需要侧重考虑哪些方面?【20分】每代计算机是根据计算机中使用的技术划分的。
第一代计算机:真空管第二代计算机:晶体管第三代计算机:集成电路第四代计算机:大规模集成电路第五代计算机:超大规模集成电路嵌入式系统中计算机的需要侧重考虑如下方面:1.系统内核小由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。
2.专用性强嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。
3.系统精简嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂4.高实时性这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。
软件代码要求高质量和高可靠性、实时性。
5.成本和功耗低面向单一需求的嵌入式应用通常被严格限制成本或功耗二、论述实时操作系统和目前PC个人通用计算机中使用的操作系统的异同。
实时操作系统一般是专用系统,而PC是通用计算平台实时操作系统的资源比PC少实时操作系统软件故障带来的后果比PC机严重PC 机一般使用的是分时系统,和实时操作系统不同实时操作系统大都有成本、功耗的要求实时操作系统得到多种微处理体系的支持实时操作系统需要专用的开发工具实时操作系统和PC 个人通用计算机中使用的操作系统都是计算机的操作系统,管理着系统资源。
三、 给出一个在嵌入式系统中的事件驱动系统的详细过程【20分】 嵌入式系统运行中,收到来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)驱动事件,这时嵌入式系统需要对驱动事件和现在所处理事件做优先级的比较,如果新的事件优先级低则忽略事件驱动,否则需保存好现在所处理事件的现场,接着转入新的事件的处理过程。
如果在处理新的事件的时候,有新的事件驱动,则需要重复上述步骤。
当驱动事件处理完成之后,嵌入式系统需返回都之前的事件继续处理。
(软考嵌入式系统设计师)之操作系统基础复习笔记
嵌入式系统设计师考试笔记之操作系统基础一、引言原定于11月8号的嵌入式系统设计师考试由于某种原因推迟,得以让我有时间再写几篇文章,在最后的时刻为大家提供最后的帮助。
我觉得,嵌入式系统设计主要包含系统设计、硬件设计和软件设计。
其中大部分工作是嵌入式软件方面,包括操作系统的移植、系统体系架构设计、设备驱动程序编写、用户应用程序设计等等。
所以在嵌入式系统设计师的考试中也应该集中在这几点上面。
前面的几篇文章对嵌入式硬件方面做了几个总结,现在对嵌入式软件方面做一些个人的归纳,再结合历年真题分析一下,对我认为常见的考点梳理了一下,不知道对大家有没有用处。
在嵌入式软件设计中,操作系统基础尤为重要,可以考查的考点也特别的多。
我觉得它的地位就跟四六级英语考试中的阅读部分一样。
这部分内容不能吃透,很难将这个考试拿下来,当然也有例外的。
我只是想说明这部分的重要性。
闲话少数,进入正题。
二、复习笔记1、嵌入式软件基础(1)嵌入式软件的特点:A、规模较小。
B、开发难度大。
C、实时性和可靠性要求高。
D、要求固化存储。
(2)嵌入式软件分类:A、系统软件:控制和管理嵌入式系统资源,如嵌入式操作系统、驱动程序、中间件等。
B、应用软件:定义嵌入式设备的主要功能和用途,负载与用户进行交互。
C、支撑软件:辅助软件开发的工具软件。
(3)无操作系统的嵌入式软件的两种实现方式:A、循环轮转优点:简单、直观、开销小、可预测。
缺点:过于简单,所有代码顺序执行,无法处理异步事件,缺乏并行处理能力。
B、前后台系统(在循环轮转的基础上增加了中断处理功能)前台(事件处理级):中断服务程序,负载处理异步事件。
后台(任务级):一个无限循环,负载资源分配、任务管理和系统调度。
(4)有操作系统的三大优点:A、提高系统的可靠性。
B、提高了系统的开发效率,降低了开发成本,缩短了开发周期。
C、有利于系统的扩展与移植。
(5)设备驱动层(也叫板级支持包BSP:包含了嵌入式系统中所有与硬件相关的代码)大多数的嵌入式硬件设备都需要某种类型软件的初始化和管理。
嵌入式系统设计师考试重点记忆
嵌入式系统设计师考试重点记忆
嵌入式系统设计师考试的重点记忆包括以下内容:
1. 嵌入式系统的基本原理和概念:重点记忆嵌入式系统的基本
概念、嵌入式系统的组成、嵌入式系统的性能指标等。
2. 实时操作系统:重点记忆实时操作系统的基本概念、实时调度算法、实时内存管理、中断处理等内容。
3. 嵌入式微控制器:重点记忆嵌入式微控制器的基本原理、寄存器、指令集、存储器等。
4. 嵌入式系统设计与开发:重点记忆嵌入式系统设计的基本流程、嵌入式系统软件开发的基本方法、C语言编程、汇编语言编程等内容。
5. 嵌入式系统的信号处理:重点记忆信号处理的基本理论、时域和频域信号处理方法、滤波器、采样与量化等内容。
6. 嵌入式系统的通信协议:重点记忆嵌入式系统的通信协议、串口通信原理、协议分类、通信控制等内容。
7. 嵌入式系统的硬件设计:重点记忆嵌入式系统的硬件设计方法、存储器层次结构、处理器选择、外设接口等内容。
8. 嵌入式系统的调试与测试:重点记忆嵌入式系统的调试方法、故障排除、性能测试等内容。
以上是嵌入式系统设计师考试的重点记忆内容,需要考生仔细备考。
同时,还需要熟悉相关的考试标准和题型,掌握应试技巧和方法。
软考嵌入式系统设计师知识点总结
软考嵌入式系统设计师知识点总结
软考嵌入式系统设计师考试涉及的知识点较为广泛,以下是一些重要的知识点总结:
1. 基础知识:包括嵌入式系统的基本概念、特点、分类、应用和发展趋势等。
2. 嵌入式微处理器:了解不同类型的嵌入式微处理器,如 ARM、MIPS、PowerPC 等,以及其体系结构和指令集。
3. 嵌入式操作系统:了解常见的嵌入式操作系统,如 Linux、VxWorks、RTLinux、FreeRTOS 等,以及其特点和适用场景。
4. 嵌入式系统开发工具:熟悉嵌入式系统开发所需的工具,如编译器、调试器、仿真器等,并了解其使用方法和技巧。
5. 嵌入式系统应用软件:了解嵌入式系统应用软件的开发流程、设计方法、编程语言和调试技巧等。
6. 嵌入式网络通信:了解嵌入式系统中的网络通信协议和通信接口,如UART、SPI、I2C、CAN、WiFi、蓝牙等。
7. 嵌入式系统可靠性设计:了解嵌入式系统可靠性设计的基本概念、方法和技术,如容错技术、故障检测与诊断技术等。
8. 实时操作系统:了解实时操作系统的基本概念、特点和实现技术,如任务调度、中断处理、实时时钟等。
9. 嵌入式人工智能:了解嵌入式系统中的人工智能技术,如机器学习、深度学习、自然语言处理等,以及其在嵌入式系统中的应用场景和发展趋势。
以上知识点只是其中的一部分,建议根据考试大纲和教材进行系统学习和复习。
同时,多做真题和模拟题也是提高考试成绩的有效方法。
2020年计算机等级考试《嵌入式系统开发工程师》复习要点梳理(最新)
1、差错控制编码
(1)根据码组的功能,可以分为检错码和纠错码两类。
检错码是指能自动发现差错的码,例如奇偶检验码;纠错码是指不仅能发现差错而且能自动纠正差错的码,例如循环冗余校验码。
(2)奇偶检验码、海明码、循环冗余校验码(CRC)。
2、嵌入式系统的度量项目
(1)性能指标:分为部件性能指标和综合性能指标,主要包括:吞吐率、实时性和各种利用率。
(2)可靠性与安全性
可靠性是嵌入式系统重要、突出的基本要求,是一个嵌入式系统能正常工作的保证,一般用平均故障间隔时间MTBF来度量。
(3)可维护性:一般用平均修复时间MTTR表示。
(4)可用性
(5)功耗
(6)环境适应性
(7)通用性
(8)安全性
(9)保密性
(10)可扩展性
性价比中的价格,除了直接购买嵌入式系统的价格外,还应包含安装费用、若干年的运行维修费用和软件租用费。
3、嵌入式系统的评价方法:测量法和模型法
(1)测量法是直接基本的方法,需要解决两个问题:
A、根据研究的目的,确定要测量的系统参数。
B、选择测量的工具和方式。
(2)测量的方式有两种:采样方式和事件跟踪方式。
(3)模型法分为分析模型法和模拟模型法。
分析模型法是用一些数学方程去刻画系统的模型,而模拟模型法是用模拟程序的运行去报考表达嵌入式系统的状态,而进行系统统计分析,得出性能指标。
(4)分析模型法中使用多的是排队模型,它包括三个部分:输入流、排队规则和服务机构。
(5)使用模型对系统进行评价需要解决3个问题:设计模型、解模型、校准和证实模型。
嵌入式系统开发笔记总结
嵌入式系统开发笔记总结
嵌入式系统开发是一个涉及硬件和软件的复杂过程,需要一定的技术知识和经验。
以下是我嵌入式系统开发笔记总结的一些关键点。
1.确定需求
在任何嵌入式系统的开发过程中,首先需要确定系统的需求,包括系统的功能和性能要求。
在此基础上,制定硬件和软件设计的计划,包括芯片选择和硬件平台搭建。
2.硬件设计
在嵌入式系统的设计过程中,硬件设计非常重要。
你需要考虑芯片的性能、功耗、尺寸和接口等关键因素。
为了保证系统的可靠性和稳定性,还需要设计相应的测试和验证方案。
3.软件设计
嵌入式系统的软件设计分为两个部分:内核和用户空间。
内核是系统的核心,负责处理系统中的各种任务和逻辑。
用户空间则负责与用户交互,提供各种服务和应用程序。
在软件设计过程中,需要考虑到系统的可靠性和效率。
为了提高系统的性能,可以采用一些技术,如使用多线程、提高内存和I/O的利用率等。
4.调试和测试
在系统开发的过程中,难免会出现各种问题和错误。
因此,调试和测试是必不可少的环节。
在调试过程中,可以利用工具进行定位和修复问题。
在测试过程中,可以采用不同的测试方案,包括单元测试、集成测试和压力测试等,验证系统的稳定性和性能。
嵌入式系统开发需要充分考虑系统的需求和性能,在硬件和软件设计和开发过程中,需要注意设计的可维护性和兼容性。
同时,调试和测试也是非常重要的环节,可以帮助开发尽早发现系统中的问题和错误,从而提高系统的可靠性和稳定性。
嵌入式系统复习笔记共9页word资料
嵌入式系统复习笔记-----增哥注意点:本复习指导基本已包括所有的程序设计以及分析题,每个考点后面均有例题,例题前的所有知识点我已经把他写的尽量通俗易懂,把程序分析的方法也写明,希望大家用几个小时时间来看看,通过考试绝对没有问题!PS:本材料后面所写的参考页码均是以新版书为标准,用旧版书的同学麻烦自己写上旧版书的页码,知识点都是一样的!!!本人能力有限,如有错误,请见谅!!1、状态寄存器CPSR各bit的意义:各位同学只需了解控制位bit0~bit7T:为状态:0表示ARM状态,1表示Thumb状态I、F表示IRQ中断FIQ中断的使能。
1时中断禁止,0时中断使能(允许该中断)。
2、三个特殊用途寄存器SP(R13) LR(R14) PC(R15)R13(SP):堆栈指针,保存当前处理器模式的堆栈栈顶。
R14(LR):链接R,保存子程序(含发生异常)的返回地址。
R15(PC):程序计数器,保存下一条指令的地址。
注意点:PC指针永远指向取值(什么意思?见第3点流水线)3、ARM7的流水线采用三级流水线,即取指→译码→执行例:假设一共有三条指令:0x4000 ADD PC,PC,#4 ;其中第二个PC指针的值为0x4008,将第二个PC+4=0x400C赋给第一个PC指针(回答上述PC指针永远指向取值的问题)0x4004 SUB0x4008 CMP那么CPU实际执行为:周期取指译码执行T1 ADDT2 SUB ADDT3 CMP SUB ADD解释:当第一CPU周期T1时先取址,取第一个指令的地址。
当第二CPU周期T2时取第二个指令的地址,然后译码,译的是第一个指令的码当第三CPU周期T3时取第三个指令的地址,译第二个指令的码,执行第一个指令所以:PC值=当前程序执行位置+8字节(如果CPSR中的T位为0,则+8;如果T位为1,则+4)4、PLL频率的计算(P133)PLLCFG 寄存器的意义:一个8位的PLL 配置寄存器PLLCFG[4:0]为MSEL[4:0],存放的是PLL 倍频器值(即M 值); 例:MSEL[4:0]=00101 则表示5,M=5+1=6PLLCFG[6:5]为PSEL[1:0],存放的是PLL 的分频器值(即P 值;) 例:PSEL[1:0]=00 则表示P=1 01 则表示P=2 10 则表示P=4 11 则表示P=8 PLL 频率公式:)2()2(P F F M P F F C C L K CCO OSC CCO ⨯⨯=⨯⨯⨯=注意点:CCO F 的范围为156~320MHZ ;例题:晶振的频率为10MHZ ,需要输出的系统时钟为60MHZ ,请问如何配置? 答:OSC F =10MHZ ,所以6==OSCCCLKF F M ,所以 M-1=5,所以MSEL[4:0]=0b00101;根据CCO F 的范围可知,)2(⨯=CCLK CCOF F P 所以,P 只能取2,即PSEL[1:0]=0b01;所以根据上述得:PLLCFG = (1<<5) | (5) ;这句话的意思是将2(也就是0b01)向左移5位,也就是将PESL 赋值了,然后与5逻辑或,也就是将0b00101赋值给MSEL 了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统设计师考试笔记之嵌入式软件程序设计一、嵌入式软件开发概述1.嵌入式应用软件开发步骤:⑴、硬件的设计与实现;⑵、设备驱动软件的设计与实现;⑶、嵌入式操作系统的选择,移植,以及API接口函数的设计;⑷、支撑软件的设计与调试;⑸、应用程序的设计与调试;⑹、系统联调、样机交付。
2、嵌入式软件开发的特点:⑴、需要交叉编译工具;⑵、通过仿真手段进行调试;⑶、开发板是中间目标机;⑷、可利用的资源有限;⑸、需要与硬件打交道;3、嵌入式开发遇到的问题:⑴、软件硬协同设计;⑵嵌入式操作系统;⑶、代码优化;⑷、有限的I/O资源;二、嵌入式程序设计语言1、程序设计语言概述⑴机器语言:是与计算机硬件关系最为密切的计算机语言,在计算机硬件上执行的就是一条条用机器语言来编写的指令;汇编语言:基本思路是用符号的形式来代替二进行的指令。
低级语言:通常将机器语言和汇编语言统称为低级语言。
⑵语言处理程序语言处理程序:担任翻译任务的程序称为语言处理程序。
包括:汇编程序、解释程序、编译程序。
源程序:用汇编语言或某程高级语言编写的程序。
源程序不能直接在计算机上运行。
解释程序:也称解释器,它直接解释执行源程序、或将源程序翻译成某种中间表示形式后再执行。
编译程序:是将源程序翻译成目标语言程序,然后在计算机上运行。
区别:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行;而在解释方式下,解释程序和源程序要参与程序的运行过程中,运行控制权在解释程序。
程序设计语言的定义⑶包括:语法、语义、语用、语境。
2、汇编语言⑴、基本原理:为特定计算机或计算机系统设计的面向机器的符号化程序设计语言。
包括三类语句:指令语句、伪指令语句、宏指令语句。
指令语句:又称机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被CPU直接识别并执行相应的操作;伪指令语句:指示汇编程序在对源程序进行汇编时完成某些工作。
区别:伪指令在汇编后不产生机器代码,而指令语句产生机器代码。
常用:定义伪指令 EQU;存储定义伪指令 DCB;汇编控制伪指令 IF、ELSE、ENDIF,WHILE WEND;开始伪指令 ENTRY;结束伪指令 END。
宏指令:将多次重复使用的程序段定义为宏⑵、ARM汇编语言格式:ARM语言以段为单位组织源文件。
段是相对独立的、具有特定名称的、不可分割的指令或数序列。
段可以分为代码段和数据段,代码段存放执行代码、数据段存放代码运行时用到的数据。
一个ARM源程序至少要一个代码段。
ARM汇编语言程序经过汇编处理后生成一个可执行的映像文件,包括:一个或多处代码段,代码段通常是只读的;0个或多个包含初始值的数据段,通常可读写;0个或多处不含初始值的数据段,可读写;3、面向过程的语言定义:也叫命令式语言或强制式语言,通过一系列可执行的运算及运算的先后次序来描述计算的过程。
过程序式语言包括:数据、运算、控制、函数。
数据成分:是一种程序语言的数据类型。
数据属性:包括名称、类型、存储类别、作用域、生存周期。
运算成份:算术运算、关系运算、逻辑运算。
控制成份:顺序、选择、重复;函数:是程序模块的主要成份,它是一段具有独立功能的程序,包括三个概念:函数定义,函数声明、函数调用。
一次函数调用的步骤:⑴、在内存的栈空间当中为其分配一个栈帧,用来存放该函数的形参变量和局部变量;⑵、把实参变量的值复制到相应的形参变量中;⑶、控制流转移到该函数的起始位置;⑷、该函数开始执行;⑸、当这个函数执行完成后,控制流和返回值返回到函数调用点。
4、面向对象的语言面向对象=对象+分类+继承+通过消息的通信对象:是基本运行时的实体,包括数据(属性),数据操作的行为,所以一个对象将属性和行为封装成一个整体。
由对象名、属性、操作三个部分组成。
方法:在对象内的操作称为方法;消息:对象之间进行通信的一种构造;类:定义了一组大体上相似的对象,类是在对象之上的抽象,对象是类的具体化。
继承:父类和子类之间共享数据和方法的机制。
多态:不同的对象收到同一消息可以产生完成不同的结果,这一现象称为多态。
动态绑定:是一个把过程调用和响应调用所需要执行的代码加以结全的过程。
C++:一种面向对象的语言,支持面向对象,也支持面向过程。
5、汇编、编译、解译程序的基本原理⑴、汇编程序:是将汇编语言源程序翻译成机器语言程序。
汇编程序一般至少需要两次扫描源程序才能完成翻译过程:第一次主要工作是定义符号的值并创建一个符号表ST;第二次是扫描的任务产生目标程序。
⑵、编译程序:功能是把某些高级语言编写的源程序翻译成与之等价的目标语言程序。
分成六个阶段:词法分板阶段、语法分板阶段、语议分析阶段、中间代码生成阶段、代码优化阶段、目标代码生成阶段。
⑶、解释程序:是另一种语言处理程序,在词法、语法、语议分析方面与编译程序,它直接执行源程序或源程序的内部形式。
因此解释程序不产生源程序的目标程序,这是与编译程序的主要区别。
三、嵌入式软件开发环境宿主机:是用于开发嵌入式系统的计算机,运行的工具包括:文本编辑器、交叉调试器、集成环境以及各种分析工具。
目标机一般在嵌入式应用软件的开发和调试期使用,它可以是嵌入式应用软件的实际运行环境,也可以是能够代替实际运行环境的仿真系统。
常用的调度方法:直接测试法、调试监控器法、ROM仿真器法、在线仿真器法、片上调试法及模拟法。
四、嵌入式软件开发1、嵌入式平台选型嵌入式设计分三个阶段:分析、设计和实现。
分析阶段:是确定要解决的问题及需要完成的目标,也称需求阶段;设计阶段:主要是解决如何在给定的约束条件下完成用户的需求;实现阶段:主要是解决如何在所选择的硬件和软件的基础上进行整个软硬件系统的协调和实现。
硬件的选择包括:处理器、硬件部件软件的选择包括:操作系统、编程语言、软件开发工具、硬件调试工具和软件组件。
2、软件设计⑴、软件设计任务:准备一个工作计划;确定软件的结构;设计评审;维护工作计划;与硬件部门密切合作、相互协调;控制工作的结果、把工作记录存档。
⑵、模块结构设计模块结构设计的任务:将系统划分为模块,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构设。
模块:是组成系统的基本单位,它的特点是可以组合、分解和更换。
模块的四要素:输入和输出;处理功能;内部数据;程序代码。
模块结构设计应遵守的原则:所划分的模块其内部凝聚性要强,模块之间的联系要少,即要有很强的独立性;模块之间的连接只能存在上下级之间的调用关系,不能有同级之间的横向关系;整个结构呈树状结构,不允许网状结构或交叉调用关系;所有模块必须严格地分类编码并建立归档文件。
⑶、结构化设计的方法结构化设计的方法是一种面向数据流的设计方法,基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
信息流的类型:变换流和事务流。
结构化设计方法的步骤:复查并精化数据流图;确定DFD的信息流类型(变换型或事务型);根据流类型分别实施变换分析或事务分析;根据系统设计的原则,对程序结构图进行优化。
3、嵌入式程序设计⑴、bootloader的设计步骤;stage1和stage2两大部Stage1步骤:硬件设备初始化;为加载bootloader的stage1准备内存空间;复制bootloader的stage1到内存;设置好堆栈;跳转到stage1的C入口点。
Stage2步骤:初始化本阶段要使用的硬件设备;检测系统内存映射;将内核映像和根文件系统映像到flash上读入到内存中;为内核设置启动参数,并调用内核。
⑵、设备驱动程序设计⑶、网络应用程序设计4、编码四个步骤:确定源程序的标准格式、制定编程规范;准备编程环境;编写代码;进行代码审查,提高编码质量。
5、测试⑴、概述软件测试:是从经济和效率的角度出发,对软件代码进行质量和正确性保证的一个过程。
系统测试的目的:是为了发现至今尚未发现的错误。
规范化的测试过程:拟定测试计划;编制测试大纲;根据测试大纲设计和生产测试用例;实施测试;生成测试报告。
⑵、测试方法分类:人工测试和机器测试人工测试的三种方法:个人复查、抽查、会审机器测试分成:黑盒测试和白盒测试黑盒测试:也称功能测试,将软件看成黑盒子,在完成不考虑软件内部结构和特性的情况下,测试软件的外部特性。
包括:极限情况测试;边界测试;异常测试;随机测试;性能测试。
白盒测试:也称结构测试,将软件看成透明的的盒,根据程序的内部结构和逻辑来设计测试用例。
原则:程序模块中的所有独立路径至少执行一次;在所有的逻辑判断中,取“真”“假”的两种情况至少都要执行一次;每个循环都应在边界条件和一般条件下各执行一次;测试程序内部的数据结构的有效性。
⑶、测试步骤:①、系统平台测试:包括硬件电路测试、操作系统及底层驱动程序测试;②、单元测试:也称模块测试。
一般采用白盒测试法。
主要测试模拟块接口、局部数据结构、重要的执行路径、出错处理、边界条件。
测试时需要开的模块包括:驱动模块(相当于一个程序,负责接收测试用例的数据,将这些数据送到测试模块,并输出结果)和桩模块(也称为存根模块,用来代替测试模块中所调用的子模块,其内可进行少量的数据处理,目的是为了检验入口,并输出调用和返回的信息)③、集成测试:也称组装测,就是把各个模块按照系统设计说明书的要求组合起来进行测试。
两种方法:一种是分别测试各个模块,再把这些模块组合起来进行整体测试,即非增量式集成;另一种是把下一个要测试的模块组合到已测试好的模块中,测试完成再将下一个模块组合进来,进行测试,这样逐步把所有的模块组合在一起,并完成测试,即增量式集成。
④、系统测试:将嵌入式软件、硬件,外设和网络等各种因素结全在一起,进行整个系统的组装测试和确认测试。
一般采用黑盒测试法。
主要测试内容:恢复测试、强度测试、性能测试、可靠性测试。
⑤、测试结果分析对测试结果分析和比较帮助错误的定位,指导程序员修改代码。
⑷、覆盖测试:是一种白盒测试法,测试人员必须拥有程序的规格说明书和程序清单。
其基本思路是以程序的内部结构为基础来设计测试用例,以覆盖尽可能多的程序内部逻辑结构,发现其中的错误和问题,一般用在单元测试阶段。
主要策略:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。
5、下载运行五、嵌入式软件移植可分成有操作系统和无操作系统的移植。
uC/OS-II操作系统代码被分成三个部分:一是,与处理器无关的代码,如任务管理、存储管理、信号量等;二是,与系统配置有关,应用程序开发人员可以通过修改这些配置文件来裁剪内核,选择自已需要的系统服务;三是,与处理器相关的代码,包括OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C三个文件。
提高嵌入式应用软件的可移植性,遵守的原则:在软件设计上,采用层次化设计和模块化设计;在软件体系结构上,可在操作系统和应用软件之间引入一个虚拟机层,或者叫操作系统抽象层,将通用的、共性的操作系统API接口函数封装起来;在功能服务的调用上,要尽量使用可移植的函数;将不可移植的部分局域化;提高代码的可重用性。