目录

  • 一、软件类嵌入式工程师含义
  • 二、目前嵌入式市场规模
  • 三、社会需求
  • 四、学习目标
    • 编程基础
    • 数据库开发
    • 嵌入式设备及GUI开发
    • ARM体系结构编程
    • 嵌入式系统的构建
    • 嵌入式Linux应用程序开发
    • 物联网开发
    • 完成一个综合项目
  • 五、对嵌入式工程师的建议

一、软件类嵌入式工程师含义

嵌入式软件工程师的职责主要是根据产品的功能需求设计好软件,让硬件工作起来。

二、目前嵌入式市场规模

近几年,嵌入式系统产品渐渐完善,并在全世界各行业得到广泛应用。2004年,全球嵌入式系统产品的产值已达2000亿美元,国内嵌入式软件的产值也达到600亿人民币。目前,嵌入式系统产品的研制和应用已经成为我国信息化带动工业化、工业化促进信息化发展的新的国民经济增长点。随着消费家电的智能化,嵌入式更显重要,像我们平常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机 (DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。据预测,随着Internet的迅速发展和廉价微处理器的出现,嵌入式系统将在日常生活里形成更大的应用领域

三、社会需求

嵌入式电子产品硬件部分,大部分都是相同的,核心的都是由CPU、RAM和FLASH 几大部分组成,而软件就千差万别了。产品的具体功能都是由软件来实现的,一般来讲一个产品的实现,软件设计的工作量是硬件设计的4-5倍。所以一般情况下,一个公司的软件工程师数量是硬件硬件工程师的4~5倍,嵌入式软件工程师需求比硬件工程师大很多

四、学习目标

编程基础

这一阶段重点打好嵌入式软件编程的基础,包括学习Linux系统的基本应用,Linux的常用命令、C语言编程基础、常用的数据结构。

1、嵌入式C语言高级编程
2、C数据类型、控制语句
3、C程序结构设计、数组、函数、预处理:
4、指针及字符串操作
5、结构体、共用体、宏、枚举
6、文件I/O操作

特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。
这一阶段推荐的嵌入式学习书籍如下:
《C程序设计语言》,《C语言核心技术》,《数据结构与算法分析--C语言描述》,《C和指针》,《C陷阱与缺陷》,《C++ Primer》

数据库开发

1、数据库概念、数据库类型、常见数据库
2、SQLite数据库介绍及其安装与移植
3、SQL数据库语言( 数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL) )
4、sqlite数据库C语言编程中的各种SQL指令执行函数完成对数据库的控制。

嵌入式设备及GUI开发

操作系统的嵌入式系统的构建,包括系统的启动流程熟悉使用。编写嵌入式环境配置与开发工具学习。这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来学习嵌入式应用和驱动开发打下坚实的基础。

1、Linux下项目管理工具Make以及Makefile工作原理及其编写
2、Linux下shell脚本相关知识及其编写
3、嵌入式开发环境的基本概念及其搭建
4、A53开发板介绍、设备使用、A53开发板与电脑通信、交叉编译

GUI图形界面开发
1、常用控件——button、label、text edit等
2、常用布局方式——水平布局、垂直布局、固定布局、网格布局、相对布局等
3、常用事件及信号处理技术——信息回调、鼠标、键盘事件等
4、时间编程、数据存储、绘图机制、定时器处理、多任务处理等

这一阶段推荐的嵌入式学习书籍:
1、《Linux与Unix Shell 编程指南》
2、《嵌入式Linux应用程序开发详解》

ARM体系结构编程

这一阶段才是真正的嵌入式编程,首先我们要选择一款嵌入式CPU和一款嵌入式开发平台,目前ARM 嵌入式CPU应用最广泛,这一阶段重点是学习嵌入式CPU的裸机编程,熟悉中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等常用嵌入式外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件
这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上,对硬件进行编程控制。这和硬件工程师学习的侧重点有所不同。这一阶段对应的学校的课程主要包括模拟电路、数字电路、微机原理和单片机。这一阶段重点是要看CPU的芯片手册,大部分的参考书也是对芯片手册的翻译。
推荐的参考书籍如下:
《ARM嵌入式系统开发--软件设计与优化》,
《ARM处理器开发详解 基于ARM Cortex-A8处理器的开发设计》

嵌入式系统的构建

