怎样入门嵌入式嵌入式未来的发展方向

2023-11-04

概述

​    很多工程师要往嵌入式方向发展,特别是ARM得到应用后,这个趋势更是有增无减,但你真的知道怎样入门嵌入式么?你知道嵌入式未来的发展方向么?


怎样入门嵌入式嵌入式未来的发展方向
在很多学生或者初级工程师都关注嵌入式,尤其在ARM大红大紫以后,这个趋势更是有增无减,但你真的知道怎样入门嵌入式么? 你知道嵌入式未来的发展方向么?

我先谈一下自己的背景吧,我做了5年软件工程师,3年项目经理,全部是嵌入式领域,包括消费电子和车机产品。 感觉嵌入式软件底层的发展一直停留在07年的水平,即使是现在,使用的技术和那个时候也差不多。 所作的事情基本围绕硬件调整driver, 内核基本都是Linux, 不管你上面的系统是android还是QT orothers, 作为工程师的职业发展一直处于停滞状态。 为了突破这个我后面选择了做PM,目前还在这个职位。 对于转变是好是坏,说不清楚,有失去的(技术有些淡忘),也有收获;目前也很迷茫, 上升空间不大, 琐事也很多, 真是想换个行业。下面我们来继续谈一下吧!

首先, 嵌入式从业者可以怎么划分?

可以把嵌入式工程师分成bsp相关和业务相关。
bsp做的浅的, 根据板子需要裁剪下boot loader和kernel, 集成下驱动,简单调试硬件平台的各种问题。

做的深的,需要了解各大处理器构架(x86,mips,ppc,arm),懂汇编和c,有一定的硬件知识,懂各种常用的高速,中速,低速接口协议(ddr,pcie,usb,ethernet,nor,nand,i2c,spi),会使用示波器抓信号,量波形,会使用各类协议分析仪抓问
题,会结合驱动调试错误,linux,vxworks的系统机制和调试方法也要熟悉。

再进一步,需要懂处理器或者各类业务芯片的微构架,知道怎么去优化性能,负责解决各种疑难杂症。

另外一个方向,深入操作系统,非常熟悉其内核和各类协议栈,知道怎么去优化性能,负责解决各种疑难杂症。

基本上做到以上几点就可以不用担心小康问题了。就算收入不满意,各大内资外资公司都可以跳。不想搞技术的,转项目管理或者带队,或者到芯片公司做技术支持也可以,情商高的还可以转市场,销售。
不过在我接触过的地方,不管外企私企,基本上没有多少人能完全做到。而且很多东西不是自己钻研就能了解到,需要机会让你去玩。也许在芯片公司这样的机会多一些。

业务方向就广了,通信行业可以往网络构架,路由器,网络存储走,消费电子行业往图像识别,视频,图形走,工控领域不了解。你需要非常了解自己公司或者业界先进公司的产品和协议,并且了解你的客户的需求,并且把握行业动向。举个例子,我
在英特尔的时候,英特尔和索尼合作,设计了一款芯片。结果做出来以后,英特尔这个设计处理器的一流公司,在视频接口和nand接口上被索尼乱骂,很多协议上没定义的细节是工程师自己设计的,没有贴合索尼的实际应用,板子做出来很多问题。

做到业务领域的牛人,那前途更光明,无论留在系统厂商,或者去芯片公司,都被当宝。收入那就不用多讲了,没事还可以被邀请去创个业啥的。

所以说,懂嵌入式,最好还要懂业务。嵌入式是基础,业务是升华。都懂的话你就是大神了。

其次,如果我想掌握嵌入式,要涉及哪些方面呢?

嵌入式开发的门槛相对较高,对程序员的要求一般都是对底层感兴趣,学习能力、动手能力要强,对问题能够从全局和细节去把握,有很强的系统分析和设计能力。从工程师起步,一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另
一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。

硬件和软件的发展方向是不同的。说说软件需要学习的知识。

虽然说搞嵌入式软件更多时候是在实际的工作中学习的,但一些重要的基础知识不可或缺。

1、计算机组成/微机原理
主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。

2、操作系统
嵌入式产品应用比较广泛的是Linux和WinCE。但操作系统的内部设计原理都是殊途同归。首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟
悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式产品上。

3、数字电路
学习这方面的知识主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。

4、编程语言:C语言和汇编
对于C语言本身的基础来说,无非是把结构化,函数,数组,指针弄熟,但是嵌入式开发对C语言应用的要求会更高。要对内存分配,文件访问,寄存器访问,预处理指令,中断处理程序等等相当熟悉,这些都是在使用中要注意的细节问题。C语言对
程序的优化也很重要,而这些往往是需要从全局去考虑。汇编一般是和处理器的指令集相关的,可以更好的去理解处理器的工作原理,往往是用在一些需要效率的地方,如系统的初始化。

