
- 应用于
- 工业、国防
- 标准制订
- IEEE
- 中文名
- 嵌入式系统
- 外文名
- Embedded System
-
一线工程师告诉你嵌入式真实现状与发展前景
2018-10-02 18:49:59个人说明:本人并不是年薪百万的技术大牛,但总算是一名合格的嵌入式工程师,现在某企业担任嵌入式软件工程师开发一职,以下观点可能会带有片面或者分析不全,但却是一名一线企业嵌入式软件开发者真实感受和所得,...个人说明:本人并不是年薪百万的技术大牛,但总算是一名合格的嵌入式工程师,现在某企业担任嵌入式软件工程师开发一职,以下观点可能会带有片面或者分析不全,但却是一名一线企业嵌入式软件开发者真实感受和所得,希望能帮助那些有需要的人,我明白年轻人出来打拼都不容易。
为何要写这片文章?小生也是过来人,踩过你们踩过的坑
百度搜索“嵌入式”、“嵌入式开发”、“嵌入式发展前景”等字眼,出来的都是一大堆培训机构,出来的都是一大片他们所谓的对嵌入式行业的“见解”,不否定其内容有一定的专业性,但其中“水份”我想大家比我更清楚,“卖瓜赞瓜”的道理谁都懂;或者出来的是几年前的“嵌入式状况”,与当今嵌入式环境相比,企业无论是在开发、用人、内容、市场上都发生了很大的改变。因此,作为一名一线企业嵌入式软件工程师的我,想通过自己的实际经历理性地评论当今嵌入式行业的真实状况。本文章写于2018年10月1日,小生不才,自认为可以反映当今嵌入式行业的一个真实状况,以及它的科学性和前沿性可以是2018-2020年期间嵌入式的定义。
一.嵌入式的定义和举例分析
官方定义:
根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监控或者辅助设备、机器和车间运行的装置”。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。
目前国内一个普片被认同的定义是:以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
说白了就是先设计硬件,然后根据需求编写能在该硬件上运行的软件,就成了所谓的“智能硬件”。
或者说得还不够明白,那行,我们说一说具体的嵌入式产品有哪些,嵌入式是做什么的:
传统嵌入式产品:空调主控模块、冰箱主控模块、家用遥控器、智能手机、教学投影仪、音响系统、雷达系统、路由器等等
前沿嵌入式产品:无人机、智能音响、机器人控制、城市天眼系统、智能家具、自动驾驶汽车、扫地机器人、小米手环等等
一起看一些前沿的嵌入式产品:
下面是大疆无人机,可应用在高空拍摄、军事侦查、高空作业、自动巡逻、农业工作、矿业勘测、地形测绘等方面
下面是天猫精灵智能音响,可进行语音识别、对话交互,应用与娱乐、生活、购物、智能家具控制等方面,属于新一代音箱
下面是百度机器人,通过深度学习、神经网络等算法,实现“百度大脑”,具有自学习、自训练能力,如最强大脑的小度机器人
下面是自动驾驶汽车,自动驾驶是一个前沿的科技,在我国还没本真正实施,不仅是技术方面,它还得得到政府支持和认同
下面是海尔扫地机器人,能够自动巡逻,自动绘制室内地图,自动避障,自动清洁地面,还你一个干净的环境
下面是小米手环3,可显示微信、来电等消息内容,振动闹钟,心率计算,步数统计,实时运动数据查询,睡眠质量监测等
看完这些前沿科技产品后可发现,这些形形色色的“高端产品”都离不开嵌入式技术,离不开传感器技术,离不开软件程序。那么我现在可以告诉你,嵌入式开发的工作就是去开发以上等一系列产品 ,这就是嵌入式,相信此刻你对嵌入式行业已有“形而上学”的了解。
二.嵌入式工程师在企业工作的真实内容
嵌入式软件开发具体可以分三类:
嵌入式驱动工程师:编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如I2C协议)、系统调度、信号量、锁机制等等,开发难度最大。该类开发者一般是软硬件综合型人才,一般的嵌入式驱动工程师指Linux上的驱动开发工程师,需要精通Linux驱动框架(platform框架、input子系统框架等),结合芯片本身去编写驱动,驱动的好坏很大程度上决定一个产品的好坏。业界对驱动人才的定义是三年才算入门,可见此门槛之高。
嵌入式系统工程师:主要是编写固件,根据不同平台移植操作系统,根据应用场景来优化系统,需要熟悉整个操作系统组成与调度,对固件的稳定性高求很高,如果系统不稳定,驱动和应用也是白做的。
嵌入式应用工程师:编写业务逻辑程序,调用驱动工程师提供的接口控制设备,软件开发过程所涉内容范围非常广,主要使用C语言开发,但经常会涉及C++、Java、python、JavaScript、PHP等各类语言以及各种脚本语言、数据库、前端后台、各种通讯协议、甚至一些从来没听过的协议或概念,需要很强的学习能力,该职位也是各大公司需量最大的,一般10人的开发小组,驱动开发与系统开发与应用开发的比例是1:2:7。
根据我的经验,世界上可以分成两种嵌入式工程师,一种是大公司的嵌入式工程师,另一种是小公司的嵌入式工程师,我知道这样分类很不妥,但并非毫无道理,请听我一一下概述:
大公司:大公司的特色是什么?答案:人多!
人多导致的后果是什么?答案:项目分工非常细,都遵循“术业有专攻”这一哲学道理;
例如职位是嵌入式驱动开发,那么大公司可能还会细分嵌入式显示屏驱动工程师、嵌入式音频驱动工程师、嵌入式电源驱动工程师等;这就是大公司一贯的作风,它希望去培养某一方面的人才;说白了就是如果你分配到的是一个显示屏驱动项目,那么有可能你这一年内都是在开发显示屏驱动,一年后你将是显示屏驱动方面的一个小专家;在大公司记住一点,你做的东西都是很“精”的;同时,大公司的薪资水平和福利也是相当可观的,有完善的晋升路线,离职率一般不高。
小公司:小公司的特色是什么?答案:人少!
人少导致的后果是什么?答案:项目分工不明确,什么都得干,它给你灌溉的思想是“小陈,我们培养的是综合性人才,在这里你就是全栈工程师”;
估计很多人都没听明白,意思是说这里人少活多,你什么都得干。小公司才不会管你是嵌入式驱动工程师还是嵌入式应用工程师(有的公司还是区分的,的确不能以片盖全),反正是活你就得干,分分钟前端后台服务器你都得给我干,不要跟我说什么没学过,没学过就去学呗。小公司还有一个特色就是:“节奏快”,大公司里面可能开展一个项目会花上几个月的时间或者更长,在小公司是不存在的,领导都是指望着你几天或者两三周完成,那你也只能说呵呵了。的确,在小公司你可以得到飞速的进步,很强的综合性技能,前提是比人家花出更多的时间,把每一个项目理解清楚,而不是应付心态。坚持下来,两年后必能独当一面。小公司提供给应届生的薪资水平相对与到大公司来说要低,其福利不完善和晋升路线也一般比较模糊,所以小公司的离职率会比较高,经常出现两年三跳的情况。
还有一个经验分享给年轻人:无论哪种语言,程序代码只是一个简单的工具,最后真正留下的只有原理、协议、框架、思维。
三.嵌入式发展前景与当今状况
目前的嵌入式开发更倾向于智能化,也就是我们所说的智能硬件(硬件+软件),从现在各种前沿的嵌入式产品来看的确如此,嵌入式产品的一个发展趋势是更倾向与自动化控制和人机交互,而不是强调“算法”这一块,要区分你仅仅是一名嵌入式工程师而不是算法工程师,什么一大堆“人工智能”、“阿尔法狗”、“深度学习”、“神经网络”都不需要深入理解,那是研究生、博士生做的,小生并不是说你的能力不足,而是“术业有专攻”,这并不是一名嵌入式工程师的工作量,你需要做的仅仅是与他们的“云端大脑”进行对接,调用他们API就完事了。
由于人工智能、深度学习、神经网络、区块链、大数据等先进学科的崛起,很多人都产生质疑:“嵌入式还有发展前景吗”?这个问题我在这里可以很肯定地告诉你:“嵌入式有很好的发展前景,前沿嵌入式技术即将崛起,或者说已经崛起”。的确,人工智能、大数据这些学科会给嵌入式带来冲击,就目前来看,大学生更倾向与python编程语言、机器学习这一块,而嵌入式学者的确比往年有所下降,但学者少了并不代表他的需求就少了,并不代表他的薪资水平下降了,目前的一个嵌入式技术更倾向于与智能学科相结合的趋势,以百度机器人为例,机器人的核心是大脑,即是“数据和算法”,但机器人大脑想机器人身躯能够像人类一样活动,能说会道,行走自如,那么就必须得依靠嵌入式技术,这就是我所说的嵌入式+智能学科应用,从长久来看,嵌入式只会越来越火,智能学科的崛起必定带动新型的嵌入式技术发展。
对于发展前景,有一项更重要的参数,那就是当今嵌入式软件工程师的薪资水平,我下面给出一些理性的数据,是从各大招聘平台调研而来:(数据只能作为参考,具体薪资还是得看个人修为,有的达不到该薪资水平,有的早已超过该薪资水平)
非211、985院校应届毕业生平均月薪:8k
是211、985院校应届毕业生平均月薪:12k
一年工作经验者月薪:10k-15k
二年工作经验者月薪:12k-18k
三至五年工作经验者月薪:20k-30k
上述数据只针对那些“真正努力”的嵌入式工程师,不适合应“应付式工作”的嵌入式工程师,同时声明不对该薪酬水平负任何责任。
四.展望人工智能带动前沿嵌入式技术
人工智能给嵌入式带来的冲击,是福也是祸,人工智能实现智能化无处不依赖嵌入式技术,人工智能学科在不知不觉中带动嵌入式技术革新,从一系列智能产品,包括无人机、智能音响、机器人控制、城市天眼系统、智能家具、自动驾驶汽车、扫地机器人、小米手环等等,有哪个不依靠嵌入式技术来实现,并没有,人工智能越是想向人类表达他的智能水平,越是要依靠嵌入式技术,所以前沿嵌入式技术更倾向于嵌入式+智能学科的发展,当智能学科真正崛起,嵌入式必定又是一次浪潮与技术革新。
-
嵌入式
2014-02-28 15:03:54即嵌入式系统( Embedded Systems) ,是一种以应用为中心、以微处理器为基础,软硬件可裁剪的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件...即嵌入式系统( Embedded Systems) ,是一种以应用为中心、以微处理器为基础,软硬件可裁剪的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。它是计算机市场中增长最快的领域,也是种类繁多,形态多种多样的计算机系统。嵌入式系统几乎包括了生活中的所有电器设备,如掌上pda、计算器、电视机顶盒、手机、数字电视、多媒体播放器、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。
嵌入式系统的核心部件是嵌入式处理器,分成4类,即嵌入式微控制器( Micro Contrller Unit ,MCU,俗称单片机)、嵌入式微处理器( Micro Processor Unit ,MPU )、嵌入式DSP 处理器( Digital Signal Processor,DSP) 和嵌入式片上系统( System on Chip,SOC)。嵌入式微处理器一般具备4个特点:
1、对实时和多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;
2、具有功能很强的存储区保护功能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;
3、可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;
4、嵌入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,功耗只能为mw 甚至μw 级。 -
韦东山嵌入式Linux第一期视频
2014-11-29 12:20:18掌握写汇编代码的能力,可以分析任意裸板包括U-boot、内核里的相关汇编代码; 掌握常用的硬件部件的操作,比如GPIO,UART,I2C,LCD,触摸屏; 深入理解ARM体系统架构,可以写出具备中断功能的裸板程序,对程序... -
嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
2017-08-04 23:09:56何为嵌入式? 1、单片机相关 1.1 基于单片机的智能小车、智能机器人制作 1.2 基于Arduino的3D打印机制作 2、嵌入式Linux相关 2.1 智能扫地机器人 2.2 智能可穿戴类设备:智能安全头盔 2.3 智能可穿戴类设备:...更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦:
----------
目录:
2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)
2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map
4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)
0、引言
何为嵌入式?
IEEE官方定义:Devices Used to Control,Monitor Assist the Operation of Equipment,Machinery or Plants。
翻译过来就是:用于“控制、监视或者辅助操作机器和设备的装置”。
其实按我理解,嵌入式系统就是“高大上+土豪”版的单片机,因为嵌入式不只带操作系统(OS),并且都是上架构(如ARM)的。其实咱们所用PC机也是一个嵌入式系统,只不过处理器、Bootloader、操作系统OS都是通用化的Intel系列、BIOS、Windows等;而面向具体应用,就需要根据需求,实现硬件资源和软件操作系统的“私人订制”,无非就是先根据需求硬件选型,然后根据硬件资源去裁剪操作系统,把软件不需要的都去掉,只留有用的,这样保证我们用的系统在达到需求目标的同时,还保证了实时性和稳定性(没有无关因素干扰)并且小型化具有专用性。
再啰嗦几句,假设大家对单片机已经很熟了,举个栗子:对单片机引脚控制LED,用C编程通过IDE编译个Hex文件,烧写就可以运行实现;那么对嵌入式来说呢,因为处理器引脚太多(如Cortex-A9架构的Exynos4412芯片 有400多引脚),那么自己一个个配(裸机编程)实在麻烦,而且编的程序都与硬件密切相关,没有通用性且很难移植;因此就使用上了操作系统;那么操作系统干了什么呢?其实就是和单片机操作引脚一样,只不过OS将这些操作封装成各种驱动(如GPIO驱动),那么你只要在应用程序上调用这个驱动内的函数,借助OS内核实现机制,就能向单片机一样操作这些引脚,所有嵌入式设计,底层都是这么实现的。
So, 怎么判断该用嵌入式还是单片机呢:其实就是看需求,单片机处理能力、可扩展性及其有限,涉及到图像监控处理、网络协议就捉襟见肘了;因此这个逻辑很简单:单片机不能实现的,上嵌入式;并且现在是个嵌入式功能都有成型的solution,特别是Linux的开源,资料成堆成堆的。这也是近年嵌入式(包括物联网、智能硬件)火这么快的原因之一吧。
以上都是愚见,切入正题:本人不才整理了几个嵌入式比较好的练手项目和小课题,有的是我之前做的项目,有的是网络搜罗,反正都是我个人认为比较综合而且interesting的,这些网上一大堆相关资料,我这里只是提个题目和其中关键点,具体内容不赘述,感兴趣直接百度google,希望给大家一个参照,大家有idea都可以相互交流,有机会共同学习,感谢。
骚扰方式: Howiexue@gmail.com
1、单片机相关
这里主要是推荐嵌入式相关,所以单片机就只简单提几句
1.1 基于单片机的智能小车、智能机器人制作
对于大学经常参加一些智能车比赛的童鞋,相信已经做吐了。。。小车目前可以算是相关资料最多的练手项目之一,各种脑洞大开的智能车车,你值得拥有~
1.2 基于Arduino的3D打印机制作
需求:使用单片机,通过限位开关和温度等传感器控制步进电机移动、加热头,将打印材料加热挤出后凝固成型。
硬件:Arduino mega2560开发板,3D打印机套件,打印材料,安装工具等
软件:Marlini开源程序,上位机软件Print3D,切片软件(推荐Cura),三维制图软件(推荐犀牛)等。
参考链接:http://reprap.org/wiki/Kossel
http://prusaprinters.org/prusa-i3/(推荐一开始做Kossel和i3型的)
800元组装一台3d打印机全教程流程http://tieba.baidu.com/p/2944800373?see_lz=1
注:这个项目实现很费事,可谓处处是坑,不只是单片机软硬件知识,还要学三维制图、机械原理等等,期间会遇到一系列问题,但是最终调试完,第一次打出自己想要的东西时,感觉真是此生难忘,所以当时一做就做了三台(下图,其中左面上角是 Prusa I3 型,其余那俩都是Kossel 三角洲)。推荐创客们玩玩,比四轴飞行器好玩多了(也省软妹币)。
3D打印现在是所谓工业4.0的主打,特别是牛炸天的细胞打印(对你没有看错)、器官打印、粉末金属打印等。不过我们做的也就打印些塑料小玩具,现在的SLA光敏树脂打印倒挺不错,能比FDM的快几十倍,只是成本太贵(貌似10w+)。又扯远了。。。咳咳,下面开始划重点:
2、嵌入式Linux相关
嵌入式Linux就是在嵌入式硬件平台上使用Linux操作系统。其实嵌入式开发过程就是硬件+软件设计过程,本节推荐的都是在一个目标硬件平台上设计基于linux系统的应用,主要工作一般都是:Bootloader设计与移植、Linux内核裁剪移植、Linux驱动程序开发移植、文件系统制作移植和最后的应用程序开发移植。说了这么多移植它是什么东东?我理解为:拿着别人写好的东西,稍微自己改改放到自己的平台上,其中的“改”和“放”的过程就是移植的过程。这也是嵌入式工程师必须具备的能力,一定要借鉴甚至使用别人做好的,自己闷头写代码只能闭门造车(大神除外)。
推荐硬件平台:树莓派(首推),友善之臂、飞凌等开发板(这些开发板自带很多练手项目课题,网上也很多资料,本文就不再提那些case),架构最好选主流的ARM,像流行的s3c6410(ARM11)、s5pv210(A8)、exynos4412(A9)等。或者自己画板子(使用现有开源出来的修改下,不过成本高,难度大),有兴趣不妨一试,刚开始学习还是老实用开发板吧。
推荐软件平台:Linux2.6以上内核(2.6以下很多系统机制会不同)嵌入式系统,Github、开源中国和ChinaUnix上一堆开源的Linux驱动和小应用,宿主(PC)机最好使用Fedora、Ubuntu系统(如果使用虚拟机VMware版本最好在9.0以上),Bootloader推荐使用U-Boot;文件系统根据使用的Flash支持,用Busybox制作;人机界面用Qt。
如图:
嵌入式系统层次结构
2.1 智能扫地机器人
深藏不露的“扫地僧”,类似壁障设轨智能小车,只不过有更多人性化功能,网上资料+自由发挥吧
2.2 智能可穿戴类设备:智能安全头盔
背景:在工厂或危化品存储等场所,经常发生危害气体泄漏,而由于环境、风力等因素,人们无法直接在固定位置检测,而且有的气体是无色无味,如何解决?其实最终目的还是保证工人的人身安全,这时候就体现出来智能可穿戴设备的价值。
需求:设计智能安全头盔,当检测到有害气体后震动报警,并将该危险地点通过GPS上传到上位机显示,生成一个有害气体地图(借助Baidu API)以红色标出危险地段。
2.3 智能可穿戴类设备:面向空巢老人/病人的智能手环
需求:背景不用说,设计一个智能手环(或其他设备),检测人身体的各项生命特征,并且实时GPS传输老人位置,还具有跌倒报警、遇水报警等突发状况向子女手机、服务器端推送报警信息。自由发挥,有些身体特征检测实现确实困难,但总有方法解决,市面已有这类产品。
2.4 物联网智能控制系统:家居、农业、医疗
这就是近年炒的最火的智能家居、智慧农业等物联网项目,其实都是属于嵌入式智能控制系统,无非就是底层传感器网络(如Zigbee)采集环境参数数据,传给嵌入式网关,网关再传给上位机服务器,再加上远程控制、视频监控等。像这样的题目很多很多,例如智能温室大棚控制系统、智能家居系统、智慧医院系统、智能仓储管理系统等等,其实都能归结为一套系统,只不过根据应用领域有些不同细节。
盗图留种:http://www.embedu.org/projects/smart-agriculture.html
注:这类课题难度适中,建议多人合作,分别负责感知层(传感器网络),网关层(嵌入式平台),上位机应用层(Web服务器、安卓App);至于云端架构可以使用乐联网、Yeelink等已实现好的物联网平台。总之多借鉴别人好的案例。
友情提示:可以先做底层采集温度,传给网关显示并转发到服务器,这一路通了后面程序就好开发了。或者灵活变通,用嵌入式网关采集传感器(需移植传感器驱动到Linux内核),就不需要使用Zigbee等WSN了(如下图)这也可以算是一个题目,都很open的,怎么做你来定,只要脑中有idea,生活处处皆课题(简直是自虐)。
2.5 基于Linux的嵌入式网络视频监控系统
面向安防等应用中,具多个摄像头同时视频传输,为减少带宽、提高视频分辨率和帧率,就需要使用编码标准对视频编码后再传输,so做一个软编码器,我做过基于H.265的编码(有兴趣百度Lib265),这里可以使用H.264(资料较多)其实原理很简单,涉及到摄像头驱动和编码库。还有上位机解码软件。
Linux网络服务器可以使用开源的mjpg-streamer。(可以参照国嵌高级项目班视频)
2.6 移动图像监控系统
类似2.4, 例如国嵌高级项目班中就有介绍,多了一个入侵检测。使用摄像头抓取图像,通过Motion库动态监控比对,一旦出现和前一个图像较大变化(如家中进来一个人),则立即拍照将照片传到上位机,并报警等联动。
后面还包括安全文件传输系统,嵌入式MP3两个都是国嵌教程里的项目,后面都有链接,我也是以前学习时候在网上找的,如有侵权等问题请告知
另外:视频图像做好了,就可以做很多应用,如现在比较牛的机器视觉,无损检测、缺陷检测等等。
2.7 基于TCP/IP的安全文件传输系统(TLS/SSL)
其实就是把Socket包通过OpenSSL的工具加密一下(TLS/SSL),再发送,然后接受端再解密。里面用到了线程池,在企业项目会经常用到。
2.8 嵌入式MP3播放器
2.9 基于Qt的新能源汽车电池管理系统
如题,使用Qt作为GUI显示,实现对电池容量显示和管理操作。较简单,不过可扩展性强,大到汽车管理,再大一点还可以上升到车联网。
2.10 嵌入式车载导航定位系统 Qt+GPS+Baidu Map
GPS采集经纬度数据通过GPRS、WiFi无线传输到服务器上,并借助Baidu、Google提供的API进行精确定位。(还是那句话,借鉴网上现有的,自己开发难度Huge)
2.11 无人机
好吧,不得不又谈四轴了,现在无人机导航送快递、监控交通可谓前景广大,有兴趣创客可以做一个,网上各类资料,实现不难,但主要是烧钱….烧钱….钱…
Ps:买就要买好的模块,特别是图传和电调!,要么一摔就….别问我怎么知道的!
2.12 嵌入式VR、AR
VR/AR实际没接触过,不过很高大上的样子,最近好多大牛公司在搞虚拟现实。感觉还是嵌入式图像处理+全景映象的应用吧,有兴趣可以看看Google的产品。
2.13嵌入式结合AI、Machine Learning
此类课题必火!本质其实就是将机器学习、人工智能等算法,应用在嵌入式领域。AI领域将是嵌入式工程师的又一择业选择!未来必将处处AI,且处处嵌入式AI(如现在市面各类AI电器)。
因为AI涉及到N多机器学习类算法,学习过程也能极大提高嵌入式er的算法能力(算法一般是广大嵌入式er的一块短板),网上也有各种大神编译好的算法模型可以借鉴并直接使用,不过在学习阶段建议自己从无到有搭建算法模型、找数据集训练、交叉验证最终移植发布,有可能自己搭的模型效果不咋地,但这个过程我觉着还是能学到不少AI的思想。。。
本人这方面还是纯种小白,目前正在努力学习,找到好的嵌入式AI资料再第一时间奉上。(前期可以看看吴恩达的视频)
附机器学习算法地图:
3、嵌入式Android相关
嵌入式Android开发,就相当于自己定制各种功能的手机一样,因为Android系统发布就是面向移动端设备的,Android系统移植后也保留大量移动设备应用。因为Android系统基于Linux内核,所以底层还是Linux的东西,但应用层就完全不一样了,要在之前的基础上开始学Java、JNI、Android编程,相关嵌入式资料也没有Linux多,所以想开发还是有一些门槛的。
要说明的是:上述嵌入式Linux的项目,用嵌入式Android一样开发,只不过平台不一样,用的Linux内核不太一样而已,这时候如果真心想学,可以在上面项目做完后的基础上,将你的项目移植到Android平台。这里要注意使用的Linux内核版本,缺少什么就补什么,如驱动、库文件等等,然后重新编译移植内核。
Android系统架构
推荐硬件平台:树莓派、友善之臂、飞凌等开发板,这里一般的处理器就不行了,ARM11以下可能连安卓2.0系统都带不动,So推荐使用Cortex-A9四核处理器或以上,否则系统卡顿…顿….
推荐软件平台:嵌入式Android2.3以上系统,宿主(PC)机最好不要用虚拟机,我用真实Ubuntu,i5+8G内存的主机编译Android5.0.2系统都编译了8个多小时,推荐使用开发板厂家提供的已经编译好的版本,不要重新一点点编译;Bootloader和上章一样,Linux内核3.0以上;人机界面直接用Android自带的(嵌入式Android优势)。
3.1 物联网智能控制系统:家居、农业、医疗
同上文一样,只不过网关那一层换成Android平台,个人感觉这个还是很有搞头的,毕竟Android用户群这么大,大家跟熟悉,操作使用更方便。
这里说到了 ,类似上章的题目,都可以把Linux平台转到Android平台,所以这里关于上面提到的题目就不再赘述。
3.2 嵌入式家庭保健系统
借助Android良好的人际交互,开发集成智能心率计、血压计等检查项目的嵌入式系统。
3.3 智能电视TV、AR/VR眼镜
就是家里用的互联网电视机顶盒,例如小米、乐视盒子,结合AR技术
需要支持HDMI音视频输出、VGA输出、AV音视频输出、支持网口与WIFi、支持USB设备(鼠标键盘)、支持红外设备(遥控器)等。
3.4 自己定制的平板电脑、手机等
从底层或者上层应用定制自己的移动设备,比如说更改开机界面为你的果照。。
4、裸机开发
“裸奔”挺难的,因为不使用操作系统,不光要整天和芯片datasheet打交道,还要深入处理器架构以及各类存储机制。其实严格意义来讲,我们之前搞单片机也是属于裸机开发。
如果是大神中的大神,上述的一些题目完全也可以用裸机开发出来,我没有奔过,不敢妄自评测,所以只提供几个小题目。
4.1 裸机实现串口通信
4.2 裸机实现DMA方式SD卡读写
4.3 裸机是实现NANDFlash、EEPROM的操作(擦除、读写)
5、相关资料分享
福利来也
注:这些都是我学习嵌入式时候精心整理的资料,其中也有购买或在网上找的资源,如有侵权等问题请告知删除
链接:http://pan.baidu.com/s/1b0QLOy 密码:
链接:http://pan.baidu.com/s/1cDsqp4 密码: (本文提到的很多项目源码和视频)
链接:http://pan.baidu.com/s/1dFmNHxZ 密码:
链接:http://pan.baidu.com/s/1gfFPTIV 密码:
PS:一直审核不过,考虑或许有不少涉及版权,就把链接密码去了,所以需要资料的留言邮箱吧~ 别忘加关注哦~
Python Tools: 由于小伙伴太多啦,所以做了个python工具,能够自动发送资料到留言的邮箱,详情见:Python实现自动发送邮件 - 自动抓取Blog中留言的邮箱并发送邮件
Wechat: 如果小伙伴们等不急Python脚本发送,也可以直接扫码关注微信公众号:HowieXue,并回复“MCU” 也可立即得到资料:
博主热门文章推荐:
一篇读懂系列:
- 一篇读懂:无线充电技术(附方案选型及原理分析)
- 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
- 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
LoRa系列:
- LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
- LoRa学习:信道占用检测原理(CAD)
- LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)
网络安全系列:
- ATECC508A芯片开发笔记(一):初识加密芯片
- SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
- 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
- AES加解密效率测试(纯软件AES128/256)--以嵌入式Cortex-M0与M3 平台为例
嵌入式开发系列:
- 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
- IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
- Linux内核编译配置(Menuconfig图形化方式)、制作文件系统的步骤
- Android底层调用C代码(JNI实现)
- 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
- Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题
友情赞助:
如果你觉得博主的文章对你那么一点小帮助,恰巧你又有想打赏博主的小冲动,那么事不宜迟,赶紧扫一扫,小额地赞助下,攒个奶粉钱,也是让博主有动力继续努力,写出更好的文章^-^,求赞助哦~~。
1. 支付宝 2. 微信
-
嵌入式开发(一):嵌入式开发新手入门
2019-07-26 15:54:18本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。 嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建嵌入式开发环境及...本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。
嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建嵌入式开发环境及交叉编译环境,开发完成后,编译得到bin文件,然后在Windows下将bin文件通过串口或网络下发到嵌入式板卡,程序在嵌入式板卡上运行。
1. RS232串口接孔图解
串口,一般也指COM接口,传输速度较慢,适合远距离传输。这里用于主机与嵌入式版之间的数据通信,一般用于指令下发等。按照协议标准还分为RS-232-C、RS-422、RS485等。其中RS-232也是最常用的串口,称为标准串口。下面仅介绍RS-232的的接线图。RS232串口为9针接口,分为公头与母头,PC机上的串口一般为公头,如下图。
各个针孔功能如下:
最简单的串行接口需要的信号线是2数据发送(TxD)、3数据接收(RxD)和5信号地(GnD) ,只需要接通这3根线即可实现上位机PC与嵌入式板的通信,如下图:
2. 上位机与嵌入式板串口通信工具
一般使用SecureCRT工具进行上位机与板卡通信。
(1)串口连接
打开快速连接
协议选择Serial,端口与波特率根据实际情况而设置,
点击连接,弹出新窗口,敲回车键,出现以下界面表示上位机与板卡连接成功。
(2)使用Telnet连接
Telnet连接就是使用网络(即网线)实现PC机与板卡通信,而不需要串口。
Tlenet新建连接,选择Telnet协议,主机名是板卡的ip。
点击连接,弹出新窗口,输入用户名和密码:
3. 上位机与嵌入式板卡实现文件传输
在SecureCRT中使用命令ifconfig查看板卡的ip地址:
将上位机PC与嵌入式板卡用网线直接连接,将PC机的本地连接ip地址改成与嵌入式板卡同一个网段,例如:
在上位机中打开tftpd32工具,在Server interface中选择上位机与嵌入式板卡相同网段的ip,如下:
注意之类PC机是作为TFTP协议的服务端,板卡作为客户端。
将文件从上位机下载到板卡,在SecureCRT中输入以下命令:
tftp -g -r 1080P.jpg 192.168.1.100
这里-g表示从PC下载文件到板卡,-r表示远程服务器(即PC)的文件, 1080P.jpg表示要传输的文件,后面的ip地址就是PC机的IP地址,例如:
输入以上命令后,板卡在当前目录下即收到该文件。如果需要在某个目录下接收文件,需要切换到该目录下,再输入以上命令。
将文件从板卡传输到上位机,在SecureCRT中输入以下命令:
tftp -p -l 10801P.jpg 192.168.1.100
这里-p即推送的意思,-l表示本地(板卡)的文件。
4. 常用Linux命令
- 回到根目录:cd /
- 解压文件:tar -xvf data.tar
- 删除文件: rm -f 1.txt
- 改变目录的读写权限:sudo chmod 777 /usr/share/themes
说明:这里777表示每个用户都可以读写,后面设的是路径
- 重命名:mv aaa.h264 bbb.h264
说明:将aaa.h264重命名为bbb.264
- 查看ip地址:ifconfig
- 查看文件属性:stat sample_nnie_main
- 查看当前路径:pwd
- 创建文件夹:mkdir
- 更改ip地址:ifconfig eth0 192.168.6.111 (重启后会丢失)
(持续更新)
5. MP4、AVI等转换为*.h264格式
在嵌入式系统中,程序往往无法直接解码mp4,avi等格式视频文件,需将其转换为裸流.h264格式,方法如下:
PC上下载ffmpeg工具,切换到ffmpeg.exe的目录,用cmd打开命令行窗口:
.mp4转.h264:
ffmpeg -i 1920x1080.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 1920x1080.h264
.avi转.h264:
ffmpeg -i 160x120.avi -vcodec h264 -s 160*120 -an -f m4v test.h264
mov转h264
ffmpeg -i test.mov -vbsf h264_mp4toannexb -vcodec copy -an 2.h264
即在ffmpeg目录下生成所需格式的文件。
-
嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统嵌入式系统...
2019-04-01 18:45:28print(tday.year)# 获取年 2019 print(tday.month)# 获取月 3 print(tday.day)# 获取日 31 print(tday.weekday())# 获取星期几,0-6代表...复位电路是嵌入式最小硬件系统的一个组成部分 复位电路是嵌入式最小硬件系... -
嵌入式软件工程师30岁的困惑,出路何在
2013-09-27 23:23:18再过四个月,本人就满三周岁了,目前在南方一家IC公司任职嵌入式软件工程师,硕士毕业后一直在这里,已经将近四年。在段时间里我很努力,目前对Bootloader,数据加密,RTOS设备驱动开发,Linux kernel,文件系统已经... -
《物联网、嵌入式技术》之物联网、嵌入式学习指导路线
2019-01-08 11:20:24课程内容:为什么介绍物联网、嵌入式学习路线、常见物联网结构,物联网与嵌入式关系、面向物联网的开发涉及哪些事情、面向物联网的嵌入式开发的课程大纲、怎么学习物联网、嵌入式的这些课程,本课程的宗旨在于指导... -
嵌入式招聘 嵌入式面试题
2009-10-08 08:43:02嵌入式招聘 嵌入式面试题 嵌入式招聘 嵌入式面试题 嵌入式招聘 嵌入式面试题 -
初识嵌入式
2019-05-07 21:21:07初识嵌入式 本以为stm32就是嵌入式,找一圈工作后才发现自己想的太少了,接下来介绍下嵌入式: 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式... -
嵌入式于非嵌入式的区别
2018-07-10 15:15:17嵌入式这个词想必大家都已经听的很熟悉了,多多少少也明白点。但反过来思考一下,什么又是非嵌入式呢?嵌入式和非嵌入式又有什么区别呢?这时或许有些人就开始迷茫了。 其实嵌入式于非嵌入式最大的区别就是有无操作... -
什么是嵌入式以及嵌入式软件和非嵌入式软件的区别
2019-03-26 15:59:13什么是嵌入式以及嵌入式软件和非嵌入式软件的区别 嵌入式:在已有的硬件上移植(需要修改操作系统源码,安装不需要)操作系统解决软硬件耦合导致的问题 嵌入式软件和非嵌入式软件的区别(即传统开发和嵌入式开发的优... -
嵌入式工程师养成计划之——嵌入式软件工程师完全学习指南
2015-05-05 13:45:15本系列课程针对有意向学习嵌入式软件开发的童鞋,从零开始、深入浅出,内容涵盖:linux系统基础、shell、linux C编程、linux系统编程、网络编程、ARM体系结构及汇编语言、ARM裸机编程、linux系统移植、linux驱动开发... -
【笔试题】嵌入式软件开发——嵌入式软件工程师经典笔试题
2018-07-09 21:59:54从CSDN各个博客上摘选的一些容易做错的嵌入式软件的笔试题,做一下记录,让自己记住。 文章转自:嵌入式经典面试题。 1、用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 解答:这一... -
嵌入式数据库
2019-07-18 15:33:44嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,它们需要较少的内存。它们是使用精简代码编写的,对于... -
[嵌入式]嵌入式系统概述
2016-12-16 19:57:401.1 嵌入式系统概述 ·嵌入式系统的定义 嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可剪裁、适应于对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。 这个定义主要包含两个信息... -
嵌入式基础
2018-07-15 10:41:18关于嵌入式基础,应该熟悉的知识点:嵌入式系统的定义:一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。其核心由一个或几个预先编程以用来执行少数几项任务的微处理器或者微控制器组成。所有带有数字... -
嵌入式学习之路:初识嵌入式
2019-03-29 20:38:01一、初识嵌入式1.1 什么是嵌入式?1.1.1单片机开发:1.1.2嵌入式开发:1.2 单片机开发与嵌入式开发分区别1.2.1单片机开发1.2.2嵌入式开发1.3 嵌入式操作系统1.3.1什么是开源?1.3.2常见的嵌入式操作系统包括:1.4 ... -
嵌入式系统
2019-07-01 18:00:37“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本的核心要素。 嵌入式系统具有以下特点: (1)系统专用性强。 (2)系统实时性强。 (3)软、硬件依赖性强。 (4)处理器专用。 (5)多种技术... -
嵌入式软件工程师和嵌入式硬件工程师有什么区别
2019-09-16 14:00:48什么是嵌入式硬件工程师 随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的... -
嵌入式Linux驱动开发
2019-05-11 21:05:29说到Linux驱动,尤其是嵌入式Linux驱动,大家可能会望而却步,因为入门太难!很多书上或课程基本是这样的:一上来给我们展示一大堆高深莫测的代码,感觉是C语言,又感觉不是C语言。说它是C语言,这里能找到一些C的... -
【嵌入式】基于ARM的嵌入式Linux开发总结
2019-06-14 20:04:39前言嵌入式知识点复习一嵌入式知识点复习二 --体系结构嵌入式知识点复习三 --ARM-LINUX嵌入式开发环境嵌入式知识点复习四 --arm-linux文件编程嵌入式知识点复习五 --arm-linux进程编程嵌入式知识点复习六 --arm-... -
嵌入式到底该怎么学
2020-01-17 10:54:31因为嵌入式是一个泛的概念,可能很多人认为嵌入式就是嵌入式Linux。但是其实并不仅仅只有Linux, 像STM32,51单片机也属于这个范畴之内的,它们有的也可以跑协议栈,跑ucos等系统。所以其实嵌入式是有很多方向的,... -
物联网的嵌入式编程
2020-04-22 13:45:43嵌入式编程在使设备满足人们的需求方面具有悠久的历史。但是,它在很大程度上仍然被应用程序编程所掩盖。当应用程序程序员采用相对高级的面向对象的语言(如C ++或Java)或图形化应用程序开发环境(如MATLAB)时,... -
嵌入式系统知识之嵌入式系统的组成
2020-03-21 17:15:03基本概念: 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制...一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由... -
嵌入式Linux入门:概述
2017-06-01 20:48:25嵌入式入门文章比比皆是,不同的人有不同的入门方法。本文就结合笔者经历写一写个人的嵌入式Linux入门的一些步骤和经验。不当之处,望方家指正。 在正式开始之前,先花一点时间写写笔者学习的经历。我是计算机专业... -
嵌入式Linux应用程序开发-(1)第一个嵌入式QT应用程序
2019-03-29 09:55:43第一个嵌入式QT应用程序 在成功安装 Qt Creator 开发环境后,我们通过一个简单的嵌入式Qt应用程序,来说明一下如何构建和编译一个Qt界面应用程序。 关于如何安装并构建 Qt Creator 开发环境,请参考以下帖子: ... -
嵌入式与人工智能关系_嵌入式人工智能的发展趋势
2019-04-09 17:00:43嵌入式与人工智能关系_嵌入式人工智能的发展趋势 所谓嵌入式人工智能,就是设备无须联网通过云端数据中心进行大规模计算去实现人工智能,而是在本地计算,在不联网的情况下就可以做实时的环境感知、人机交互、... -
嵌入式项目
2018-01-13 17:34:13共享我研究生三年的嵌入式项目资料哦,需要的加我qq1653687969--先上点一些小资料·· (原创+图片+程序源码) 需要嵌入式arm和linux入门资料,项目资料,linux驱动资料的可以加我QQ哦!!愿意和你分享,希望大家...
-
PHP与MySQL数据库 WEB开发教程.zip
-
680. 剪绳子//AcWing6//寒假打卡计划
-
彻底学会正则表达式
-
Python 爬虫报错AttributeError: __enter__
-
西安航空学院软工毕业实训
-
AMPL库参考书/资料
-
【数据分析-随到随学】量化交易策略模型
-
手写hadoop记录1
-
怎么知道每条汇编指令所耗费的CPU时钟周期.zip
-
备战2021软考网络规划设计师历年真题套餐
-
基于SIFT特征的图像配准(Matlab源代码)-电信文档类资源
-
智联万物,京东IoT技术创新与实践
-
ActiveMQ的学习
-
Clouder认证课程:网站建设—部署与发布.png
-
备战2021年软考信息系统项目管理师考试顺利通关
-
animate.min.css
-
精通docker容器技术/compose/swarm/harbor
-
FFmpeg4.3黄金系列课程:c++版
-
lineage-18.1,LGG7刷机包
-
同步代码块处理线程安全问题