浅谈嵌入式

2023-05-16

浅谈嵌入式


在这里插入图片描述

​相比耳熟能详的互联网行业,嵌入式这几个字眼出现在公众眼前的几率可以达到忽略不计的程度,这不仅说明嵌入式行业的工程师数量远比互联网少,同时意味着嵌入式行业的吸引力貌似低于互联网。

但是,随着物联网时代的即将到来,嵌入式行业的热头又重新燃起,其是否能借助时代的趋势,成长到比肩如今的互联网?这,也许得由时间去回答。

嵌入式释意

那么,什么是嵌入式?
百度百科:
IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

从应用对象上加以定义,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

**其实说白了,嵌入式属于硬件开发层面。就是在已有的硬件上移植操作系统。**以单片机作比较,单片机的工作模式是利用软件编程控制硬件,实现一些功能。嵌入式是在软件与硬件之间加入一个操作系统。目前火热的嵌入式操作系统主要是linux,android,鸿蒙等。

嵌入式是做什么的:

传统嵌入式产品:空调主控模块、冰箱主控模块、家用遥控器、智能手机、教学投影仪、音响系统、雷达系统、路由器等等

前沿嵌入式产品:无人机、智能音响、机器人控制、城市天眼系统、智能家具、自动驾驶汽车、扫地机器人、小米手环等等

嵌入式行业前景

目前的嵌入式开发更倾向于智能化,也就是我们所说的智能硬件(硬件+软件),从现在各种前沿的嵌入式产品来看的确如此,嵌入式产品的一个发展趋势是更倾向与自动化控制和人机交互,而不是强调“算法”这一块。

要区分你仅仅是一名嵌入式工程师而不是算法工程师,什么一大堆“人工智能”、“阿尔法狗”、“深度学习”、“神经网络”都不需要深入理解,那是研究生、博士生做的,并不是说本科的能力不足,而是“术业有专攻”,这并不是一名嵌入式工程师的工作量,你需要做的仅仅是与他们的“云端大脑”进行对接,调用他们API就完事了。

由于人工智能、深度学习、神经网络、区块链、大数据等先进学科的崛起,很多人都产生质疑:“嵌入式还有发展前景吗”?

这个问题我在这里可以很肯定地告诉你:“嵌入式有很好的发展前景,前沿嵌入式技术即将崛起,或者说已经崛起”。的确,人工智能、大数据这些学科会给嵌入式带来冲击,就目前来看,大学生更倾向于python编程语言、机器学习这一块,而嵌入式学者的确比往年有所下降。

但学者少了并不代表他的需求就少了,并不代表他的薪资水平下降了,目前的一个嵌入式技术更倾向于与智能学科相结合的趋势,以百度机器人为例,机器人的核心是大脑,即是“数据和算法”,但机器人大脑想机器人身躯能够像人类一样活动,能说会道,行走自如,那么就必须得依靠嵌入式技术,这就是我所说的嵌入式+智能学科应用。

从长久来看,嵌入式只会越来越火,智能学科的崛起必定带动新型的嵌入式技术发展。

嵌入式学习、从事方向

很多不了解行业的人说起嵌入式,他们就会说,“啊,我知道,就是搞单片机嘛。”甚至,连科班出身的学生很多都是这么认为。

为什么会出现这种局面?究其原因还是因为大学专业里并没有嵌入式行业根正苗红的专业。嵌入式知识体系庞大,不同方向所需要的知识大不相同,网上关于嵌入式的学习路线甚至五花八门,没有统一的答案,这对求学者简直太不友好。

学嵌入式的主要有两个专业的人,一个就是电子类专业,另一个是计算机类专业,电子类专业一般从硬到软学,计算机类的从软到硬学。本人更倾向于电子类的学习走向,硬件要过度软件,相对简单,但是要是纯软没接触过硬件,想迈这个坎可就难了。从这可以看出,嵌入式行业要求工程师软件硬件都要掌握,只是侧重点不同罢了。

