做一名嵌入式软件工程师应必备那些技能?

对于软件应掌握到何种程度?

  嵌入式系统设计师考试大纲

  一、考试说明
  1、考试要求:
  (1)掌握科学基础知识;
  (2)掌握嵌入式系统的硬件、软件知识;
  (3)掌握嵌入式系统分析的方法;
  (4)掌握嵌入式系统设计与开发的方法及步骤;
  (5)掌握嵌入式系统实施的方法
  (6)掌握嵌入式系统运行维护知识;
  (7)了解信息化基础知识、信息技术引用的基础知识;
  (8)了解信息技术标准、安全,以及有关法律的基本知识;
  (9)了解嵌入式技术发展趋势;
  (10)正确阅读和理解计算机及嵌入式领域的英文资料。
  2、通过本考试的合格人员能根据项目管理和工程技术的实际要求,按照系统总体设计规格进行软、硬件实际,编写系统开发规格说明书等相应的文档;组织和指导嵌入式系统靠法实施人员实施硬件电路、编写和调试程序,并对嵌入式系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。
  二、考试范围
  考试科目1:嵌入式系统基础知识
  1.计算机科学基础
  1.1数制及转换
  o 二进制、八进制、十进制和十六进制等常用数制及其相互转换
  1.2数据的表示
  o 数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出)
  o 字符、汉字、声音、图像的编码方式
  o 校验方法和校验码(奇偶验码、海明校验码、循环校验码)
  1.3算术和逻辑运算
  o 计算机中的二进制数运算方法
  o 逻辑代数的基本运算和逻辑表达式的化简
  1.4计算机系统结构和重要部件的基本工作原理
  o CPU和存储器的组成、性能、基本工作原理
  o 常用I/O设备、通信设备的性能,以及基本工作原理
  o I/O接口的功能、类型和特点
  o 虚拟存储存储基本工作原理,多级存储体系
  1.5安全性、可靠性与系统性能评测基础知识
  o 诊断与容错
  o 系统可靠性分析评价
  o 计算机系统性能评测方法
  2.嵌入式系统硬件知识
  2.1数字电路和逻辑电路基础
  2.1.1组合电路和时序电路
  2.1.2总线电路与电平转换电路
  2.1.3可编程逻辑器件
  2.2嵌入式微处理器基础
  2.2.1嵌入式微处理器体系结构
  o 冯.诺伊曼结构与哈佛结构
  o CISC与RISC
  o 流水线技术
  o 信息存储的字节顺序(大端存储法和小端存储法)
  2.2.2嵌入式系统处理器的结构和类型
  o 常用8位处理器的体系结构和类型
  o 常用16位处理器的体系结构特点
  o 常用32位处理器的体系结构特点
  o 常用DSP处理器的体系结构特点
  o 多核处理器的体系结构特点
  2.2.3异常
  o 同步异常(陷阱、故障、终止)
  o 异步异常(中断)
  o 可屏蔽中断、不可屏蔽中断
  o 中断优先级、中断嵌套
  2.3 嵌入式系统的存储体系
  2.3.1存储器系统
  o 存储器系统的层次结构
  o 高速缓存(Cache)
  o 内存管理单元(MMU)
  2.3.2 ROM的种类与选型
  o 常见ROM的种类
  o PROM、EPROM、E2PROM型ROM的典型特征和不同点
  2.3.3 Flash Memory的种类与选型
  o Flash Memory的种类
  o NOR和NAND型Flash Memory的典型特征和不同点
  2.3.4 RAM的种类与选型
  o 常见RAM的种类
  o SRAM、DRAM、DDRAM、NVRAM的典型特征和不同点
  2.3.5 外存
  o 常见外存的种类
  o 磁盘、光盘、CF、SD等的典型特征和不同点
  2.4 嵌入式系统I/O接口
  2.4.1 定时器和计数器基本原理与结构
  2.4.2 GPIO、PWM接口基本原理与结构
  2.4.3 A/D、D/A接口基本原理与结构
  2.4.4键盘、显示、触摸屏接口基本与结构
  2.4.5嵌入式系统音频接口
  2.5嵌入系统通信及网络接口
  o PCI、USB、串口、红外、并口、SPI、IIC、PCMCIA的基本原理与结构
  o 以太网、CAN、WLAN、蓝牙、1394的基本原理与结构
  2.6嵌入式系统电源分类及电源原理
  2.7电子电路设计
  2.7.1电子电路设计基础知识
  o 电子电路设计原理
  o 电子电路设计方法及步骤
  o 电子电路设计中的可靠知识
  2.7.2 PCB设计基础知识
  o PCB设计原理
  o PCB设计方法及步骤
  o 多层PCB设计的注意事项及布线原则
  o PCB设计中的可靠性知识
  2.7.3电子电路测试基础知识
  o 电子电路测试原理与方法
  o 硬件抗干扰测试
  3. 嵌入式系统软件知识
  3.1嵌入式软件基础知识
  3.1.1嵌入式软件的分类(系统软件、支撑软件、应用软件)
  3.1.2无操作系统支持的嵌入式软件体系结构(轮询、中断、前后台)
  3.1.3有操作系统支持的嵌入式软件体系结构
  3.1.4板极支持包基础知识(系统初始化、设备驱动程序)
  3.1.5嵌入式中间件(GUI、数据库)
  3.2 嵌入式操作系统基础知识
  3.2.1嵌入式操作系统体系结构
  o 单体结构、分层结构和微内核结构
  3.2.2任务管理
  o 多道程序技术
  o 进程、线程、任务的概念
  o 任务的实现(任务的层次结构、任务控制块、任务的状态及状态转换、任务队列)
  o 任务调度(调度算法的性能指标、可抢占调度、不可抢占调度、先来先服务、短作业优先算法、时间片轮转算法、优先级算法)
  o 实时系统及任务调度(RMS、EDF算法)
  o 任务间通信(共享内存、消息、管道、信号)
  o 同步与互斥(竞争条件、临界区、互斥、信号量、死锁)
  3.2.3存储管理
  o Flat存储管理方式
  o 分区存储管理(固定分区、可变分区)
  o 地址重定位(逻辑地址、物理地址、地址映射)
  o 页式存储管理
  o 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法、工作集模型)
  3.2.4设备管理
  o 设备无关性、I/O地址、I/O控制、中断处理、缓冲技术、假脱机技术)
  3.2.5文件系统基础知识
  o 文件和目录
  o 文件的结构和组织
  o 存取方法、存取控制
  o 常见嵌入式文件系统(FAT、JFFS、YAFFS)
  3.2.6操作系统移植基础知识
  3.3 嵌入式系统程序设计
  3.3.1嵌入式软件开发基础知识
  3.3.2嵌入式程序设计语言
  o 汇编、编译、解释系统的基础知识和基本工作原理
  o 汇编语言
  o 基于过程的语言(过程/函数、参数传递、全局变量、递归、动态内存分配、数据类型)
  o 面向对象的语言(对象、数据抽象、继承、多态、自动内存管理)
  o 各类程序设计语言的主要特点和适用情况
  3.3.3嵌入式软件开发环境
  o 宿主机、目标机
  o 编辑器、编译器、链接器、调试器、模拟器
  o 常用嵌入式开发工具(编程器、硬件仿真器、逻辑分析仪、示波器)
  o 集成开发环境
  o 开发辅助工具
  3.3.4嵌入式软件开发
  o 软件设计(模块结构设计、数据结构设计、内存布局、面向对象的分析与设计)
  o 嵌入式引导程序的设计、设备驱动程序设计、内核设计、网络程序设计、应用软件设计)
  o 编码(编程规范、代码审查)
  o 测试(测试环境、测试用例、测试方法、测试工具)
  o 下载和运行
  3.3.5嵌入式应用软件移植
  4.嵌入式系统的开发与维护知识
  4.1系统开发过程及其项目管理
  o 系统开发生命周期各阶段的目标和任务的划分方法
  o 系统开发项目挂你基础知识及其常用管理工具使用方法
  o 主要的系统开发方法
  o 系统开发工具与环境知识
  4.2 系统分析基础知识
  o 系统分析的目的和任务
  o 系统分析方法
  o 系统规格说明书的编写方法
  4.3 系统设计知识
  o 传统系统设计方法
  o 软硬件协同设计方法
  4.4 系统实施知识
  o 系统架构设计
  o 系统详细设计
  o 系统调试技术
  o 系统测试
  4.5 系统维护知识
  o 系统运行管理知识
  o 系统维护知识
  o 系统评价知识
  5.安全性知识
  o 安全性基本概念
  o 加密与解密机制
  6.标准化知识
  o 标准化的概念
  o 国际标准、国家标准、行业标准、企业标准基本知识
  o 代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识
  o 标准化机构
  o 嵌入式系统相关标准
  7.信息化基础知识
  o 信息化和信息系统基本概念
  o 有关的法律、法规
  8.嵌入式技术发展趋势
  9.计算机专业英语
  o 正确阅读和理解相关领域的英文资料

  考试科目2:嵌入式系统设计应用技术
  1.嵌入式系统开发过程
  1.1系统需求分析方法与步骤
  1.2系统设计
  o 系统硬件配置
  o 系统功能组成分配
  o 软硬件功能的分配
  o 可行性验证及设计审查
  o 系统规格
  o 周期,成本及工作量估计
  o 开发计划
  1.3软硬件协同设计
  1.4硬件设计
  1.5软件设计
  o 软件结构
  o 设计评审
  o 软件详细设计
  1.6系统测试
  o 测试环境
  o 测试计划(内容、方法、标准、过程、检验)
  o 硬件测试
  o 软件测试(单元测试、集成测试)
  o 软硬件联合测试
  o 实施测试
  1.7系统评估
  1.8 软件维护
  2.嵌入式系统硬件设计
  2.1嵌入式系统硬件基本结构
  2.1.1嵌入式微处理结构与应用
  2.1.2 异常及中断处理技术
  2.1.3 DMA技术
  2.1.4 多处理系统
  o 多处理器系统特点
  o 多处理器系统构建技术
  2.1.5 总线架构
  o 应用系统中的总线配置
  2.1.6 内存种类及架构
  o 存储器系统接口设计
  2.1.7数字电路和逻辑电路
  o 专用集成电路
  o 可编程逻辑控制器件
  2.2输入/输出接口设计
  2.2.1 输入/输出接口
  o 接口信号电平转换
  o 接口驱动电路设计
  2.2.2输入/输出接口应用技术
  o 外围设备
  o 串口通信
  o 并口通信
  o 模拟接口
  o 通信接口设备
  o 通信标准和协议
  o 数据传输方式
  2.3外围设备接口应用技术
  2.3.1 外围存储设备
  o 存储卡,记忆棒,IC卡,MMC卡,SD卡
  o DVD 、CD-R 、CD-RW
  2.3.2外围输入/输出设备
  o 键盘,鼠标,触摸屏
  o 液晶板、LED、7段数码管、蜂鸣器
  2.3.3电源设计技术
  2.4可靠性与安全性设计技术
  2.4.1 错误检测与隔离技术
  2.4.2 冗余设计
  2.4.3 系统恢复设计
  2.4.4 诊断技术
  2.4.5常用安全标准
  2.4.6 抗干扰设计
  2.4.7电磁兼容设计
  2.4.8系统加密
  3.嵌入式系统软件设计
  3.1嵌入式系统软件结构设计
  3.2嵌入式操作系统应用技术
  3.2.1 时间管理
  o 系统时间
  o 时钟中断
  3.2.2内存管理
  o 静态内存管理
  o 动态内存管理
  3.2.3任务管理和任务间的通信
  o 任务间的通信机制
  o 信号量
  o 邮箱
  o 消息队列
  3.2.4异常处理
  o 异常处理方法
  o 中断优先级处理方法
  o 系统调用
  3.2.5嵌入式文件系统应用技术
  3.2.6嵌入式系统图形用户接口(GUI)应用技术
  3.2.7嵌入式系统数据库应用技术
  3.3嵌入式软件设计技术
  3.3.1汇编语言设计
  o 数据类型
  o 汇编语言程序结构
  o 汇编语言程序设计及优化
  o 子程序调用
  3.3.2嵌入式C语言设计
  o ANSI-C的数据类型
  o C程序结构
  o C语言程序设计及优化
  o 程序的编译与链接
  3.3.3面向对象程序设计与开发
  o 面向对象的分析与设计方法UML
  o 面向对象的编程语言
  o 使用C++进行嵌入式系统开发
  o 使用Java进行嵌入式系统开发
  3.4 系统级软件设计技术
  o 嵌入式系统固件与系统初始化设计
  o 设备驱动程序设计
  o 硬件抽象层、板级支持包设计
  o 嵌入式软件的移植技术
  4.嵌入式系统开发技术
  4.1系统开发环境
  4.1.1开发工具
  o 文本编辑器
  o 汇编、编译和连接程序
  o ICE和ICE监控器
  o 配置管理工具
  o 逆工程工具
  4.1.2平台
  o 操作系统
  o 分布式开发环境
  4.1.3开发环境创建方法及评估
  o 开发工作分析
  o 开发环境的建立
  o 维护、管理、使用开发环境的方法
  o 开发环境的评测
  4.2实时系统的分析技术
  4.2.1实时系统的分析技术
  o 结构化分析方法
  o 面向对象分析方法
  4.2.2实时系统的设计技术
  o 结构化分析方法
  o 面向对象分析方法
  4.3硬件设计环境
  4.3.1硬件描述语言
  o 硬件开发设计过程
  o 硬件描述语言的种类与特点
  4.3.2仿真技术
  o 逻辑仿真方法
  o 逻辑仿真工具
  4.3.3大规模集成电路系统的开发方法
  o ASIC开发方法
  o FPGA设计方法
  o IP(intellectual property)
  4.4协同设计
  o 软硬件任务工和切调
  o 设计评审
  4.5嵌入式系统低功耗设计技术
  o 低功耗系统工作机制
  o 低功耗系统模型结构
  o 低功耗的硬件设计技术
  o 低功耗的软件设计技术
  4.6分布式嵌入系统设计
  o 分布式系统设计原理
  o 分布式系统的通信技术
  o 分布式系统设计应用
  5.嵌入式系统应用
  5.1嵌入式系统在控制领域中的应用
  5.2嵌入式系统在手持设备中的应用
  5.3嵌入式系统在模式识别中的应用

  三、题型举例
  1、选择题
  若嵌入式系统中采用I/O地址统一编址模式,访问内存单元和I/O设备是通过 (1) 来区分的。
  (1) A.数据总线上输出的数据
  B.不同的地址代码
  C.不同的地址总路线
  D.不同的指令

  2、问答题
  在某个嵌入式操作系统中,任务的状态转换图(不完整)如下,请阅读该图以及下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
  〔说明〕
  任务总共有五个状态:休眠状态、就绪状态、运行状态、中断服务状态和等待状态,在任何时候,一个任务只会处于其中的某一个状态。
  〔问题1〕(3分)
  在单个CPU的系统中,处于运行状态的任务最多有多少个?
  〔问题2〕(3分)
  对于运行状态、就绪状态和等待状态这间的相互转换,图中并没有画出来,请补充。用文字处理的形式来进行描述,格式形如"运行状态→中断服务状态"。
  〔问题3〕6分)
  从运行状态可以直接变为等待状态吗?如果不能为什么?如果能什么时候会发生这种转换?举例说明。
  〔问题4〕(3分)
  从就绪状态可以直接变为等待状态吗?如果不能,为什么?如果能,什么时候会发生这种转换?举例说明。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-11-29
