嵌入式第0部分:嵌入式工程师完全学习指南

2023-05-16

一、什么是嵌入式

(一)定义:

传统定义(狭义嵌入式):嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件课裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

当前客观定义(泛嵌入式):除PC之外的一切计算机系统都可以叫嵌入式。典型代表:智能手机、工业机器人、汽车电子、航空航天(四轴飞行器)、安防监控(IPC)等。

(二)嵌入式系统的技术特点:

低功耗(BLE、zigbee、低功耗WIFI):低功耗是嵌入式中决定生死存亡的东西,因为嵌入式一般是电池供电的,一定要低功耗。

联网化(4G、BT、zigbee、WIFI):很多嵌入式设备都要连接网络,连接网络才能智能。

RISC CPU(ARM、MIPS):现在大部分的嵌入式CPU使用的都是RISC精简指令集,ARM的CPU。

OS(Linux、Android、RTOS):一般无屏幕的用Linux,如路由器。有大屏幕的用Android,如车载显示屏、手机。

分层(底层、OS层、应用层):底层是硬件、OS层是操作系统、应用层是使用的

跨度大、知识杂、学习曲线陡峭而绵长。嵌入式不是一两年能学完的。需要长时间的积淀。

(三)三次信息化浪潮

第一次浪潮:个人计算机的产生。注重信息处理,产生了微软、IBM等大公司。

第二次浪潮:互联网和移动通信网。注重信息传输,产生了华为、中兴、阿里巴巴、腾讯等大公司。

第三次浪潮:物联网。注重信息获取,物与物之间的信息交流。

嵌入式当前的主流热点方向:消费电子(智能手机、游戏机、可穿戴)、工业自动化(工业机器人)、汽车电子(汽车控制系统、车载定位导航、车载娱乐、自动驾驶系统)、航空航天(四轴飞行器、载人飞行器)、物联网(智慧农业、智慧交通、智能家居)。总的来说就是用电子技术来改变人们的生活方式。

 

二、什么人适合学嵌入式

(一)嵌入式开发用到那些知识

编程语言:第一层次(C语言)结构体、指针、函数指针,C语言有大量的高深的东西。第二层次(ARM汇编、shell脚本、C++、Java)ARM汇编能看懂,shell脚本如python,软件移植需要用。嵌入式的上层开发需要C++和Java

操作系统:第一层次(Linux)第二层次(RTOS、Android),Linux在嵌入式中的独霸天下的,一定要会,Linux性能很好但是界面不美观,有界面的一般用Android。

硬件方面:会看原理图、懂得串口、I2C、USB等常见通信原理及编程、懂得LCD、触摸屏等常见的工作原理及编程。不用会画PCB版,会有专门的硬件工程师设计,会看懂就可,不用刻意去学习

(二)嵌入式开发需要什么技能

以软件为主,但是需要对硬件有一定了解。现在大部分的公司开发都是软件为主,硬件一般是外包公司做。软甲需要差异化,所以面广。

涉及面宽,需要能够持续学习。刚开始工资很低很累,但是坚持下去就会提升很快。

细节较多,需要耐心和细致的洞察力。主要是细致而不是聪明,如把==写成了=,把main写成了mian都会导致很多错误。

重在调试,需要有修改和调试程序的能力。找到错误很重要。

企业花钱买的是你解决问题的能力,而不是你脑袋中装的知识成为高手很难。

(三)总结

嵌入式是处理“软硬结合”部分的。

嵌入式软件开发并不需要会设计硬件电路和自己画PCB。

嵌入式软件开发以C语言和Linux系统为核心,学习的关键和入口点就在这里。

嵌入式开发涉及面及广,学习周期长、学习难度大(相比Android应用、微信营销等)。

 

三、完整的嵌入式学习路线图

(一)怎么叫完全学习

1、嵌入式核心课程:每周五天,早九点到晚六点也需要三四个月才能学完,差不多600-800个小时。核心课程掌握即可就业。

分为5大模块:Linux基础+C语言、Linux应用程序开发(系统编程、网络编程)、ARM编程(ARM体系结构、ARM汇编、开发板常见外设裸机编程)、Linux系统移植(uboot移植、kernel移植、rootfs制作)、Linux驱动开发。

2、Android扩展:Android HAL驱动、Android系统定制、Android应用开发。

Android驱动是基于Linux驱动的HAL驱动就是Android驱动中和Linux中打交道的部分。Android应用开发比较简单。

3、物联网扩展:GPS和地图查询服务、WIFI、蓝牙、Zigbee、RFID。物联网和工业催生出了工业4.0,机器智能化生产线。

4、各种实训项目:华为海思Hi3518系列网络摄像机、开源四轴飞行器、网络远程控制照明系统、电子书阅读器、裸机写图片播放器、开源Android平板电脑。

 

