2017嵌入式软件行业现状及概述_软件工程篏入式专业就业

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 架构
    • 哈佛架构
      一种将程序指令存储和数据存储分开的存储器结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。用到哈佛架构的处理器有ARM9/10/11以及之后。

哈佛架构

- 冯诺依曼(普林斯顿架构)
一种将程序指令存储器和数据存储器合并在一起的存储器结构。取指令和取操作数都在同一总线上,指令与代码在统一地址空间分布,也就是说有时候并分不出来某段地址上面是放的数据还是命令,通过分时复用的方式进行;缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。由于程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。用到冯诺依曼架构的处理器有ARM7及之前的。

冯诺依曼架构

软件

嵌入式行业的软件系统众多,包含操作系统、图形UI系统等等,其中较为常见的有Linux、RTOS类、Android、QT等等,下面根据不同的类型选取几个较为常见的软件系统进行简要概述。

  • 操作系统

    • 非实时操作系统
    1. linux:也有实时的linux系统,这里不做介绍。嵌入式里面应用最广泛的非实时操作系统非linux莫属,小到智能手表,大到汽车电子等等都有linux的身影。该系统于1991年由芬兰的linus torvalds实现,经过多年的发展已经成为功能极为强大的成熟的操作系统,并且源代码完全公开,商用完全免费。
    2. WinCE:(Windows Embedded Compact),微软出品,有着比较强大的图形用户界面,专门为掌上电脑以及嵌入式设备设计。WinCE的实时性比linux更好一些,但是相比linux来说,它的可裁减、可移植性都弱了不少,并且linux拥有来自全球黑客的共同协作开发,从某方面来讲它的开发支持力度要比WinCE大。核心源代码开放,但是GUI不开放,商业使用需要一定费用。

    现在在嵌入式消费电子领域,linux的占用量比WinCE要大,linux的开发者也比WinCE要多,相对来说,linux的职位、市场需求比WinCE要大,也就是说,学linux更容易找到工作哈。

    • 嵌入式实时操作系统(RTOS)
    1. FreeRTOS:创始人RichardBarry,该操作系统是一个轻量级的实时操作系统,功能包括任务管理、内存管理、信号量、队列、软件定时器、协程等,在FreeRTOS官网http://www.freertos.org/,这里可以找到任何FreeRTOS的学习资料与源代码。
    2. μC/OS:(Micro-Controller Operating System)截至目前,最新版本出到III,该系统前两个版本是完全开源的,第三个版本不完全开源,虽说源代码是开源的,但是如果要用于商业用途的话是要收费的(但是据说个人创业者免费,这个都要跟官网的协议进行同步确认),不过目前来说该系统的最新版本还是比FreeRTOS的功能更加强大一点,不过没有前者更加轻量。该系统是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,适用于微处理器与控制器。
    3. VxWorks:该系统其实在消费类的嵌入式产品中并不是很常见,但是在军工、航天、自动化系统中比较常见,该系统拥有强大的开发套件与开发调试环境,其严格的测试流程保证了系统有着较高的稳定性,实时性较linux强太多。不过该系统的授权费用极为昂贵,各种组件都是单独拆开分别进行授权。该系统的入门较linux更为简单,但是网络上的资料极其少(估计是不开源的缘故),所以普通的智能家居、安防、消费电子产品领域,还是linux占大头,该系统则用于一些实时性、稳定性要求更高、对成本不是过于敏感的场合,比如航空航天、军工之类的设备上面。

    上述前两个系统都可以运行在类似STM32以及ARM7/9内核处理器上面,从商业角度来讲,如果追求免费轻量可以使用FreeRTOS,如果追求功能的完备性,可以使用μC/OS。当然也可以作为个人学习使用,对于个人来说,两者都有可供获取的完整的源代码,并且免费使用,网络上(包括各自的官网)也有很多的学习资料可供选择,嵌入式学习是FreeRTOS以及μC/OS会是个非常不错的选择。有些四轴飞行器上面就有用到FreeRTOS,前两个实时操作系统对硬件的要求没有VxWorks高,在一些较为简单的、低成本硬件系统中使用前两者是一个不错的选择。

  • UI

    • QT:跨平台的C++图形用户界面应用程序开发框架,于1991年由QT Company开发,可以用于开发GUI程序,先后被诺基亚与Digia收购。具有强大的跨平台普适性,可以支持windows、mac、ios、android等。在传统软件与企业应用领域用的较多。
    • Android:Android是基于linux内核开发的一套GUI系统,由google公司完成,目前为止出到Android O(8),现在有非常多的平板、盒子、手机都用到该系统,如果说以前的Android系统还不是那么好用,那么从6.0开始,到最新的版本已经非常好用了,当然,这个跟很多因素也有关,不仅仅是系统本身的进步。该系统是开源免费用于商业的,同时不是跟linux内核一样使用GPL协议,通过HAL将linux内核与上层framework隔开,既使用了linux内核,同时又保证了android相关的厂商不受GPL协议(产品用拥有到GPL协议的代码,则产品的代码也必须完全永久开源免费)的传染性所影响,保证了商家的利益,也为该系统的推广普及铺平道路。