5、数据结构和算法
数据结构在嵌入式开发中也很重要,比如说操作系统里的很多实现都用到了具体的算法。基本的数据结构需要掌握,如各种链表,树,图等等;而算法的学习需要数学知识作为铺垫,用计算机语言去实现。对于软件从业人员来说,算法终究是一个工
具,在实际应用时再深入挖掘也可。

6、软件工程/软件测试/项目管理基础
这些是软件开发人员的必备知识。

7、开发平台
嵌入式的开发平台不局限于一种操作系统,因此要熟悉各种操作系统下的命令、编辑器及开发工具,这一点往往被很多人忽视。举个例子,Linux下的程序员开发环境往往是按自己的习惯搭建,熟练掌握一种编辑器如Vim/Emacs可以大幅度提高工作效
率。磨刀不误砍柴工。

嵌入式领域的方向是很多的,它所应用到的行业范围也很广。因此除了这些基础的知识以外,在具体的应用中可能还需要一些其它的知识,这些知识的每一种都可以研究的很深,举几个例子。

1、内核,驱动及中间件
内核开发和驱动本身就是一个方向,驱动和硬件接口相关,而内核的修改和移植更是需要对OS有很深的理解。至于中间件,
一般是基于OS或存在于OS和应用程序之间的库,最典型的就是基于Linux的Android。

2、通信协议
通信协议有很多种,经常用到的有网络通信协议,无线通信协议,串口/USB通信协议等等。

3、音视频技术
牵涉到音频视频处理,压缩,编解码等等。

4、信息安全
如加密技术,身份认证,数字证书等等。

5、行业知识
和具体行业或领域相关的知识,如通讯、工控、电子等等。

这里有一个我认为不错的学习步骤:
1、基础知识中,计算机组成、操作系统、编程语言和数据结构是必需的。
2、找一种CPU体系,了解其核心架构,学习指令集,比如说ARM。
3、找一种OS,如Linux,或是传统RTOS,如Nucleus、eCos,读源码和文档,理解OS内部实现,包括进程,任务,消息机制,
内存管理,设备驱动,中断等核心内容。
4、找一块成熟的开发板,板级资料要齐全,熟悉嵌入式软件开发流程。
5、在项目过程中深入学习其它的技术。
总之,这些知识的学习不是一蹴而就的,过程会很漫长,也没有什么特别的技巧。需要去看大量的技术文档和源码,而这些文档大部分又都是英文的。在工作和做具体项目的过程中会学习的比较快,理论结合实践才是王道。

嵌入式未来的就业方向如何?

嵌入式的发展方向有很多,门槛高低不一样。具体来说:
1、单片机:工控程序(不跑os)--入门容易,无外乎就是掌握汇编和c,能够根据datasheet来写,发展前景一般,也没有太大的技术难度,除非你在算法上面有优势,比如智能车会各种PID,模式识别上会神经网络,优化上会遗传算法等等,但是这些
复杂的控制一般就不会裸奔了(除非环境恶劣),肯定是处理器强悍,带os的;硬件制作--就是数字电路,涉及单片机的外设,感觉难度也不高,据我说知,只会单片机无论硬件还是软件工资都不高,也没有特别大的技术含量,同时,单片机更新换
代特别快,你需要从大量的单片机中找寻适合产品的,看不同的datasheet。

2、ARM:这个搞的人很多,软件上就是1.写底层驱动,这个入门,深入都不容易,需要对硬件及os有较深的了解,发展还是很不错;2.操作系统-比较复杂,linux,android等,你看现在很多手机厂商推出的操作系统也就是修改内核,换皮肤,就业还是
很容易的;3.应用程序,就是android开发或者Linux上应用开发(QT等),做的人很多,就业容易待遇也不错,需要掌握c++/java。硬件上1.就像手机一样在处理器上做整体的电路,比单片机入门难的多,做成技术大牛了不缺钱。2.soc,架构开发
等后面会提到

3、FPGA:就是硬件编程,入门很简单,做深很难,要对时序有非常深的理解和大量的项目开发经验,就算你做的特别好,前景还是不明确。FPGA近年的一大热门就是软件无线电,成本还降不下去,同时AD采样速度目前不够,导致FPGA的应用有
限,一般公司都是把它作为一个验证工具比如IC设计上的验证。只会FPGA就业会很窄,也不理想,建议作为工具学习。