会耍电脑游戏就行!!

嵌入式软件工程师需要具备哪些业务能力
1、掌握科学基础知识及电路基础知识。2、掌握嵌入式的硬、软件知识。3、掌握嵌入式系统分析的方法。4、掌握嵌入式系统设计与开发的方法及步骤。5、掌握其嵌入式系统实施的方法。6、掌握嵌入式系统运行维护知识。7、了解信息化基础知识,信息技术应用的基础。8、了解信息技术标准、安全、以及有关法律的基本...

嵌入式工程师需要掌握哪些技能
2.团队协作能力:嵌入式工程师需要与其他团队成员密切协作,如软件工程师、硬件工程师等。能够有效地沟通和协调各个团队成员的工作,共同完成项目的开发和实施。

嵌入式工程师需要掌握哪些技能
嵌入式工程师需要掌握的技能有:1、具有C语言或C++语言、汇编语言、操作系统等基础。2、熟悉模拟电子技术和数字电子技术等硬件知识。3、了解处理器体系结构。嵌入式软件工程师主要从事嵌入式软件开发工作。涉及应用层以及底层软件开发和设计工作。嵌入式工程师的工作内容分为操作系统和硬件两个方面。积累丰...

嵌入式软件工程师需要掌握什么
嵌入式软件工程师需要具备简单的硬件电路设计能力。需要懂得C语言和一些简单的汇编语言编程;能够阅读一般嵌入式系统的原理图;至少熟悉一种嵌入式系统的软件开发环境;熟悉一种嵌入式系统软件的开发过程;必要硬件基础知识;理解常见的嵌入式操作系统的工作原理。需要懂得:(1)懂得C语言和一些简单的汇编语言编程。...