关于Android系统:在初始的时候是google搞出来跟ios相爱相杀的,话说google有时候就是喜欢搞事情,谷歌做的很多项目起初完全就是没有奔着赚钱去的(谷歌公司的特性决定了它可以这么任性),android起初可能就是这样一个项目,只不过最后成功了。早期的android系统都说比较卡,这与几个方面有关:

  1. android的策略:android对屏幕的响应级别是比较低的,ios是优先响应屏幕事件。
  2. 系统碎片化严重:这个碎片化不是指内存碎片化,由于使用android系统的厂商众多,如小米、华为、三星等等,还不算无数“山寨厂商”,它们的屏幕大小,硬件都不甚一致,所以一个android程序或者android系统本身就需要适配如此多的硬件平台,这就注定要牺牲某些性能而导致系统的不流畅,更不用说有些厂商的硬件配置本身就跟不上,不像ios一样,硬件配置高,并且硬件风格极为统一。
  3. APP参差不齐:android系统本身的开放性,使得大量质量不合格的app运行与系统当中,而有的app干脆用常驻后台,开它个7、8个后台线程来满足自己的“特殊需求”,这也是跟国内用不了谷歌有关,ios的app有统一的发布渠道、统一的审核,这些都要比android规范很多。

不过现在android已经比以前好多了,系统碎片化的问题虽然还有,但是在慢慢规范,这个也与国内手机厂商的崛起有关,硬件配置慢慢跟上,app慢慢规范化、统一化。

IC设计

嵌入式有一个完整的上下游产业链,以手机为例,整个产业链的简要图示如下所示(当然省略了很多中间步骤,简化说明):

手机上下游产业链

上图少了很多的东西,比如IP提供者不仅ARM,ARM提供处理器核心,还有别的IP也有其它的公司提供,比如方案不仅只有汇顶科技的指纹识别,也有其它方面的方案等等。嵌入式软件工程师主要的职位需求基本就在黄色区域圈出来的部分,这里简要介绍下IC设计方面的知识。

公司

IC设计类的公司基本分为三类,分别是IDM,Fabless,Foundry。

IP:知识产权,例如ARM核,A53之类。
SOC:片上系统,比如骁龙835、联发科X30、全志A20这些。
IC:集成电路,通常指一个行业,集成电路行业。

  • IDM
    全称Integrated Device Manufacturer,整合元件制造厂商,这种厂商的整个技术实力非常强大,技术领域横跨机械制造、软件开发、硬件架构设计、光学电子等等,放眼全世界也就那么几个。这种公司从IP开发,SOC芯片设计、芯片代工、封装测试再到销售全部囊括在内,属于垂直整合设计类公司,比较熟悉的有三星、英特尔这些牛气的大厂。由于整个的芯片制造过程涉及到的工业制造技术非常复杂,技术种类繁多,所以这种类型的公司通常具有很深的技术背景,门槛非常高,并且比较难以复制。
  • Fabless
    这类公司一般只管部分IP设计开发以及整个的SOC设计,技术实力弱点的公司可能用到的IP是购买的多,而技术实力强一点的,IP自己设计的较多,但不管怎样,最终的SOC设计肯定是公司自己完成的。这类公司就比较多了,比如:高通、联发科、海思、全志等等。这类公司的技术实力也不差,不要以为SOC设计仅仅是买几个IP,然后像搭积木一样毫不费力,其中涉及到各种功耗控制,IP协调等等技术,同样一些IP,有些公司出的SOC功耗就是低,有的公司就不行,芯片可以实现更加高级的制程。这类公司没有自己的代工厂,设计出来的SOC需要送到代工厂加工成芯片实体。
  • Foundry
    这类公司就负责芯片的代工,不做SOC的设计工作,这类公司的工业制造技术实力比较强大,代表着尖端的机械设计制造水平。这类公司也比较少,比如:中国台湾有台积电,大陆有中芯国际这些,都属于Foundry类的IC公司。这种公司不同于一般的类似服装加工这类劳动密集型的工厂,由于本身行业产品的特殊性,使得加工制造一颗芯片与加工制造一件衣服的难度完全不是在同一等级,纳米级的微观尺度加工制造本身就带来了很多技术难题。不过这类公司的重点不在于我们通常理解的软件设计,而在于机械制造上面,如何去制造更加低功耗的、更高级工艺的芯片是它们关注的重点。
