1、嵌入式硬件工程师怎么创业
这个建议你看一个成功者的经历
吴鉴鹰
(1985.9),老家安徽安庆,原电子科技大学学生,后接触单片机,已经成为
单片机领域的一个企业家,
名下有鉴鹰电子科技有限公司,
主要进行教育类电子产品的开发
和电力电力产品的开发,旗下的产品有工频电阻焊机控制器,中频电阻焊机控制器。
在本科期间,就积极参与校园的各项活动,那时我对电子的感情用“痴迷”两个字来形
容绝不为过,参加学校组织的各项比赛,在本科生期间,获得全省的电子设计大赛一等奖,
飞思卡尔比赛二等奖。利于业余时间申请并获得专利10余项。
2、嵌入式发展方向如何?嵌入式有什么发展方向?
嵌入式技术发展前景和发展方向
嵌入式技术可以说是当前最热门、更具发展前途的IT应用领域之一,嵌入式技术与应用***遵循的是面向产业发展和定位人才培养的原则,培养学生在嵌入式领域进行软件开发、软/硬件测试、系统维护等等几方面的技能,随着嵌入式技术应用越来越广,嵌入式系统技术成为了当下具有非常广阔的应用前景,接下来简单了解下嵌入式技术就业前景以及发展方向的相关内容。
嵌入式技术前景:
嵌入式系统的广泛应用必然会带来相关技术人才的极大需求,国内嵌入式软件领域技术人员是相当匮乏的,中国的各跨国公司以及国内家电巨头都面临着嵌入式人才严重短缺的问题,据相关调查显示中国嵌入式软件行业每年至少存在50万人才的巨大缺口,并且这个数字还在以每年20%的速度显示增长,但国内嵌入式软件人才供应量真可谓是杯水车薪,远不能够满足行业的需求,主要有两方面的原因,1.需求的增长;2.掌握嵌入式软件开发技能的人才供应缺口巨大。
解读完以上内容之后,小编想跟大家来分享下嵌入式工程师的薪资待遇问题,相信这也是很多人关心的问题,一般来所,嵌入式人才可以说是当值无愧的白领,华清远见培训过的应届大学生薪资水平一般都能够达到1w+,几年工作经验的工程师薪资会更高,当然懂得嵌入式技术的人也非常适合创业,所以嵌入式的就业前景非常广。
嵌入式技术展方向:
嵌入式技术应用范围极广,日常生活中的手机、电子词典、可视 *** 、数字相机、汽车电子和家电控制系统等等都是典型的嵌入式系统,学生在毕业之后可选择从事家用电子、汽车电子、电信等行业的计算机应用设计开发,可以选择担任嵌入式产品及应用系统的设计与开发工程师,从事嵌入式技术的应用项目设计开发、产品维护和技术服务等相关工作。
以上就是嵌入式技术发展前景和发展方向,希望对你的选择有帮助。
3、嵌入式软件工程师创业
嵌入式系统设计师考试大纲
一、考试说明
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分)
从就绪状态可以直接变为等待状态吗?如果不能,为什么?如果能,什么时候会发生这种转换?举例说明。
4、嵌入式系统的前景如何?
随着信息化,智能化, *** 化的发展,嵌入式系统技术也将获得广阔的发展空间。那么未来嵌入式将会有哪些发展趋势呢?前景如何?一起来分析下。
1.人工智能与元宇宙
人工智能无疑将是元宇宙(Meta)的关键。人工智能将有助于创造在线环境,让人们在元宇宙中体会宾至如归的感觉,培养他们的创作冲动。人们或许很快就会习惯与人工智能生物共享元宇宙环境,比如想要放松时,就可与人工智能打网球或玩国际象棋游戏。
2.低代码和无代码人工智能
2020年,低代码/无代码人工智能工具异军突起并风靡全球,从构建应用程序到面向企业的垂直人工智能解决方案等应用不一而足。这股新鲜势力有望在2022年持续发力。数据显示,低代码/无代码工具将成为科技巨头们的下一个战斗前线,这是一个总值达132亿美元的市场,预计到2025年其总值将进一步提升至455亿美元。
3.自动驾驶交通工具
特斯拉公司表示,未来,其生产的汽车将拥有完全的自动驾驶能力。谷歌、苹果、通用和福特等公司也有可能在自动驾驶领域的重大飞跃。
此外,由非营利的海洋研究组织ProMare及IBM共同打造的“五月花”号自动驾驶船舶(MAS)已于2020年正式起航。
4.创造性人工智能
在GPT—4谷歌“大脑”等新模型的加持下,人们可以期待人工智能提供更加精致、看似“自然”的创意输出。谷歌“大脑”是Google X实验室的一个主要研究项目,是谷歌在人工智能领域开发出的一款模拟人脑具备自我学习功能的软件。
5、嵌入式领域的职业发展方向有哪些
嵌入式领域的职业发展方向
1、单片机
工控程序(不跑os)--入门容易,无外乎就是掌握汇编和c,能够根据datasheet来写,发展前景一般,也没有太大的技术难度,除非你在算法上面有优势,比如智能车会各种PID,模式识别上会神经 *** ,优化上会遗传算法等等,但是这些复杂的控制一般就不会裸奔了(除非环境恶劣),肯定是处理器强悍,带os的;硬件 *** --就是数字电路,涉及单片机的外设,感觉难度也不高,据我说知,只会单片机无论硬件还是软件工资都不高,也没有特别大的技术含量,同时,单片机更新换代特别快,你需要从大量的单片机中找寻适合产品的,看不同的datasheet。
2、ARM
这个搞的人很多,软件上就是
(1)写底层驱动,这个入门,深入都不容易,需要对硬件及os有较深的了解,发展还是很不错;
(2)操作系统-比较复杂,linux,android等,你看现在很多手机厂商推出的操作系统也就是修改内核,换皮肤,就业还是很容易的;
(3)应用程序,就是android开发或者Linux上应用开发(QT等),做的人很多,就业容易待遇也不错,需要掌握c++/java。
硬件上
(1)就像手机一样在处理器上做整体的电路,比单片机入门难的多,做成技术大牛了不缺钱。
(2)soc,架构开发等后面会提到。
3、FPGA
就是硬件编程,入门很简单,做深很难,要对时序有非常深的理解和大量的项目开发经验,就算你做的特别好,前景还是不明确。FPGA近年的一大热门就是软件无线电,成本还降不下去,同时AD采样速度目前不够,导致FPGA的应用有限,一般公司都是把它作为一个验证工具比如IC设计上的验证。只会FPGA就业会很窄,也不理想,建议作为工具学习。
4、DSP
就是算法,你需要一个名牌大学研究生以上学历,同时在算法和数学上有很强的能力。如果做不到,就不用搞了。
5、IC设计
做微处理器上的soc,前端后端,专用处理器(应该也属于嵌入式领域),入门难,成为牛人更难,对计算机体系结构,微处理器结构,集成电路等等有比较深的认识,然后项目经验大大的有才行。不过国内行情一般,外企招人少,希望国家的扶持政策能够发挥作用。
6、微处理器体系结构
偏理论,偏宏观,研究生能够对整个体系结构有个比较浅的了解同时在局部上能够做一点设计工作,博士生能够对整个结构有较深的认识在局部上能设计。现在搞的多的是高性能体系结构,低功耗结构,并行开发等等,因为功耗和并行限制了目前处理器的速度,所以在低功耗和并行上开发有很大的前景,同时基于神经 *** 的架构处理器,云计算处理器等专用处理器也是目前的一个热点。发展前景很好,但是难度不是一般的大,从中国在架构上做出的贡献在世界上分量很少就可以看出。
嵌入式开发的门槛相对较高,对程序员的要求一般都是对底层感兴趣,学习能力、动手能力要强,对问题能够从全局和细节去把握,有很强的系统分析和设计能力。从工程师起步,一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。
硬件和软件的发展方向是不同的。说说软件需要学习的知识。
虽然说搞嵌入式软件更多时候是在实际的工作中学习的,但一些重要的基础知识不可或缺。
1、 计算机组成/微机原理
主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。
2、 操作系统
嵌入式产品应用比较广泛的`是Linux和WinCE。但操作系统的内部设计原理都是殊途同归。首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式产品上。
3、 数字电路
学习这方面的知识主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。
4、 编程语言:C语言和汇编
对于C语言本身的基础来说,无非是把结构化,函数,数组,指针弄熟,但是嵌入式开发对C语言应用的要求会更高。要对内存分配,文件访问,寄存器访问,预处理指令,中断处理程序等等相当熟悉,这些都是在使用中要注意的细节问题。C语言对程序的优化也很重要,而这些往往是需要从全局去考虑。汇编一般是和处理器的指令集相关的,可以更好的去理解处理器的工作原理,往往是用在一些需要效率的地方,如系统的初始化。
5、 数据结构和算法
数据结构在嵌入式开发中也很重要,比如说操作系统里的很多实现都用到了具体的算法。基本的数据结构需要掌握,如各种链表,树,图等等;而算法的学习需要数学知识作为铺垫,用计算机语言去实现。对于软件从业人员来说,算法终究是一个工具,在实际应用时再深入挖掘也可。
6、 软件工程/软件测试/项目管理基础
这些是软件开发人员的必备知识。
7、 开发平台
嵌入式的开发平台不局限于一种操作系统,因此要熟悉各种操作系统下的命令、编辑器及开发工具,这一点往往被很多人忽视。举个例子,Linux下的程序员开发环境往往是按自己的习惯搭建,熟练掌握一种编辑器如Vim/Emacs可以大幅度提高工作效率。磨刀不误砍柴工。
嵌入式领域的方向是很多的,它所应用到的行业范围也很广。因此除了这些基础的知识以外,在具体的应用中可能还需要一些其它的知识,这些知识的每一种都可以研究的很深,举几个例子。
1、 内核,驱动及中间件
内核开发和驱动本身就是一个方向,驱动和硬件接口相关,而内核的修改和移植更是需要对OS有很深的理解。至于中间件,一般是基于OS或存在于OS和应用程序之间的库,最典型的就是基于Linux的Android。
2、 通信协议
通信协议有很多种,经常用到的有 *** 通信协议,无线通信协议,串口/USB通信协议等等。
3、 音视频技术
牵涉到音频视频处理,压缩,编解码等等。
4、 信息安全
如加密技术,身份认证,数字证书等等。
5、 行业知识
和具体行业或领域相关的知识,如通讯、工控、电子等等。
这里有一个我认为不错的学习步骤:
1、 基础知识中,计算机组成、操作系统、编程语言和数据结构是必需的。
2、 找一种CPU体系,了解其核心架构,学习指令集,比如说ARM。
3、 找一种OS,如Linux,或是传统RTOS,如Nucleus、eCos,读源码和文档,理解OS内部实现,包括进程,任务,消息机制,内存管理,设备驱动,中断等核心内容。
4、 找一块成熟的开发板,板级资料要齐全,熟悉嵌入式软件开发流程。
5、 在项目过程中深入学习其它的技术。
总之,这些知识的学习不是一蹴而就的,过程会很漫长,也没有什么特别的技巧。需要去看大量的技术文档和源码,而这些文档大部分又都是英文的。在工作和做具体项目的过程中会学习的比较快,理论结合实践才是王道。
OK,本文到此结束,希望对大家有所帮助。