4、DSP:就是算法,你需要一个名牌大学研究生以上学历,同时在算法和数学上有很强的能力。如果做不到,就不用搞了。

5、IC设计,做微处理器上的soc,前端后端,专用处理器(应该也属于嵌入式领域),入门难,成为牛人更难,对计算机体系结构,微处理器结构,集成电路等等有比较深的认识,然后项目经验大大的有才行。不过国内行情一般,外企招人少,希望今
年开始国家的扶持政策能够发挥作用。

6、微处理器体系结构:偏理论,偏宏观,研究生能够对整个体系结构有个比较浅的了解同时在局部上能够做一点设计工作,博士生能够对整个结构有较深的认识在局部上能设计。现在搞的多的是高性能体系结构,低功耗结构,并行开发等等,因为功
耗和并行限制了目前处理器的速度,所以在低功耗和并行上开发有很大的前景,同时基于神经网络的架构处理器,云计算处理器等专用处理器也是目前的一个热点。发展前景很好,但是难度不是一般的大,从中国在架构上做出的贡献在世界上分量很少
就可以看出。

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

怎样入门嵌入式嵌入式未来的发展方向 的相关文章

  • Ubuntu20.04_x86交叉编译aarch64版本的tslib1.22步骤

    编译环境 小米笔记本 Windows10 VMware17 Ubuntu20 04虚拟机 编译目标 需要生成aarch64环境下对应的触摸屏驱动 编译步骤 1 下载aarch64 linux gnu编译器 下载地址为 https relea
  • STM32 基础系列教程 5 – 系统定时器

    前言 学习stm32 systime的使用 用基本定时器产生定时1ms定时中断 用于参生1ms系统时钟节拍 并实现将1ms 节拍改成500us 或其它时间功能 并实产生的时间节拍为机基准实现控制LED闪烁 示例详解 基于硬件平台 STM32
  • 嵌入式Linux入门-彻底理解UART串口,手把手教你写程序

    UART串口这个东西 是嵌入式学习上避不开的 不仅在调试中经常用到 还有很多模块通过串口与SOC相连 这篇文章让你彻彻底底 搞明白串口程序的编写 没有基础的先看 嵌入式Linux学习系列全部文章 嵌入式Linux学习 从裸机到应用教程大全
  • 初识网络原理(笔记)

    目录 编辑局域网 网络通信基础 IP 地址 端口号 协议 协议分层 TCP IP 五层网络模型 网络数据传输的基本流程 发送方的情况 接收方的情况 局域网 搭建网络的时候 需要用到 交换机 和 路由器 路由器上 有 lan 口 和 wan
  • 交叉编译(全志)

    文章目录 一 交叉编译概念 二 香橙派交叉编译 3 带WiringPi库的交叉编译 一 交叉编译概念 交叉编译 就是 在一种平台上编译 编译出来的程序 是放到别的平台上运行即编译的环境 和运行的环境不一样 属于交叉的 例 在进行嵌入式开发时
  • STM32 使用HAL库实现微秒级长延时

    STM32 使用HAL库实现微秒级长延时 背景 定时器初始化 主程序中的设计 背景 STM32 HAL库中有一个延时函数HAL Delay 可以实现毫秒级的延时 能够满足一般延时需求 在有些场合下 我们需要更精准的延时 同时可能会有较长时间
  • 【ARM】Linux内核驱动之中断

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https gitee com stylle linux code 点赞 收藏 再看 养成习惯 订阅的粉丝可通过PC端文末加我微信 可对文章的内容进
  • ubuntu1604 虚拟机启动仅只有桌面文件和壁纸,ctrl+alt+t打不开终端解决办法

    使用ctrl alt f1进入tty命令模式 然后登陆账号密码 最后输入sudo sevice lightdm restart 这样就可以重启桌面 如果还是不行的话就重新装unity sudo apt get update sudo apt
  • 【GD32F303开发之开发工具的安装与配置】

    GD32F303开发系列文章目录 第一章 GD32微控制器开发工具的安装与配置 第二章 GD32基准工程实验 第三章 GD32串口通信实验 第四章 GD32EXMC与LCD显示实验 文章目录 GD32F303开发系列文章目录 前言 一 GD
  • RTL8762DK PWM(七)

    概述 本示例 只要介绍 如何使用PWM 又离成功进了一步 一 环境 1 硬件 RTL8762DK 128M Bits Falsh 2 软件 keil IDE 二 PWM的使用 1 创建examples ble pwm工程 基于 exampl
  • 必看:主线剧情系列的循序渐进的查看顺序

    必看 主线剧情 系列 的循序渐进的查看顺序 主线剧情 Linux 系列 为嵌入式 Linux 的学习记录 仓库地址 Github Gitee 一开始可以鸟瞰一下 ARM 系列处理器的当前局面 主线剧情 番外01 ARM系列快速鸟瞰 首先是基
  • 【buildroot】buildroot使用总结

    文章目录 一 buildroot使用步骤 1 构建图形配置界面 2 配置Target options 3 配置Build options 4 配置Toolchain 5 配置 System configuration 6 配置 Filesy
  • linux 网络

    网络基础 协议的概念 什么是协议 从应用的角度出发 协议可理解为 规则 是数据传输和数据的解释的规则 假设 A B双方欲传输文件 规定 第一次 传输文件名 接收方接收到文件名 应答OK给传输方 第二次 发送文件的尺寸 接收方接收到该数据再次
  • Linux学习第17天:pinctrl和gpio子系统开发:由0到1

    Linux版本号4 1 15 芯片I MX6ULL 大叔学Linux 品人间百味 思文短情长 本篇笔记的题目为 pinctrl和gpio子系统开发 由0到1 做嵌入式系统开发 肯定经历过单片机 ARM Linux这么一个过程 这是一个8位单
  • SoC性能指标&ARM内核运算能力

    自动驾驶芯片常用的性能评价指标 TOPS DMIPS GFLOPS分别说的是啥 TOPS Tera Operation Per Second 表示每秒钟可以进行的操作数量 用于衡量自动驾驶的算力 众所周知 汽车上最常用的传感器是摄像头 而与
  • Linux学习第16天:Linux设备树下的LED驱动开发:举一反三 专注专心专业

    Linux版本号4 1 15 芯片I MX6ULL 大叔学Linux 品人间百味 思文短情长 在开题之前 先说一下这次的题目 尤其是后面的 举一反三 专注专心专业 到底想给大家传递什么信息 LED驱动开发 目前为止已经学了好几种方法 包括裸
  • 在WINDOW 系统下如何用批处理命令生成代码

    如图要实现一个每次编译都会自动重新生成的代码 一般是 软件版本相关的代码最适合这种自动生成 上图中需在用到编译时间和日期 来直接上代码 BEGIN COLOR 07 cls echo off ECHO ECHO 自动生成软件版本号 ECHO
  • ARM接口编程—WDT(exynos 4412平台)

    WDT简介 Watch Dog Timer即看门狗定时器 其主要作用是当发生软件故障时可产生复位信号使SOC复位 其本质是一个计数器 WDT工作原理 WTD寄存器 wtd控制寄存器 用于设置一级分频 二级分频 使能 产生复位和中断信号 WT
  • 主线剧情0.0-Linux学习资源大综合

    Linux 学习资源大综合 对收集到的比较丰富的 Linux 学习相关的资料进行整理 注 如果链接挂了请告诉我 如果链接里的内容被删了那么直接搜文章名字试试也许会搜出来很多转载的 备份 注 在 Github 上的原版文章日后可能会更新 在其
  • linux ARM64 处理器内存屏障

    一 内存类型 ARMv8架构将系统中所有的内存 按照它们的特性 划分成两种 即普通内存和设备内存 并且它们是互斥的 也就是说系统中的某段内存要么是普通内存 要么是设备内存 不能都是 1 普通内存 Normal Memory 普通内存的特性是