芯片制程

芯片制程早期有微米级别,到近期最常见的有28nm,22nm,16nm,14nm,10nm。截至目前,最新有高通的10nm制程的SOC。那个XXnm可以理解为大规模集成电路中晶体管的尺寸,为什么要追求更小的尺寸呢?简单说就是由于晶体管的作用,电子传递时间随尺寸的减少而减少(22nm之前的可以看作简单的正比例关系),所以尺寸越小,整体芯片的CPU时钟频率就越高,性能就越好。另外尺寸更小,就表明了在晶圆面积一定的情况下可以容纳更多的晶体管(更多的功能电路),同时整体的功耗也会降低,成本随之下降,这也是为什么各大SOC厂商、芯片代工厂都追求更低尺寸的制造工艺的原因。

题外话:我们经常看到的黑色芯片并不是真正的晶圆电路部分,那些黑色的是外面的树脂(常用环氧树脂)封装,引出的管脚内部才接到真正的“芯片”上面,通常情况下,内部的晶圆电路要比经过环氧树脂封装之后的体积要小得多。

行业

职位方向

通常来讲,嵌入式软件主要有几个方向:应用,驱动,算法,系统。

  • 应用
    有协议开发,UI开发、业务逻辑开发等等。比如使用QT开发一个汽车智能中控的图形用户界面程序,使用安卓开发一个OTT盒子的应用程序。我们常说的嵌入式应用开发并不包括安卓APP或者IOS APP这些,那些属于移动开发范畴,一般不把这些看作嵌入式的应用开发。比如一款运动相机,它上面有录像、截图、回放等等功能,而这些功能可以分为一个个的应用(也可能这些都是同一个应用),这些功能常常基于linux系统应用编程实现,实现这些应用的过程就是嵌入式中的应用开发。其余的还有像GPS导航终端设备中的导航程序开发,蓝牙设备上面的连接程序,古时候MP3/MP4播放器的播控程序等等都属于嵌入式应用开发的范畴。有些常见的协议开发也属于应用范畴,比如蓝牙协议开发,TCP/IP应用层协议开发,Zigbee模块开发等等。
  • 驱动
    驱动常见于芯片原厂,说的比较多的是linux驱动开发工程师。一般驱动开发主要工作是做BSP(板级支持包,围绕SOC片上系统硬件来做),也有做外设驱动的(sensor-摄像头,网卡等等),对于一家芯片原厂(Fabless类型的公司)来说,一个新出的芯片是需要开发人员做从bootloader到linux内核的适配的,其中包含有USB、flash、I2C、Camera、Framebuffer、SPI、串口、DMA、网卡等等模块的驱动,不管是在bootloader下的驱动还是集成到linux内核里面的驱动的开发都可以说是驱动开发。这些要求要对硬件的各种时序协议有较多的开发经验,比如USB协议、I2C时序、MIPI/CSI(屏、Camera)等等协议与时序要求。还需要对linux内核的架构熟练掌握,一个驱动要想适配到linux内核里面,最好还是按照内核相关模块的框架来实现的好,完全按照自己的方式来实现相关的驱动的话易用性、扩展性、兼容性都可能比较差。内核里面有I2C子系统,SPI子系统,输入子系统,V4L2视频框架,USB子系统,网络等块设备驱动框架等等,每个驱动工程师需要对其中的某一块或者某几块非常熟悉才能够胜任驱动开发的工作。
  • 算法
    一款嵌入式产品可能会包含有很多的算法,比如对一款运动相机来说,它需要有视频编解码算法、图像处理算法(ISP)、防抖算法。而在AI人工智能兴起之后,一些嵌入式产品如安防相机也需要集成人脸识别、车牌识别、运动检测、景深识别等等算法。更多的时候,算法工程师的工作不是去设计一个新的算法,比如视频编解码中的H264、H265算法已经比较成熟了,不需要自己再去费老大劲搞出来一个性能并不如已有算法好的算法,况且大部分公司的财力、技术并不允许自行实现某些高性能算法。更多的时候,算法工程师要做的是在某一个平台上面去实现一个算法,针对某一个平台去优化某个算法,这些是软件层面的,而有些芯片是直接将编解码模块做成硬件放在芯片内部的,这部分我倒不清楚具体是软件还是硬件的职能,亦或是两者结合。人工智能潮流的到来让嵌入式领域也需要更多的优秀算法工程是参与,比如语音识别(常用语智能音箱,智能家居等等),小米的扫地机器人,京东的叮咚音箱,未来还有更多的空调家电类也会集成语音识别功能,而语音识别需要多种音频有关的算法工程师通力协作来共同完成一款功能齐全、优秀的产品。安防产业中就更不用说了,大量的视频算法相关的工程师都是急缺职位。随着人工智能的逐渐发展普及,嵌入式领域的算法工程师需求量会越来越大,而且工资也一定不会低。
  • 系统
    这个了解的不多,理解比较浅显,举一个了解过的简单的例子,就拿一款安防产品来说:产品的功能以及规格由产品经理等确定,然后整个系统的设计需要系统工程师的框架规划,比如采用什么操作系统?如何建立代码工程(包括版本管理工具的选择、编译系统的搭建、代码框架的构思),整个产品使用什么框架进行设计(视频类的开源框架有OpenMAX,OpenGL等等,也可自行设计),开发语言的选择(什么时候用C,什么时候用C++),功能模块的划分(去耦合)等等。