四、嵌入式与物联网、云计算、大数据的关系

物联网是未来发展的方向,但是不会一两年就到来。但很多迹象表明,物联网已经正式开始了,很多大公司已经开始行动了。

物联网的三层架构:应用层、网络层、感知层。感知层是传感器的输入,像人的眼镜鼻子耳朵,温度传感器,湿度传感器等多种传感器。网络层是输送信息。应用层相当于大脑,对信息进行分析响应。

(一)嵌入式与物联网

嵌入式是技术特征,物联网是技术应用。嵌入式技术催生了物联网的成熟。嵌入式大发展表明物联网时代即将到来。嵌入式领域积累的东西很多,入门门槛高。

(二)云计算与物联网

有一台你不知道的服务器电脑,你能用,但不知道它在哪,这就是“云”。云计算就是通过服务器进行各种各样的计算。

云计算作用于物联网的应用层;云计算依赖于设备的联网能力;云计算是嵌入式发展的必然产物;当前的模式是卖产品,云计算是卖服务。未来=瘦客户端+云计算。个人维护服务器成本高,难度大,将服务器集中管理,用户通过宽带传输处理数据,极大简化生产方式。

(三)大数据与物联网

物联网的主要功能就是产生数据、传播数据、分析数据;大数据来自于物联网感知层,其实就是来自各种嵌入式设备;大数据源于嵌入式、传播于物联网、分析于云计算;大数据将改变整个世界。大数据产生巨大的计算量,就需要云计算。

 

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