解释完嵌入式,接下来分析一下嵌入式的大体方向。嵌入式主要分为软件硬件两个方向。

嵌入式硬件方向:

为产品设计硬件电路原理图,设计硬件PCB板,选择合适的元器件,焊接调试硬件电路板,保证硬件电路板的可靠性、稳定性和抗干扰能力。因为现在集成电路发展迅速,大部分集成电路厂商都会提供参考电路,所以硬件电路原理图的设计相对来说比较简单,硬件工程师工作的含金量主要体现在产品的可靠性和稳定性设计、以及电磁兼容设计,这才是硬件设计工程师的含金量所在。一个资深的嵌入式硬件工程师年薪都在10万~ 30万之间。

要成为一个资深的嵌入式工程师相当难,一方面要有非常扎实的理论知识,同时也要有相当的那种大型的、高频CPU、多层PCB板的设计经验。嵌入式硬件工程师要学的课程主要有模拟电路设计、数字电路设计、电磁波理论等。熟悉常用的放大电路、滤波电路、电源电路设计和分析。

嵌入式软件方向具体可以分三类:

嵌入式驱动工程师

编写和移植各种芯片驱动(如音频芯片),优化硬件设备驱动(如温湿度传感器),得精通各种硬件接口协议(如I2C协议)、系统调度、信号量、锁机制等等,开发难度最大。该类开发者一般是软硬件综合型人才,一般的嵌入式驱动工程师指Linux上的驱动开发工程师,需要精通Linux驱动框架(platform框架、input子系统框架等),结合芯片本身去编写驱动,驱动的好坏很大程度上决定一个产品的好坏。业界对驱动人才的定义是三年才算入门,可见此门槛之高。

嵌入式系统工程师

主要是编写固件,根据不同平台移植操作系统,根据应用场景来优化系统,需要熟悉整个操作系统组成与调度,对固件的稳定性高求很高,如果系统不稳定,驱动和应用也是白做的。

嵌入式应用工程师

编写业务逻辑程序,调用驱动工程师提供的接口控制设备,软件开发过程所涉内容范围非常广,主要使用C语言开发,但经常会涉及C++、Java、python、JavaScript、PHP等各类语言以及各种脚本语言、数据库、前端后台、各种通讯协议、甚至一些从来没听过的协议或概念,需要很强的学习能力,该职位也是各大公司需量最大的,一般10人的开发小组,驱动开发与系统开发与应用开发的比例是1:2:7。

嵌入式linux方向学习路线

C语言

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。

Linux基础

Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和Make项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。

Linux系统编程

重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。

Linux网络编程

计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。

数据结构与算法

数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。

C++ 、QT

C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

Cortex A7 、Linux 平台开发

通过基于ARM Cortex-A7处理imx6ull了解芯片手册的基本阅读技巧,掌握imx6ull系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在imx6ull实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。

驱动开发

驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARM Cortex-A7处理器imx6ull各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。

关于后续内容

由于本人目前从事方向为ARM+Linux,故借此机会回顾并记录从大学时代,0基础开始学习嵌入式的过程,同时受益于读者,希望与读者共同进步,成为一名出色的嵌入式行业从事者。

欢迎读者关注我的公众号:青葙子嵌入式
在这里插入图片描述

参考资料:

[1] 物联网研究室——一线工程师告诉你嵌入式真实现状与发展前景(https://blog.csdn.net/fengfeng0328/article/details/82925001?utm_source=app)

[2] 嵌入式ARM——嵌入式工程师出路之我见:就业,技术,行业…

(https://mp.weixin.qq.com/s/CFDb0IaM1c6D3qq64Jaf3A)

[3] 奥芯软件方案——嵌入式linux学习路线

(https://www.zhihu.com/question/314486500/answer/615709864)

整理文章为传播相关技术,版权归原作者所有

如有侵权,请联系删除

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈嵌入式 的相关文章

  • 如何购买云服务器----以华为云服务器为例

    进入华为云官网 https activity huaweicloud com 登入自己注册的账户 进入控制台 点击界面里我的资源 弹性云服务器ECS 点击右上角 购买弹性云服务器 按照自己的需求选择 xff0c 重点注意 xff1a 计费方
  • Java编写MapReduce的步骤

    Mapper 自定义类继承Mapper类重写自定义类中的map方法 xff0c 在该方法中将K1和V1转为K2和V2将生成的K2和V2写入上下文中 二 Reduce 自定义类继承Reduce类重写Reducer中的reduce方法 xff0
  • PX4入门及开发指南

    PX4入门及开发指南 用户手册开发者手册 用户手册 https docs px4 cc master zh index html 开发者手册 https dev px4 cc master zh index html
  • 树莓派编译工作空间卡死

    树莓派编译程序时遇到卡死 1 树莓派安装的Ubuntu mate 16 04 系统默认设置的swap交换空间不够 xff0c 而编译某些文件的时候需要较大的交换空间 xff0c 树莓派的交换空间被用满所以树莓派看起来好像是死机了的样子 xf
  • 超好用但是很多人不知道的的串口(网络)调试助手推荐

    小众但是超好用的串口 xff08 网络 xff09 调试助手 前言O ComToll xff08 串口 xff09 格西烽火串口网络调试助手伏特加串口 xff08 网络 xff09 调试助手windows自带的串口调试助手总结 前言 这里的
  • STM32上可用的的SM 2 3 4国密算法

    可在STM32上使用的国密算法 SM 2 3 4 SM2SM3SM4 下面直接给出代码 xff0c 有问题可评论 xff0c 自己改动的 xff0c 测试不到的地方可能有bug xff0c 欢迎指正 SM2 由于SM2算法牵扯到一些较为复杂
  • Stm32下环境传感器-Stlm75-hts221-spg30(Hal)

    Stm32下环境传感器 Stlm75 hts221 spg30 xff08 Hal xff09 简介IIC驱动接口Stlm75hts221Spg30 简介 Stlm75与Hts221都是ST的传感器 xff0c 有官方例程 xff0c 我只
  • vscode makefile编译方法实例

    c出来 o 使用 o出来 bin NB二人组走天下 xff0c 目标 xff1a 依赖 xff0c 下一行tab 加命令 感觉时比较块上手的教程 xff0c 手写AI c语言中文网的makefile c语言中文网的就是按部就班 xff0c
  • 树莓派(三):将你的树莓派进行镜像备份

    0 前言 就像备份电脑一样 xff0c 你一定不想树莓派出错后重新配置树莓派 xff0c 将你的树莓派进行备份 1 建立img镜像文件 随便找一个地方 xff0c 新建一个文本文档 xff0c 命名为 你喜欢的名字 img 这时候就会生成一
  • 接口的理解、接口匿名实现类的创建

    接口的概述 xff1a 一方面 xff0c 有时必须从几个类中派生出一个子类 xff0c 继承它们所有的属性和方法 但是 xff0c Java不支持多重继承 xff0c 有了接口 xff0c 就可以得到多重继承的效果 另一方面 xff0c
  • 关于大疆经纬M100进行二次开发视觉跟踪和视觉SLAM的求助

    本人第一次接触大疆的二次开发 xff0c 现在的需求是使用M100进行二次开发能够实现视觉跟踪目标 xff0c 并能够实现视觉SLAM xff0c 但是我没有接触过二次开发 xff0c 希望各位有过经验的大佬能够不吝留言给我说一下具体实现的
  • 定义一个接口CanFly,描述会飞的方法public void fly();

    1 使用类与接口的知识完成如下要求 xff1a xff08 1 xff09 定义一个接口CanFly xff0c 描述会飞的方法public void fly xff08 2 xff09 分别定义类飞机和鸟 xff0c 实现CanFly接口
  • 在Keil4中新建51单片机工程模板详细步骤

    本文主要介绍51单片机学习和开发中的第一步 新建工程模板 对于刚开始学单片机的同学 xff0c 首先要在电脑上装好MDK4软件和CH340驱动 xff0c 然后也要有一个单片机烧录软件 xff08 一般买回来的单片机附带的资料里都会有这三个
  • Java笔试常用库函数

    字符串转数组 String s span class token operator 61 span span class token string 34 13 34 span span class token punctuation spa
  • Pytorch极简入门教程(十六)——DenseNet提取特征

    Pytorch之DenseNet提取特征 导入必要的模块 span class token keyword import span torch span class token keyword from span torch span cl
  • 1. 创建一个功能包(package)

    一 ros所有的进程都需要在工作空间下进行 首先 xff0c 在 home文件夹 任何目录都可以 下创建一个工作空间 xff1a source span class token operator span opt span class to
  • 谷粒学院知识点总结

    文章目录 前言一 项目功能点1 后台管理系统功能2 前台系统功能3 总结项目技术点 二 项目问题三 项目描述1 总体介绍2 项目功能模块 amp 主要深入的模块3 项目涉及技术 前言 谷粒学院知识点总结 xff0c 准备实习面试 一 项目功
  • Win11家庭版U盘Pe安装

    目录 1 准备材料 2 安装 3 开机 4 需要安装的软件 5 封装 6 发现问题 未解决 1 准备材料 1 win11下载 MSDN 迅雷地址链接 2 驱动总裁 U盘魔术师 地址链接 2 安装 1 做好启动盘后 开机进pe 3 开机 准备
  • Android应用与硬件建立连接

    文章目录 1 建立连接的原理2 信件 和 邮递员 3 对方可能未收到如何处理4 接收 回信 5 多次数据交互6 小结 1 建立连接的原理 在实现软件与硬件交互的时候 xff0c 首先需要了解该硬件的构造 xff0c 运行流程等相关操作 xf

随机推荐

  • 使用Layui时间组件(laydate)

    在一般的程序或者软件业务的操作上 xff0c 通常涉及时间的记录 xff0c 需要记录业务时间 xff0c 或者根据时间来筛 选业务 选择时间 xff0c 可以直接输入 xff0c 也可以弹出日期进行选择 在layui中提供了 xff0c
  • 规范vs代码

    开发工具与关键技术 xff1a VS 作者 xff1a 吴业华 撰写时间 xff1a 2019年7月7号 在我们编程过程中 代码的规范性涉及很大很大 xff0c 有时候即使你的代码打对了 但是依然报错 这份功劳差不多大概都是代码的不规范所收
  • ESP8266_APP连接试验

    ESP8266 APP连接试验 概述硬件部分8266固件烧录Arduino IDE 8266版型下载安装MQTT库ESP8266程序设计 APP部分创建项目UI设计主程序设计 概述 本次试验使用的是ESP8266 NodeMCU 硬件部分
  • ROS安装时rosdep init与rosdep update问题解决方法(2022.04.08亲测)

    2022 4 8更新 xff1a 运行下面的指令即可 span class token function sudo span span class token function apt get span span class token f
  • 【已解决】mmcv/_ext.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN6caffe28TypeMeta21_typeMetaData

    问题描述 使用MMDetection复现论文 xff0c 出现如下Bug xff1a ImportError home quaiping anaconda3 lib python3 7 site packages mmcv ext cpyt
  • g2o图优化简介与基本使用方法

    一 g2o简介 g2o xff08 General Graphic Optimization xff09 是一个基于图优化的库 xff0c 将非线性优化与图论结合起来的理论 xff0c 我们可以利用g2o求解任何可以表示为图优化的最小二乘问
  • Realsense安装使用过程问题汇总

    1 安装失败内核不支持 问题 xff1a 由于我在Ubuntu20 04上进行安装 xff0c 内核版本为5 13 xff0c 而目前realsense最高仅支持到5 4 xff0c 所以内核版本过高需要降低内核版本才能再次编译安装 官方要
  • ROS与STM32通信的实现

    ROS功能包与STM32工程文件 xff1a 蓝奏云 xff1a https huffie lanzouw com iN7w602ti37a 1 通信协议 STM32和ROS端各有一个数据发送函数和数据接收函数 xff0c 发送和接受的数据
  • C语言 字符串最后一位可用’\0‘标示

  • 基于C#的工控上位机软件开发从入门到学废,需要几步?

    基于C 的工控上位机软件开发从入门到学废 xff0c 需要几步 xff1f 随着工控产品的应用 xff0c 开始大幅度渗透进民用领域 涉及的工控产品范围广泛 xff0c 如PLC DCS 变频器 仪表 电机 SCADA 低压及配电元器件等
  • 工作生活篇之第六天

    工作生活篇之第六天 最近由于疫情的影响 xff0c 国家电网也发布了最新消息 xff0c 电费在欠额的情况可继续使用 本来我是以为只有电费欠费可以继续使用 xff0c 没想到燃气费也是 xff0c 最近燃气费不多了 xff0c 然后还得去银
  • 工作生活篇之第九篇

    工作生活篇之第九篇 一直觉得这世上告别仪式挺多的 xff0c 比如喝酒 旅行 xff0c 或干脆痛哭一场 xff0c 可是后来才知道 xff0c 人生中大部分告别是悄无声息的 xff0c 原来某天的相见 xff0c 竟已是最后一面 xff0
  • ROS:查看ROS相关信息的常用方法(三)

    文章目录 一 ROS命令与节点话题查看1 rosnode2 rostopic3 rostopic info 话题名称4 rosrun rqt graph rqt graph 二 rqt工具与节点话题查看 一 ROS命令与节点话题查看 1 r
  • 【算法】基于STM32的MPU6050卡尔曼滤波算法(入门级)

    1 简介 卡尔曼滤波 xff08 Kalman filtering xff09 是一种利用线性系统状态方程 xff0c 通过系统输入输出观测数据 xff0c 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 xff0
  • 爬虫的爬取策略: 宽度优先与深度优先

    64 爬取策略 xff1a 宽度优先与深度优先 1 分别的优缺点 2 什么场景下用 xff1f 爬虫的抓取策略 在爬虫系统中 xff0c 待抓取URL队列是很重要的一部分 待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题 x
  • shell脚本内调用另外一个shell脚本的几种方法

    有时会在一个shell脚本 如test call other shell sh 中调用另外一个shell脚本 如parameter usage sh xff0c 这里总结几种可行的方法 xff0c 这些方法在linux上和windows上
  • 真实项目开发的input标签焦点事件运用

    真实项目开发中input标签焦点事件的运用 开发工具与关键技术 xff1a VisualStudio C 作者 xff1a 落白 撰写时间 xff1a 2019 6 15 在开发项目时有时候会需要这么一个功能效果 xff0c 比如有六个in
  • layui use 定义js外部引用函数

    layui use 加载layui define 定义的模块 xff0c 当外部 js 或 onclick调用 use 内部函数时 xff0c 需要在 use 中定义 window 函数供外部引用 window span class tok
  • shell脚本中内嵌可执行文件/文件

    示例 test sh span class token operator span span class token operator span bin span class token operator span sh 追加在shell脚
  • 浅谈嵌入式

    浅谈嵌入式 相比耳熟能详的互联网行业 xff0c 嵌入式这几个字眼出现在公众眼前的几率可以达到忽略不计的程度 xff0c 这不仅说明嵌入式行业的工程师数量远比互联网少 xff0c 同时意味着嵌入式行业的吸引力貌似低于互联网 但是 xff0c