做一名嵌入式软件工程师需要具备哪些技能
嵌入式软件工程师需要具备以下技能:一名嵌入式工程师首先需要熟练的掌握最基础的C语言,并且熟练运用linux操作系统,其次就是要知道简单的数据结构,linux常用命令,linux环境下高级编程。这些知识都掌握了就可以可以做嵌入式系统应用了。到后面还可以学习,ARM体系结构以及接口技术,linux驱动程序编写等等,然后...

嵌入式软件工程师需要掌握哪些技能
嵌入式软件工程师需具备技能:1、较重要的是C语言编程,以及C++,这个与你读程,应用,开发项目,做系统移植息息相关;2、操作系统:LINUX,WINCE等,至少学习过一种,并且还需要对些基础知识有蛮多的了解;3、对ARM,FPGA,DSP等这些硬件比较了解;4、具有较强的实践能力。嵌入式软件工程师是从事嵌入...

嵌入式软件开发专业要学什么(嵌入式软件工程师学什么专业)
嵌入式软件开发是一个涉及多个领域的综合性专业,要成为一名嵌入式软件工程师,你需要学习以下主要方面的知识和技能:1.计算机科学与编程:建立坚实的计算机科学基础,包括数据结构、算法、计算机组成原理等。精通至少一种编程语言,如C、C++或Python。嵌入式系统通常使用底层语言进行开发,因此对底层编程有深入...