这一阶段主要学习带有操作系统的嵌入式系统的构建,包括系统的启动流程、Bootloader的工作流程、UBOOT的编译、裁剪与移植、嵌入式Linux内核的裁剪、移植与编译,嵌入式根文件系统的定制、BootLoader、内核和根文件系统的烧写。 这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来学习嵌入式应用和驱动开发打下坚实的基础。
这一阶段推荐的书籍如下:
《构建嵌入式Linux核心软件系统实战》

嵌入式Linux应用程序开发

这一阶段主要学习上层的嵌入式Linux应用程序开发,包括基于Linux多进程、多线程、网络、文件与目录和QT编程。掌握嵌入式Linux环境下应用程序开发技术
这一阶段推荐的书籍有:
《UNIX环境高级编程》
《Unix网络编程》
《Qt Creator快速入门》
《精通Qt4编程》

##嵌入式Linux驱动程序开发
这一阶段主要学习底层嵌入式Linux设备驱动程序开发设计,包括常用的字符设备驱动、块设备驱动、LCD设备驱动、触摸屏设备驱动以及驱动程序开发中的核心技术
这一阶段推荐的参考书籍有:
《Linux设备驱动程序》
《Linux设备驱动开发详解》

物联网开发

1、了解物联网、泛在网、互联网基本要领及其关系
2、熟悉RFID从低频段到高频段的基本工作原理,以及RFID标签的种类与行业应用,读卡器原理与通信过程
3、熟悉TI的cc2530的基本应用,包含基本硬件资源,协议栈相关接口使用,以及点对点通信、星形通信、广播通信、绑定通信,三种网络结构star、tree、mesh,掌握zibgee相关微控制处理芯片
4、了解zigbe协议栈组成,以及zigbee在通信、组网、摇控等领域的不同应用
5、通过Bluetooth、wifi和zigbee技术对比各自的优缺点,并重点介绍zigbee的各种应用
6、掌握温度、湿度、光照、PH值、二氧化碳等传感器的工作原理及通信接口
7、了解NB-IOT基本概念及移运BC95模块
8、熟悉CoAP协议在NB-IOT中的应用
9、掌握常用AT指定集

完成一个综合项目

嵌入式技术关键在于理论和实践的结合,要能够学以致用,完成了以上的所有阶段的知识点学习后,到底有没有学会,会不会用,能不能应用所学知识来解决实际开发中的问题,我们需要来完成一个综合的嵌入式实训项目
例如:
项目一:智能家居项目
本项目实现设备的本地控制与远程控制,对开关量设备,能够实现信息采集类设备的控制如温湿度,能够实现监控类设备的控制如视频监控,安全系统如外人入侵能够自动通过GPRS报警。项目涉及技术c语言、多任务开发、网络socket开发、boa网络服务器、CGI编程、html网页设计等

项目二:智能人脸识别项目
本项目首先通过opencv库的使用来实现人脸基本训练模型检测、再深入学习通过人脸识别以及实时抓取图像分析并识别,了解认识opencv、dlib等开源工具

项目三:RFID智能门禁项目
本项目实现RFID卡识别,用户信息注册、修改、删除、语音播报提示可按不同的查询条件查询,可实现考勤

项目四:多媒体播放器项目
实现带有图形界面的音乐播放、暂停、上一曲、下一曲、歌曲列表歌词同步等播放器功能,涉及到的知识点有c语言、数据结构链表、Linux多进程、多线程、进程间通信、同步互斥等

项目五:智能手机设计项目
本项目能够实现智能手机接打电话、来电显示、收发中英文短信,查看短信、信号强度检测、运营商检测。项目涉及到的技术GPRS AT指令集、Linux多进程、多线程、进程间通信、同步互斥、GUI图形开发等

项目六:智慧教室项目
本项目可通过NB-IOT等标准物联网通信协议是实现现代化资源统筹管理,基本功能是实现教室灯控、空调、通风、窗帘、门禁、人流等实时远程监控,以实现联动、手动控制和数据采集分析

五、对嵌入式工程师的建议

1.学习那些让因特网实现的技术具备30年嵌入式工程师经验的独立产品设计与顾问公司Aurium Technologies总经理Ken Wada认为,多数嵌入式领域工程师都知道如何撰写C或C++语言程序,但有时候这样的技能是不够的;他建议嵌入式工程师学习因特网有关的技术,对职业生涯发展会有加分效果,例如他目前负责的几个开发案,都是在嵌入式系统中嵌入虚拟(virtual)的XML,好让一些小型连网设备能具备“即插即用”的运作模式。