随机推荐

  • 超实用!JavaScript修改CSS变量,达到动态修改样式的目的

    在网页开发中 我们通常使用CSS来设置网页的样式 但是 在开发过程中 有时候我们需要根据不同的条件来动态修改样式 这时候就需要使用JavaScript来实现 在CSS中 有一种变量的概念 可以使用变量来定义颜色 字体大小等样式属性 在本篇文
  • as报错:Gradle 7.2 requires Java 8 or later to run. Your build is currently configured to use Java 7

    android studio创建项目时报错 Gradle 7 2 requires Java 8 or later to run Your build is currently configured to use Java 7 意思是说我现
  • [计算机网络]HTTP、UDP、TCP协议

    个人主页 你帅你先说 欢迎点赞 关注 收藏 既选择了远方 便只顾风雨兼程 欢迎大家有问题随时私信我 版权 本文由 你帅你先说 原创 CSDN首发 侵权必究 为您导航 1 HTTP协议 1 1URL 1 2HTTP协议格式 1 2 1HTTP
  • 正则表达式与Regex函数

    影响使用正则表达式的因素 C语言中使用strstr或strcmp函数 需要确定字符串中含有此子串 进行字符串匹配 匹配效率较低 且两个函数均为绝对匹配 灵活性较差 正则表达式通过数据的规则 匹配提取数据 正则表达式的匹配方式 工作流程 正则
  • 【DL】第 9 章:新兴的神经网络设计

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • TypeScript基本类型的了解

    数据类型 number string boolean跟js类同 字面量 它就是值本身及值本身的类型 let a 10 a 10 a 125 a 123 any表示任何类型 可以任意赋值 一个变量赋值为any后相当于对该变量关闭了ts的类型检
  • 用cmake将源代码编译成可运行的工程项目

    网上下载的完整源代码 比如 深入理解OpenCV 实用计算机视觉项目解析 想要用来学习 首先得把源码编译到自己使用的平台上 比如我的是VS2010 一般源代码给出的是 C Source C C Header 文件 以及CmakeLists
  • JS之对象-对象增强语法(ES6)

    ES6对JS的对象提供一些封装的语法糖 用来简化某些操作 1 属性值简写 给对象添加变量时 同名属性可以简写 let name zhangsan let Obj name test lalala console log name zhang
  • AI时代带来的图片造假危机,该如何解决

    一 前言 当今 图片造假问题非常泛滥 已经成为现代社会中一个严峻的问题 随着AI技术不断的发展 人们可以轻松地通过图像编辑和AI智能生成来篡改和伪造图片 使其看起来真实而难以辨别 之前就看到过一对硕士夫妻为了骗保竟篡改结婚证 离婚证等信息
  • 常用的maven命令

    常用maven命令总结 mvn v 查看版本 mvn archetype create 创建 Maven 项目 mvn compile 编译源代码 mvn test compile 编译测试代码 mvn test 运行应用程序中的单元测试
  • C++ 自带Sort(快速排序)所需的头文件和操作方法

    需要的头文件 include
  • Promise实现串行执行

    第二种写法 const arr 1 2 3 4 5 6 arr reduce async prs cur idx gt const t await prs const time idx 0 0 1000 idx 1 500 return n
  • 脚本重启电信天翼网关

    背景 家里光猫经常断网 重启才能恢复 光猫位置拔电源不方便 telnet登录重启需破解有风险 因此采用curl模拟登录web重启 最后通过其他脚本监测 实现断网时自动执行重启 bin sh a 1 loginfo curl s L http
  • MySQL与Oracle主键冲突解决方式

    1 MySQL主键冲突 当主键冲突时 可以选择更新或替换 1 1 主键冲突 主键冲突 mysql gt desc my class Field Type Null Key
  • Windows子系统安装

    Windows子系统安装 1 Windows配置修改 1 开启开发者模式 在设置中找到更新与安全 选择开发者选项将开发者模式打开 2 开启子系统 打开控制面板选择程序 按图依次点击勾选适用于Linux的Windows子系统 然后进行重启电脑
  • 四叉树在MMO中的应用

    四叉树是一种树状数据结构 在每一个节点上会有四个子区块 四叉树常应用于二维空间数据的分析与分类 它将数据区分成为四个象限 数据范围可以是方形或矩形或其他任意形状 四叉树在游戏中常常用于减少遍历的次数 1 比如 地图上有N个怪 玩家砍了一刀
  • 【毕设选题】基于stm32的智能扫地机器人设计与实现

    文章目录 0 简介 1 课题背景 2 硬件系统总体框架 2 1 电机驱动 2 2 红外线传感器 2 3 超声波传感器 2 4 MPU6050 2 5 ATK ESP8266 WI FI 模块 2 6 电源管理模块 3 软件系统设计 3 1
  • Could not acquire change log lock. Currently locked by XXX

    Could not acquire change log lock Currently locked by XXX 在项目执行liquibase时 发现超过5分钟依然执行不完成 最后报错显示被被锁了 于是找公司的网络 结果被告知该ip不是公
  • 【RPA入门教程】数据抓取功能使用教学(一)

    UiBot 0 7 版新增加了 数据抓取 功能 这项功能可以方便获取网页中的相似元素 将相似元素的数据采集到数组中 比如各种电商网站 淘宝 京东 拼多多等 的商品分类 商品列表信息 商品名 价格等 或者网页中的各种列表 表格的数据 本期教学
  • 怎样入门嵌入式嵌入式未来的发展方向

    概述 很多工程师要往嵌入式方向发展 特别是ARM得到应用后 这个趋势更是有增无减 但你真的知道怎样入门嵌入式么 你知道嵌入式未来的发展方向么 怎样入门嵌入式嵌入式未来的发展方向 在很多学生或者初级工程师都关注嵌入式 尤其在ARM大红大紫以后