嵌入式第0部分:嵌入式工程师完全学习指南 的相关文章

  • Linux驱动开发与裸机开发区别

    Linux驱动开发与裸机开发区别 裸机驱动开发回顾Linux驱动开发思维Linux驱动开发分类 裸机驱动开发回顾 1 底层 跟寄存器打交通 xff0c 有些MCU提供了库 Linux驱动开发思维 1 Linux下驱动开发直接操作寄存器不现实
  • Linux下使用U盘

    第一步 xff1a 插入U盘 xff0c 如果能够识别出U盘 xff0c 则会打印出一些信息 xff1b 第二步 xff1a 查看U盘系统分配给U盘的设备名 xff1b 输入如下命令进行查看 xff1a fdisk l dev sda 如果
  • (Deep Learning)交叉验证(Cross Validation)

    交叉验证 xff08 Cross Validation xff09 交叉验证 xff08 Cross Validation xff09 是一种评估模型泛化性能的统计学方法 xff0c 它比单次划分训练集和测试集的方法更加稳定 全面 交叉验证
  • (Linux)在Ubuntu系统中添加新用户并授予root权限

    向Ubuntu系统中添加新用户并为其授予root权限的步骤如下 打开终端Terminal 输入命令 sudo su 以 root 身份登录 注 sudo su 切换root身份 不携带当前用户环境变量 sudo su 切换root身份 携带
  • (深度学习)类别不平衡数据集中IOU和mIOU的选择

    测试集上的mIOU很高 xff0c 但是实际的分割结果很差 xff0c 几乎没有分割出前景 xff0c 主要是因为要分割的目标占总面积之比太少 xff0c 即出现样本不均衡的问题 此时 xff0c 前景所占的比例太小 xff0c 背景所占的
  • 系统调用,API,运行库函数和C标准库函数的区别

    1 为什么用户程序不能直接访问系统内核模式提供的服务 xff1f 在linux中 xff0c 将程序的运行空间分为内核与用户空间 xff08 内核态和用户态 xff09 xff0c 在逻辑上它们之间是相互隔离的 xff0c 因此用户程序不能
  • 学习四旋翼(二):控制方法之串级PID与卡尔曼滤波(含MATLAB示例)

    暑假期间 xff0c 对于四旋翼有一点兴趣 xff0c 没有亲手做 xff0c 但是看了一些资料 这个系列文章只是对自己看的东西的记录 xff0c 对于想要学习了解相关知识的同学没有任何参考价值 xff01 本篇是系列的第二部分 xff1a
  • Git tag标签与branch分支 区别

    Git中的分支和标签有点类似 xff0c 都是引用或者说指针 关于Git引用可以参阅Git References一章节 一 相似的地方 xff1a 图示如下 xff1a heads和tags文件夹存储的是具体分支和标签 xff1a tags
  • 关于字符串结束符'\0'

    字符串结束符 xff1a 39 0 39 xff0c 其本质就是8位的 0000 0000 xff0c 而字符类型中并没有这个字符 xff08 注意与ASCLL码区别 xff0c 在ASCLL中000 代表NULL xff09 所以用0的转
  • extern “C”的作用详解

    extern 34 C 34 的主要作用就是为了能够正确实现C 43 43 代码调用其他C语言代码 加上extern 34 C 34 后 xff0c 会指示编译器这部分代码按C语言的进行编译 xff0c 而不是C 43 43 的 由于C 4
  • Lab2 p3 围棋吃子的算法实现

    简单介绍下框架 xff1a 1 xff0e 声明一维数组block 作为一个临时变量记录一个块的大小 xff0c 声明一个整型blockLength记录这个块的长度 2 xff0e kill 为吃子的主函数 recersion int i
  • Python爬取皮皮虾视频

    背景 xff1a 今天闲着没事做 xff0c 然后想着刷刷视频 xff0c 然后发现前段时间学习了一下网络爬虫的一些基本应用 xff0c 就想着利用爬虫到网上去爬取一点视频来模拟人为的点击 下载操作 因为皮皮虾是手机端的app xff0c
  • C语言——全局变量的定义与声明

    转自 xff1a https www cnblogs com amanlikethis p 3319744 html C语言中全局变量的定义与声明困扰着许多C语言初学者 本文讲述了全局变量定义与声明的用法 xff0c 而且本为也将阐述这种用
  • ResourceNotFound:xxx roslaunch找不到包

    执行命令 xff1a roslaunch xxx 出现如下错误 错误原因 xff1a 这里错误的原因可能有两个 原因1 xff1a ROS path n 没有你的包所在的路径 解决方法 xff1a 对ros path 进行配置 1 xff1
  • 单片机对底层寄存器的操作

    最近项目用到了国产的一款单片机 xff0c 没有例程的支持 xff0c 需要自己从头开始写底层 又感受到了自己本科刚学习51的时候的浮躁 xff0c 不懂得如何操作底层的寄存器 xff0c 只是一味的抄写别人的例程 xff0c 然后进行简单
  • PyQt5自学记录(1)——PyQt5多线程实现详解

    PyQt5自学记录 xff08 1 xff09 PyQt5中多线程实现详解 最近想用PyQt5完成图像识别的一个GUI系统 xff0c 在调用算法模型进行识别的时候 xff0c 界面会卡住没有反应 xff0c 所以想学习一下多线程解决这个问
  • 编写程序的步骤

    编写 C 语言程序的7个步骤 1 定义程序的目标 资深程序员需要养成的良好的思考习惯 在动手写程序之前 xff0c 要在脑中有清晰的思路 想要程序去做什么 1 首先自己要明确自己想做什么 xff0c 2 思考你的程序需要哪些信息 xff0c
  • 看懂英文数据手册、搭建电路

    阅读数据手册是一个工程师的必备技能 xff0c 拿到一份数据手册 xff0c 特别是英文数据手册 xff0c 如何去读 xff0c 才能更快更好的找到自己想要的东西 xff1f 坚信 xff1a 阅读英文手册 xff0c 并没有想象的那么难
  • 英语四级重点短语

    devote to 将 致力于 derive from 61 originate from 61 stem from 源自于 instant adj 立即的 速溶的 instant coffee速溶咖啡 instant noodle 方便面
  • stm32串口通信的一个小总结(从底层进行理解)

    从底层理解stm32USART串口通信 以前学串口通信踩过很多坑 xff0c 过了一段时间又有些忘了 xff0c 现在问了几个很强很强的人差不多弄懂了 xff0c 现在写一写总结 xff0c 免得以后又忘了 基本知识 xff1a 1 TDR

