学习嵌入式有那几个方向?
学习嵌入式有那几个方向?相关的课程?推荐书目?有什么好的经验可以分享一下?相关的职位有哪些?
谢谢!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
学习嵌入式有那几个方向?相关的课程?推荐书目?有什么好的经验可以分享一下?相关的职位有哪些?
谢谢!!!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
你说的嵌入式,我想你应该是一个学软件的,对于学软件的来说,我觉得有
工业控制、自动化方向,就是用单片机,或者PLC,写一些控制工业机器的东西,还有微波炉,洗衣机电冰箱之类的简单程序。
通信方向,cmda协议栈,wifi协议栈等通讯协议程序的编写,radio baseband的编写。
手机Kernel,bootloader,驱动的编写。
PC主板的bios编写,移植。
还有各种电子设备的设计,程序编写,如视频采集系统,汽车的控制系统,无法一一列举。
人工智能,物联网,都很好的方向
方向:
一般为电子类,比如消费电子,汽车电子,医疗电子等。。。
相关课程:
一般是信息电子大类基础课程:计算机类(特别是组成原理体系结构类、软件类),电子类(模数电信号等)
从主流实用技术角度讲呢,有单片机、FPGA、ARM、DSP,PCB,电路设计等等。。。
教材:
这个多了去了,码字有点麻烦~
职位:
各行各业,偏电子通信行业
经验分享:
俩字 —— 实战
一、以应用领域分
1. 工业、自动化
多用PLC(主要是32位单片机加外围电路)、单片机、DSP/FPGA(要求运算能力较高的情况使用),通常硬件电路和嵌入式软件不分开,由同一个人来做,对硬件底层及电路设计和分析的要求较高。这个一般自学出身的话很难找到合适的工作,专业壁垒比较深。想学的话,就要从电路开始一点一点积累。要说工作,现在工业自动化方面的公司太多了,而且以我的预计,这5年内将迎来中国工厂自动化行业的爆发式增长,现在已经出现一些苗头了。
2. 消费电子
多用linux、android等,通常软硬件会分开,硬件的向上最多也就做到驱动层,主要解决电路方面问题,软件的向下最多做到驱动层。
3. 医疗电子
其实这个跟工业的区别不大,主要是在电学层面(滤波,降噪,电磁兼容性,稳定性什么的)要求更加严格,更多的使用普通硬件电路(可能有一些单片机之类的)+PC来实现。
4. 汽车电子
这个其实是工业方面和消费电子的结合,底层是工业控制,顶层是消费电子。
二、以开发平台分
1. linux,android
这种的一般都是重交互的,大多配有显示屏,软件开发复用性好,易于移植。一般软硬件分家,由不同人来进行。
2. 单片机
我把32位单片机和linux分开了,其实32位单片机大多也搭配linux,但是这里只说不搭载linux系统的,直接进行底层编程的,主要是重IO,重实时性,根据软件规模不同选择8位16位32位不同FLASH大小不同RAM大小不同ROM大小的芯片,软硬不分家,同一个人或团队来搞。终极要求是无论软件规模大小,设计者要对系统的每一个工作状态以及每个工作状态之间的联系、切换、转移要完全把握,可以在脑子中模拟出每一个时钟脉冲下系统的状态。
3. DSP/FPGA
现在已经很少只有这玩意的系统了,一般都跟单片机配合,单片机负责系统工作流程以及跟外围硬件的输入输出工作,DSP/FPGA负责数学运算,也就是算法部分。
4. 开源硬件
这个我单列了出来,虽然从根本上说,开源硬件都是使用不同的单片机作为硬件基础进行的再开发,但是与传统的硬件开发最大的不同在于开发理念,传统硬件开发最重要的就是“专用性”,也就是根据需求做出一个完全符合要求的系统,无浪费,不考虑复用(冗余设计于可升级与复用无关),一个需求对应一个系统,换个说法就是系统的非标准化,工业上有个名词叫“非标治具”。
而开源硬件的基础就是“标准化”,是在一个硬件平台上大家实现不同的功能,最多进行一些模块的简单组合,就像搭积木。
对于开源硬件来说,无论是8位的arduino还是已经可以算是一个小PC的树莓派,开发者已经不再需要刻意关注硬件细节,刻意由无任何硬件基础的软件开发者来进行系统开发。
但也正是这一点,标准化的平台所实现的系统在可靠性和稳定性方面很难适应多种多样的应用环境,你能保证你用arduino或者树莓派搭建的系统能够在高电磁辐射环境下零下20度到零上60的变化范围内24小时无人值守稳定可靠的工作1个月甚至半年吗?所以在工业、医疗、汽车、交通等这些领域,短时间内基本不可能看到开源硬件的身影,开源硬件最大的应用领域在消费电子。
国内一般招嵌入式都要求全会全干的,所以最好全学,貌似要很久才能熟练的赶脚。。
老板和领导无所谓你是怎么学的,但是在意你是否能够熟练地实现他们的想法。
所以可以从这个思路来确定学习路线。
首先基础知识要先学会:
数字电路、模拟电路、计算机体系结构、C语言、数据结构和算法
然后调研各种硬件平台:
稳定古老的8位机 尴尬的16为机 火热的32位机
市场份额如何?各自常用于什么场景?为什么?有哪些主流厂家和主流芯片?
然后开始按应用场合边实践边学习:
低功耗穿戴设备用什么芯片?
对功率无要求的高功率设备用什么芯片?
芯片的基本外围电路怎么搭?
快速学习用芯片,熟悉 datasheet电气特性,reference manual
理解和模仿厂家提供的 demo外围电路,例子驱动代码。
快速将芯片或者开发板跑起来。
根据商业和工业应用的不同,芯片成本和性能的侧重都不同。
嵌入式的产业链长,和上游的代工厂如何打交道,如何质检。
要学的东西太多,然而工资貌似并不高。
好处是硬件的外设接口和协议就那么几个,
硬件的驱动和固件写法也都比较稳定。
可以年纪大了吃经验饭,不需要向网站前端一样一直学新的框架。
十天学会单片机培训视频
[https://www.google.com/#q=%E5%8D%81%E5%A4%A9%E5%AD%A6%E4%BC%9A%E5%8D%95%E7%89%87%E6%9C%BA&tbm=vid]
embedded行业资讯
[http://www.embedded.com/products/all]
掌握了这些硬件开发的精髓,到具体哪个行业就是学习相关的算法和代码、协议栈,快速熟悉类似的硬件平台,上手是比较快的。
这得看你愿意做软件还是硬件,偏向硬件的话我就不能帮你啦。
软件的话可以先从51单片机学习起,看郭天祥的51单片机入门。然后学习msp430单片机,这个比较简单,有了51的基础很快上手。接着可以学习AVR,板子用STM32,嵌入式系统采用RT-Thread或者uCos,这个可以看RT-Thread官方的手册和北航的uCos操作系统。最后学习嵌入式linux,看linux源码,对源码进行裁剪,推荐国嵌的视频。按照这个流程学下来,就应该可以。