2.学习利用搜索引擎当了35年工程师、自认是“看得懂系统架构的软件人”的PTR Group首席科学家Michael Anderson认为,不要闭门造车,要善用开放源码世界的信息,很多常见的设计问题其实透过因特网就能找到同领域菁英贡献的程序代码;嵌入式工程师们要走出自己的小世界拥抱社群,与同领域的其他工程师们相互交流、互相帮助,而这也是开放源码世界的精神。

3.离开舒适圈!虽然只当了18年工程师、但自认是系统与软件技术“通才”的DSP与嵌入式软件开发顾问公司Jetperch创办人Matt Liberty建议,不断更新并提升原本擅长的技术虽然很重要,但嵌入式工程师若能扩展自己的知识领域会更有益。走出舒适圈,挑战自我、去学习原本不熟悉的东西,包括工程以外的知识,例如与客户、同事之间的互动,将会收获良多。

4.熟悉实时操作系统(RTOS)在工程人才招募机构Randstad Technologies负责嵌入式产业领域的解决方案经理Henry Wintz表示,目前产业界对于熟悉RTOS的工程师需求很高,也愿意提供更高的薪资水平;因此他鼓励没有接触过RTOS的嵌入式工程师从一些较小型的系统着手,累积相关技术经验。此外他也发现产业界对嵌入式Linux人才有不少需求,主要是因为这种操作系统具备较大的设计弹性。

5.培养多元化技能与系统观担任近20年工程师、具备许多不同领域技术经验的技术顾问公司Rebelbot顾问Jen Costillo建议,原本从事较小型系统架构(例如MCU)开发的工程师,可以开始去熟悉更大的系统(例如Linux驱动程序),反之亦然。尝试着去开发手机应用程序、或者是学习后端服务器的相关技术,能让你开启完全不同的观点;他并建议工程师去熟悉开放性硬件,现在市面上有不少现成的开发板,能让工程师专注于学习独特算法的开发。

6.了解软件也要了解最新的处理器有超过15年嵌入式软件工程师经验的Embedded.fm工程师Elecia White表示,除了要深入了解C或C++等基本程序语言,有时也要认识一些热门的新程序语言以因应特殊设计需求,但更重要的是了解最新的处理器技术;处理器才是嵌入式系统的本质。因为我们的系统资源有限,我们需要了解可用的资源有哪些。

7.要能熟悉开放源码软件拥有31年工程师经验的Freescale Semiconductor数字网络全球软件开发部门总监Rob Oshana表示,客户往往会要求在系统中整合一大堆软件,因此所有的嵌入式工程师需要熟悉各种软件;他建议工程师避免只专长单一领域,因为那可能会阻碍你的成长。对嵌入式工程师来说,确保自己对软硬件技术都很了解,是非常宝贵的价值。

8.建立系统级的工程思维自诩为高信赖度嵌入式系统专家、担任了15年工程师的E2V电子系统总工程师Adam Taylor认为,嵌入式工程师拥有系统导向的思维是很重要的,有不少开发案遇到问题,就是因为没有在开发初期充分考虑基准、验证策略以及兼容性验证计划等项目;此外每个嵌入式工程师都应该具备优良的项目管理技巧,力求准时完成负责的项目。具备能明智因应技术与项目风险的能力,对职业生涯发展会很有帮助。

9.要能明确表达自己的想法与意见透过文字或绘图) Micrum总裁Jean LaBrosse认为,无论是哪一种工程师,都需要能有效表达自己的想法与意见;往往有些菜鸟工程师无法清晰表达自己的想法,因为抓不到重点,而最好的解决方法是练习将之图形化,例如画出流程图。这听起来好像有点过时,但有时利用各种图框组合来整理自己的思绪、表达想法会是很有用的,例如iPad的 iThoughts应用程序。

10.学习无线连结技术自认是低阶嵌入式工程师、有13年工作经验的iRobot资深首席软件工程师Chris Svec建议,嵌入式工程师需要在接下来1~3年学习无线连结技术特别是Wi-Fi与蓝牙低功耗(BLE);因为现在的嵌入式设备(至少各种消费性电子都是)与使用者智能手机连结的主要(或唯一)方式,就是透过这些无线技术,虽然Wi-Fi与BLE不一定会是嵌入式系统的标准配备,但熟悉这些技术对嵌入式工程师来说会很实用。

大家还有什么见解可以在评论区讨论,让我们也一起进步,迈向嵌入式工程师的领域吧!