做嵌入式软件工程师需要具备什么技能
嵌入式工程师能力提升,需注意几点呢?1.专注于一个工作,对于程序员来讲,专注于某一个开发工作是非常重要的,如果同时处理几个任务,你只会为此耗费精力,这样只会导致工作效率降低,所以作为嵌入式工程师应该专心做好一个工作,再去做下一个。2.建立条理工作系统,对于程序员来讲,工作如果没有条理,...

嵌入式工程师需要掌握哪些技能
1、嵌入式工程师需要具备简单的硬件电路设计能力,包括数字电路和模拟电路;做嵌入式软件对硬件一样要有一定的基础。2、嵌入式工程师需要懂得C语言和一些简单的汇编语言编程。3、嵌入式工程师需要在操作系统方面至少要精通一种嵌入式操作系统,比如uCOSIII、freeRTOS 、Vxworks等,并且一定要学嵌入式linux ,...

未来的嵌入式开发工程师需要具备哪些能力
6. 具备吃苦耐劳和不断学习的能力,作为一个嵌入式开发工程师一是要具有吃苦耐劳 的能力、毕竟软件开发是一个项目性很强的工作,再其次,优秀的工程师还需要有不断学 习的能力,软件行业的发展速度惊人,今天还引以为傲的开发技能和经验,二三年后或许 就会成为明日黄花,所以要求开发人员一定要具备不断...

相似回答