随机推荐

  • 旋翼回收火箭系列博客3——控制系统设计(PX4火箭)

    绪论 为了缩短研制周期和提高产品可靠性 xff0c 本系统采用商用开源自动驾驶仪PX4 xff0c 实现旋翼空中展开并回收的功能 PX4是全球最为成熟的开源自动驾驶仪 xff0c 可实现自动起飞 降落 执行航点等基本任务 然而此次火箭比赛要
  • 创建进程的系统调用

    Unix采用fork exec两个系统调用来完成新进程的创建 fork 创建调用该命令的进程的副本 子进程与父进程几乎处处相同 xff0c fork后两个进程执行的程序是一样的 xff0c id不一样 xff0c 相应变量就不一致 xff0
  • vscode解决git提交冲突

    我的场景 xff1a master分支在一台电脑上被修改提交到远程后 xff0c 在另一台电脑上没有拉取远程更改 xff0c 也进行了更改提交 点击vscode看到合并冲突文件为index js 点击查看冲突如下 有颜色的是冲突位置代码 x
  • LZW压缩算法(数据无损压缩)

    目录 一 LZW算法介绍 二 算法介绍 1 LZ xff37 算法的基本概念 2 LZW压缩的基本原理 3 LZW算法流程 xff1a 零 常用无损数据压缩算法 字典算法 游程编码 基于字典编码技术的LZW算法 基于哈夫曼编码原理的压缩算法
  • sftp账号创建和权限设置

    操作前需先开启telnet服务 xff0c 防止修改sshd config后 xff0c sshd服务启不了 systemctl span class token keyword start span telnet span class t
  • Python【列表】

    文章目录 1 列表的方法及注释2 其他修改列表的办法2 列表推导式3 列表的切片4 列表转换4 1 字符串转列表 xff1a 4 2 列表转字符串 list 列表 是一个可变序列 1 列表的方法及注释 列表的方法注释append x 将元素
  • FTP的port模式和pasv模式

    FTP的port模式和pasv模式 FTP具有两种模式 xff0c 分别是port模式 也叫主动模式 和pasv模式 也叫被动模式 主动模式 主动模式的FTP是指服务器主动连接客户端的数据端口 xff0c 可以理解为服务端主动给客户端传输文
  • shell for循环多个变量

    1 使用花括号 var1 var2 var3 a 61 span class token string 34 apple 34 span span class token punctuation span b 61 span class t
  • shell 基本运算符

    文章目录 1 算数运算2 关系运算符3 布尔运算符4 逻辑运算符5 字符串运算符6 文件测试运算符知识点 1 算数运算 方法一 sum1 61 96 expr 3 span class token operator 43 span 5 96
  • Dockerfile简介

    1 什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档 可以使用在命令行中调用任何命令 Docker通过读取Dockerfile中的指令自动生成映像 docker build命令用于从Dockerfile
  • 容器通信之跨链接通信

    前言 同一主机下搭建容器应用栈的环境 xff0c 只需要完成容器互联来实现容器间的通信即可 xff0c 这里采用docker run link选项建立容器间的互联关系 docker官方已不推荐使用docker run link来链接2个容器
  • Linux进程间通信

    1 unix域套接字 域套接字 xff1a 1 只能用于同一设备上不同进程之间的通信 xff1b 2 效率高于网络套接字 域套接字仅仅是复制数据 xff0c 并不走协议栈 xff1b 3 可靠 xff0c 全双工 xff1b 2 IP套接字
  • 什么是API

    1 什么是API API是Application Programming Interface xff08 应用程序接口 xff09 的缩写 是一些预先定义的函数 xff0c 目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力
  • FreeRTOS(二)任务基础知识

    一 前后台系统与RTOS 前后台系统 61 死循环 xff08 通常为1个 xff09 43 中断服务程序 xff08 通常为若干个 xff09 应用程序是一个无限循环 xff0c 循环中调用 API 函数完成所需的操作 xff0c 这个大
  • SBUS协议(20200210)

    最近看到很多sbus协议 xff0c 就专门搜集了一些资料学习一下 1 介绍 SBUS是一个接收机串行总线输出 xff0c 通过这根总线 xff0c 可以获得遥控器上所有通道的数据 目前很多模型及无人机电子设备都支持SBUS总线的接入 使用
  • 【openmv专题】串口通信

    这篇文章主要讲述openmv串口通信过程中会出现错位 xff0c 因缓存空间不足带来的串口报错问题 xff0c 直接进入正题 xff1a 串口通信有同步和异步之分 xff0c 而openmv用的是异步通信 xff0c 需要有缓存区 xff0
  • FreeRTOS任务上下文切换与任务状态切换的区别及联系

    FreeRTOS 中的任务上下文切换和任务状态切换是两个不同的概念 1 任务状态切换是指任务从一种状态切换到另一种状态 FreeRTOS 中的任务状态包括就绪态 阻塞态和运行态 当任务从就绪态切换到运行态时 xff0c 任务开始执行 xff
  • XGBOD:用无监督表示学习改进有监督离群点检测

    XGBOD Improving Supervised Outlier Detection with Unsupervised Representation Learning 论文链接 xff1a https www andrew cmu e
  • 小觅S系列相机运行vins-mono(轨迹飘飞解决版)

    小觅S系列相机运行vins mono xff08 轨迹飘飞解决版 xff09 1 SDK驱动2 获得相机标定数据3 下载MYNT EYE VINS Sample4 运行 前期准备 xff1a 安装并成功运行VINS MONO 1 SDK驱动
  • 嵌入式第0部分:嵌入式工程师完全学习指南

    一 什么是嵌入式 xff08 一 xff09 定义 xff1a 传统定义 xff08 狭义嵌入式 xff09 xff1a 嵌入式系统是以应用为中心 xff0c 以计算机技术为基础 xff0c 并且软硬件课裁剪 xff0c 适用于应用系统对功