产品类别

嵌入式领域的产品众多,列举部分进行简介:

  • OTT盒子
    Over The Top。作用是获取网络视频资讯,在终端进行显示播放。不同于老式的IPTV机顶盒,老式的机顶盒连接的不是互联网,而是电视网,相当于一个局域网,老式的机顶盒仅显示终端限于电视,而OTT盒子直接连接到互联网,显示终端可以是通过wifi或者蓝牙等协议连接的显示设备,并且有的还可以支持多屏显示,目前为止国内对OTT盒子的管控比较严格,比如OTT在国内不允许观看直播节目,以及不允许通过USB等媒介安装应用等,不过OTT盒子的总体需求量是在逐年上升的,在国外OTT盒子算是比较大的一个市场了。国内常见的盒子芯片厂商有海思、全志、瑞芯微、炬力等。盒子终端设备厂商有天猫、京东、三大电信运营商等。
  • 路由器
    这个都很熟悉了,现在几乎每家都需要,属于硬性需求,路由器的开发对网络这块的要求比较高。
  • IPC
    IP Camera(网络录像机),常见于安防类产品,比如小区监控,交通灯以及大街小巷无处不在的摄像头等等,主体功能是实时采集视像、音频信息并通过互联网网路发往服务器进行保存,有的也可以进行音频双向传播。老式的模拟录像机已经逐渐被淘汰,取代代之的是数字、智能录相机,现在主流的IPC都在往4K分辨率发展,也已经有8K分辨率的解决方案了。随着人工智能的发展,现在IPC里面逐渐集成了人脸识别,车牌识别,移动侦测,景深探测等等AI智能算法。在最新2017年的深圳安博会现场,有多家安防相关的公司进行展览。有做智能算法的,如商汤、旷视、云从,商汤之前在深圳的文博会现场采集了20万人次的人像数据,同时比对出了20多个有前科的人员,这几个公司的智能算法都是国内甚至国际前列,属于独角兽级别的创业公司。有做芯片方案的,比如海思、全志,它们提供IPC的芯片以及软件解决方案,现在的芯片大都支持4K录像,集成人工智能算法。也有做终端IPC产品的,如海康、大华、宇视(合称海大宇,市场占有率80%以上)等等,海康的市值从2016年9月到目前为止已经上涨了千亿以上,侧面也说明了有人工智能加持的安防产品需求增长迅速。随着智慧城市的提出以及不断建设,安防产品的需求量将会进一步加大,有预测,到2022年,安防产品的市场规模会达到万亿人民币级别(现在已经接近6000亿了)。
  • 智能音箱
    亚马逊不一定是最早做智能音箱的,但是它的echo音箱的的确确带了一波潮流,echo发布于2014年,经过几年的发展,已经成为最火的智能家居产品之一。在国内比较知名的智能音箱产品有京东的叮咚音箱,小米的智能音箱,国内销量最大的是叮咚音箱。智能音箱开始的时候乍一看并不觉得有多大的市场需求量,当然这个跟多方面有关:一个是它还显得不够“智能”,能做的事情还比较少,也就是产品做的不够好;另一方面也是由于现在智能家居的产品普及率还远没有手机那么广,换言之,就是智能家居这个氛围、意识在国内还没有完全形成。但是随着技术的发展,生活水平的提高,生活习惯的改变,智能音箱的普及率以及需求也会越来越高。目前智能音箱主要的技术模块有:语音识别(包括硬件模块与软件语音识别算法),主控芯片,音箱产品终端平台设计。语音识别模块知名的有科大讯飞、思必驰等;主控芯片知名提供商有联发科(亚马逊echo)、全志科技(京东叮咚音箱)、瑞芯微等;音箱厂家漫步者、Doss等。
  • 扫地机器人
    这个也算是未来家庭必备了吧(懒人必备)。扫地机器人看起来好像并没有什么技术含量,不就扫个地么?其实扫地机器人有许多方面的规格要达成,并且不同厂家不同价位的扫地机器人的各方面规格达成与实际表现也不同。最容易想得到的就是路径规划能力了,不同公司的机器人路径规划算法种类不同,优劣程度也不同,常见的有两种,一种可以称之为随机规划,也就是走到哪扫到哪,完全没有精确的路径规划,清洁力度随着时间的增加而非线性增加。还有一种是有较为合理的路径规划的,它首先会对整个室内做一次布局扫描,然后根据室内布局进行路径规划,一般是U型环回前进的,这样不会出现愣头愣脑瞎撞一气的低效清洁的状况。另外障碍物的检测也是比较重要的模块,有的机器检测到障碍物直接怼上去才知道转弯,而有的则是离障碍物还有一段距离就转弯(会导致清扫有死角,不干净),有的是遇到障碍物提前减速,然后轻轻撞上之后再转弯(清扫无死角,不会损坏家具机器)。有的机器面对有坡的地方会清扫不力,别的还有狭小空间的清扫能力,遇到缠绕物体(电线、绳子)的逃脱能力等等都是衡量其优秀与否的标准。而这些都需要优秀的算法作为支撑。扫地机器人的品牌有iRobot、科沃斯、小米等等。
  • 行车记录仪、后视镜、汽车中控
    对于有车人士来说是刚需。近年来碰瓷事件频发,有时候有个行车记录仪少了很多麻烦,不仅是这个(毕竟小概率),行车记录仪重点还是在于交通事故等等的录像备份,有车人士必不可少。行车记录仪的主要几个参数就是照片分辨率、镜头视场宽度、帧率与噪声。主流的视场角在130~170度之间,因为事故发生时前撞和侧撞的概率比较大,需要比较广角的镜头才能够满足需求。分辨率与帧率啥的就不用说了。做汽车电子比较著名的芯片厂商有海思、安霸、全志、联咏等。终端产品也有非常多的公司,不太了解就不多说了。
  • SDV
    也即运动相机,比如GoPro、小米、小蚁等等。现在主流的运动相机都往4K30帧/60帧这个配置发展,其实运动相机在国内的需求并不是太大,因为大家大部分都忙着上班、上学,再说国内的运动风气还是远没有那些欧美发达国家那么浓厚,所以SDV在国外的市场需求还是可以的。现在的SDV大都要集成防抖功能,不管是软件防抖还是光学防抖,如果是软件防抖的话对处理器的性能以及软件算法的要求会比较高,否则软件防抖根本没有视觉上的效果。