嵌入式工程师学习路线(软件类)相关推荐

  1. 嵌入式工程师学习路线

    ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:  (1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)  (2)必须掌握一个嵌入式操作系统 (初步定为uclinu ...

  2. 嵌入式linux学习路线参考(LINUX学习者必看经典)

    整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...

  3. 01 - 嵌入式的学习路线、职业规划:嵌入式基本知识与开发流程

    01 - 嵌入式的学习路线.职业规划 一.职业杂谈 -- (学习路线/行业介绍) 1.什么是嵌入式? 除通用计算机外(界限开始模糊:如树莓派) 特点: 硬件定制 智能控制(计算机技术) 软硬裁剪 2. ...

  4. 转——嵌入式Linux学习路线

    可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助. 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类. 业务类 ...

  5. 推荐算法工程师学习路线及工作指南

    干货!推荐算法工程师学习路线及工作指南 以下文章来源于大数据与人工智能 ,作者gongyouliu 本文从我自己的学习成长经历.如何判断自己是否适合从事推荐算法.推荐算法工程师需要的知识储备.怎么找一 ...

  6. 嵌入式新手学习路线,嵌入式课程学习课程分享

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发:用高级处理器,arm7,arm9,arm1 ...

  7. 嵌入式新手学习路线,嵌入式课程学习

    嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等.另外,用c,c++或汇编开发;用高级处理器,arm7,arm9,arm1 ...

  8. 网络方向哪个发展更好?数据通信工程师学习路线分享

    数据通信.网络安全.云计算,到底哪个网络方向更好呢?今天就带大家简单地了解一下. 先说说数据通信,这个是普及度比较高的方向.一般我们可以从事数通网络工程师.售前工程师.远程技术支持工程师.驻场工程师等 ...

  9. 网络工程师都学什么?网络工程师学习路线内容

    大家在备考软考的时候肯定想着选择那些科目报名比较好,比较有发展前途,这里给大家整理了网络工程师的学习路线以及学习内容,仅供大家参考. 网络工程师是从事计算机信息系统的设计.建设.运行和维护工作,掌握网 ...

  10. 2022年前端工程师学习路线

    ` 标题:前端工程师学习路线 路线:HTML=>CSS=>JS=>JQ=>bootstrap=>Vue.js,React,Angularjs=>node.js 1. ...

最新文章

  1. 面试官问我 StringBuilder 线程不安全的点在哪儿.....
  2. 伟人必须回答的(二十道问题)
  3. 8个写完以后就可以让你成为顶尖开发者的有趣应用程序
  4. P2056 [ZJOI2007]捉迷藏
  5. Java - Collection
  6. 使用Dynamic LINQ实现Ext Grid的远程排序
  7. 异常:Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  8. java api 第一个类是_JAVA常用API:String 类的常用方法
  9. 数据工作者的福音:Google 发布正式版数据搜索工具啦!
  10. TimeUnit类中的sleep() 和Thread.sleep()
  11. Fiddler抓包工具抓取手机APP数据
  12. POJ 1625 Censored!
  13. 基于lxr的源代码浏览系统
  14. 触摸屏键盘插件Virtual Keyboard 该怎么用 Virtual Keyboard 入门指南
  15. https://github.com/lin-xin/vue-manage-system
  16. CreateWindowEx
  17. 京东、天猫等电商平台产品评价
  18. 蛮力法之百鸡百钱问题
  19. jq animate动画
  20. 一日一练:有效的回旋镖

热门文章

  1. php codeigniter3,codeigniter
  2. 一步步用python制作游戏外挂 - blueel - 博客园
  3. 阿里云服务器Centos 6.8 64位漏洞 CVE-2017-5336 处理
  4. 用扫码枪收款钱到哪里_微信官方收款音箱,智能语音播报器,不受来电和信息干扰,老板不在也能正常播报,0费率无需蓝牙,面送赠送流量,真正的摆摊神器...
  5. 解决linux下无法连接为wifi热点上网
  6. 计算机管理员账户停用,win10系统提示“你的账户已被停用,请向系统管理员咨询”如何解决...
  7. python处理图片文件,python 间接处理webp图片文件
  8. 如何开通支付宝小程序助手?
  9. 世界互联网大会:马云演讲实录
  10. 【Unity 资源分享】☀️ | Unity 超好看的 精品四季蔚蓝自然场景模型 ,让我们离二次元开发更近一步!