可以看出来,上面有很大一部分产品都是需要做视频支持的,不管是录像还是播放,所以视频处理算法像H264、H265、MJPEG编解码这些还是非常有应用需求的,所以与之相关的职位也不少,另外对于没有上安卓系统的产品来说,比如IPC,SDV,行车记录仪等等(这些都没有很高的GUI界面要求,所以用不着上安卓系统),还需要在linux系统上面做视频组件的开发,所以单单视频这一块就可以产生巨大的职位需求。

  • 其它
    如共享单车、共享充电宝等一众共享产品,未来肯定还会有更多的共享电子产品。智能家居里面的儿童机器人、教育机器人等等。

所需技能

如果是驱动开发的话就需要对linux、RTOS等系统还有硬件的要求就比较高,驱动开发首先需要能够看得懂各种原理图、技术手册,对英文的要求也是比较高。像linux驱动开发就需要对linux内核各种子系统进行深入了解,就拿上面那些产品中的涉及到视频的来说,linux的V4L2架构的熟知是必不可少的,因为这是整个软件视频流的源头,做视频开发是绕不开这一块的。

  • 驱动通用技能
    能看懂各种硬件原理图与技术手册,包括时序图、寄存器、管脚接线等等,作为驱动工程师时常要与硬件打交道,免不了调各个模块的时候用到万用表、示波器、时序分析仪一类的工具,这些也要会用。另外对各种协议(不同的职位方向只要知道不同侧重点即可,不必全通)如I2C、SPI、MIPI-CSI、USB、网络栈等等。另外英文水平得要够好,否则大部分全英的技术手册,各种spec文档根本看不懂的。就拿一个sensor(比如大名鼎鼎的索尼imx系列摄像头)驱动工程师来说,就需要掌握如下技能:
    • 不同接口标准与协议的了解:sensor的数据接口标准与协议有LVDS、MIPI、Parallel(并口),命令交互接口标准与协议有I2C、SPI、HISPI等。
    • sensor的datasheet阅读与调试工具使用:每种接口需要有与之相配的协议时序来驱动,在调试过程当中难免会出现咋调都没反应的情况,此时就需要示波器、时序分析仪、万用表来一步一步排除硬件问题或者时序驱动问题(实际上正确的步骤应该是先确定硬件以及时序,然后再是调试出图)。
    • linux的V4L2框架:该框架是专门用于linux的视频流处理框架,几乎所有运行在linux系统中的sensor都不可避免要用到这个框架,在内核当中omap3isp是一个很好的参考例程。
    • ISP以及图像调优:虽说这部分的工作不一定跟上面一部分是同一个工程师负责,但是ISP驱动框架还是需要掌握的,不同的IC都有自己的ISP模块,大同小异,但是需要知道如何去编写一个V4L2框架下的ISP模块驱动。

其它的像简单数据结构如双向链表也是需要掌握的,linux内核里面有大量的地方用到双向链表数据结构。C语言指针的各种灵活运用也是必须掌握的。

  • 应用
    数据结构、各种应用框架、少量的算法知识(如排序算法)、系统级应用编程、网络协议编程、软件结构设计、模块化思想、脚本的灵活运用、linux命令行的使用、编译器的熟练使用、C/C++,JAVA等语言的掌握等等。拿一个产品举例,比如IPC(不是针对职位来说,针对这个产品来说):
    • 视频播控以及用户界面等框架:比如OpenMAX、OpenGL(用于图像处理)等开源视频框架,一个IPC产品必不可少的组成部分就是视频录制与处理,这些都有可能用得到上面两个开源框架。用户界面像QT、MINI GUI等等也是需要掌握的,这个在一些需要图形用户界面的产品里面是必须的。
    • linux应用编程与命令行:linux系统环境高级编程,包括多线程、文件编程、网络编程、信号量等。各种命令行操作如文件删除、新建、拷贝、nfs等网络指令、内存操作命令、用户管理等等。
    • 网络协议:IPC通常情况下需要通过网线来进行远程视频传输,这就要求对各种网络传输协议要掌握(包括应用层、传输层等),比如TCP/IP、HTTP、RTSP以及ONVIF这种网络传输框架等等。
    • 数据结构与算法:像链表、数组这种就不用说了,还有些设计方法与模型也要掌握,比如最常见的有生产者消费者模型必须得掌握,还有写哈希表、快速查找表等数据结构也是必要的。算法的话在嵌入式应用上面要求并不是很高,常用的排序、搜索等算法掌握就行了。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

式知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值