{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

什么是嵌入式系统?

weakishweakish 回答0 收藏1
收藏问题

10条回答

Nino

Nino

回答于2022-06-28 12:00

嵌入式系统是一个计算机系统,在一个较大的机械或电气系统中具有专用功能,通常具有实时计算约束,作为一个完整的设备的一部分被嵌入,通常包括硬件和机械部件。嵌入式系统控制着今天常用的许多设备, 98%的微处理器都是作为嵌入式系统的组件制造的。

典型的嵌入式计算机与通用相对应的计算机属性的例子是低功耗,小尺寸,稳定的操作范围和低单位成本。这是以有限的处理资源为代价的,这使得编程和交互更加困难。然而,通过在硬件之上构建智能机制,利用可能存在的传感器和嵌入式单元网络的存在,既可以优化管理单元和网络级别的可用资源,又可以提供增强的功能,远远超越那些可用。例如,可以设计智能技术来管理嵌入式系统的功耗。 数字信号处理器(DSP)是一种常见的标准专用处理器。

由于嵌入式系统专用于特定任务,设计工程师可以对其进行优化,以减少产品的尺寸和成本,并提高可靠性和性能。一些嵌入式系统是大规模生产的,受益于规模经济。

嵌入式系统的范围从便携式设备(如数字手表和MP3播放器)到大型固定安装(如交通信号灯,工厂控制器以及复杂系统,如混合动力车辆,MRI和航空电子设备)。复杂性从单个微控制器芯片的低端到具有多个单元的高端设备,外围设备和网络安装在大型机箱或机箱内。

了解更多硅谷前沿深度讯息请看 硅发布 微信公众号

评论0 赞同0
  •  加载中...
inapt

inapt

回答于2022-06-28 12:00

所谓嵌入式系统,指的是为特定应用而设计的专用计算机系统,嵌入式系统由硬件+软件构成。我们分别从硬件和软件这两个方面来讲述。


一、我们来看硬件部分:

我们都有使用个人桌面电脑的经历,而个人电脑系统属于通用计算机系统。那嵌入式系统跟通用系统在硬件设计上有什么区别呢?

1. 通用计算机系统

这里所讲的通用计算机系统,主要指的是intel x86系统。这种系统基本由intel cpu + 南北桥芯片组成。cpu通过南桥连接到低速外设,比如:实时时钟、usb、以太网、wifi、蓝牙等;通过北桥连接到高速外设,比如:内存,显卡等。

这样设计的通用系统性能非常强大。比如,我们可以在个人电脑上办公、运行大型软件、玩游戏、运行photoshop等。

我们在使用个人PC的时候也从来不关注能耗的问题,反正我们玩电脑都要插电源的。

以上是通用系统(以个人电脑为例)的硬件架构和使用场景。

2. 嵌入式系统

跟通用计算机系统不同,嵌入式系统使用所谓的soc实现硬件的最大集成。具体来讲就是把cpu和外设都封装在同一个芯片上,也叫soc,或者叫片上系统。

这样设计有什么好处呢?最大的好处就是减小系统尺寸、节能省电

尺寸问题好理解,因为很多嵌入式设备是手持的,甚至是可穿戴的。

为什么要考虑节能省电的问题呢?因为嵌入式系统一般都无法做到像个人pc一样持续供电。举个例子:大疆的无人机,就是一个典型的嵌入式系统,你能想象让它拖着一根电源线上天吗?显然不可能。所以,无人机系统必须要考虑电能的供给和消耗的问题。供给靠电池,消耗就是系统的事情了,所以低功耗的硬件才能工作更长的时间,而只有嵌入式专用系统才能做到低功耗。能耗和性能是嵌入式系统设计者需要不断优化和改善的两个指标

另外有些外设和接口也是传统的通用系统所不支持的,所以就需要嵌入式系统来做定制了。


二、再来看软件部分:

嵌入式系统一般采用linux系统(也有wince,vxworks,ucos等),开发语言一般用c语言。因为c语言的效率高、性能优,这样可以最大程度的节省能耗、提升性能。我们在PC上做开发的时候可以选择java,c#等开发语言,这些语言在开发上给我们提供了很大的便利性,但是代码的执行效率并不高。但是,在嵌入式系统上开发应用软件需要考虑的最大的因素就是性能,所以最佳的开发语言是c语言。这也是嵌入式系统和通用系统在软件开发上的的差异。


以上,我从硬件和软件这两个方面解释了什么是嵌入式系统,希望对你有所帮助!

评论0 赞同0
  •  加载中...
wudengzan

wudengzan

回答于2022-06-28 12:00



嵌入式分为嵌入式硬件和嵌入式软件。所谓嵌入式,就是指软件在特定的嵌入式硬件开发完成后,最后被固化在此硬件平台中,当硬件启动后,自动执行软件,完成特定的功能。

嵌入式系统启动后,一般是没有人机交互界面的,但会留有调试接口,如RS232串口、网口,可以通过终端工具检测软件运行状态、下发控制指令等。

硬件工程师



嵌入式硬件工程师,主要掌握的是基于CPU设计计算主板的电路知识。所以模电、数电、EDA知识是这类工程师的基本功!除此之外,熟悉常用通信协议和总线,如CAN、SPI、I2C、PCIe、DDR,也是硬件工程师应该掌握的技能。

软件工程师

嵌入式软件工程师,编程语言、数据结构是其基本功,除此之外,还应该熟练掌握以下技能:

  1. 掌握多线程、多进程编程技术,理解各种线程同步机制,如临界保护、同步信号。知晓进程间通信技术,如共享内存、管道、套接字编程技术;
  2. 了解常见外设作用,如CPU、DDR、SDRAM、FLASH、串口、网口等;
  3. 了解常见总线或通信协议概念,如数据总线、地址总线、CAN总线、I2C总线、SPI总线等;
  4. 理解基于寄存器编程概念,也就是硬件驱动程序实现原理。无论什么硬件,不管函数接口如何封装,其内部一定是对硬件各个寄存器的操作;
嵌入式编程由于受限于硬件资源的大小,所以在内存使用上并不像桌面软件那么灵活。比如,在windows下编程,函数中的数组变量可以分配很大的内存,这是因为其栈空间默认很大。但是在嵌入式环境中,最好把这些内存大的变量定义到外部存储硬件中,如SDRAM或DDR,这是因为嵌入式处理器的片内RAM都很小!

从这里可以看出,嵌入式软件工程师与其他类型软件工程师有一个很大的不同点,就是需要掌握很多硬件知识,这是由嵌入式开发的特点来决定的

评论0 赞同0
  •  加载中...
SQC

SQC

回答于2022-06-28 12:00

【医械测试杨先生】来回答什么是嵌入式系统:嵌入式系统是依据不同角度有不同定义的一种系统,往下看:

曾在知乎上看到一篇20万赞文章,回答的是厉害的人是怎么分析问题的,我觉得对我们会特别有用,其中提到当你讲了一大段话后问大家:大家有没有问题?大家可能会沉默或者回答没有问题,这时你千万不要以为大家都听懂了,更大的可能是:他不知道什么是真正的听懂以及为什么要听你说这么一大段话,他没有一个期望值;不知道自己听懂了什么,没听懂什么,处在游离状态找不到自己的现状…因此,不是他完全听懂了,没有问题,而是不知道自己有没有听懂,不知道什么算是完全听懂,因而找不到这个落差在哪里,没有发现落差也就没有发现问题,所以就沉默或者回答:没有问题。

那么仔细思考下,我觉得这是很多人都会有的一种现象,既然了解了,我们可以避免这种现象发生,至少我自己应该想着如何去改变,基于此,对于这个问题:我觉得可以加深一步提问,什么是嵌入式系统?嵌入式系统有哪些特点?嵌入式系统有哪些应用?如何学习嵌入式系统? 下面一一展开。

什么是嵌入式系统?

从技术的角度定义:以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。简而言之,是含有处理器的专用软硬件系统,具有自主的信息处理能力( 信息装备)。

从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使 其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。

英国电机工程师协会的定义– Devices used to control, monitor, or assist theoperation of equipment, machinery or plants(用于控制、监视或者辅助操作机器和设备的装置)。

微机学会的定义– 嵌入式系统是以嵌入式应用为目的的计算机系统,可分为系统级、 模块级、 芯片级。

系统级:各种类型的工控机 以标准总线互联(背板结构)的工控机: CPCI、 PCI-ISA、 VME 等。

模块级:各种类型的带CPU的模块,嵌入式CPU模块: PC104模块、 Biscuit板。

芯片级:各种以微控制器、 DSP、嵌入式微处理器为核心的产品。

嵌入式系统有那些特点?

主要有以下几个特点:

嵌入专用:嵌入式处理器只嵌入在针对特定应用设计的系统中;

综合性强:嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物;

设计高效:嵌入式系统的硬件和软件都必须高效率的设计,量体裁衣、取出冗余;

程序固化:软件一般都固化在存储器芯片或处理器本身中,提高了系统的执行速度和可靠性;

需要独立的开发系统:嵌入式系统本身不具备开发能力,必须有一套开发工具和环境才能进行开发;

生命周期长:嵌入式系统和具体应用结合在一起,其升级换代一般与具体产品同步进行,因此具有较长的生命周期

其他如可靠性高、成本低、功耗低等。

嵌入式系统有哪些应用?

应用十分广泛,例如坦克、导弹、飞机、军舰、雷达、DVD机、电视机、微波炉、洗衣机、电冰箱、热水器、手机、 MP3播放器、数码相机、数码摄像机、机顶盒、键盘、鼠标、闪存盘、 CD-ROM、交换机、路由器,几乎我们生活中用到的方方面面都有嵌入式系统的“嵌入”。

如何学习嵌入式系统?

嵌入式系统看似可以简单分为硬件与软件,然而其中却包含着异常庞大的知识量,也因此令许多新手望而却步,学习嵌入式系统大致分为三个阶段:基础篇、进阶篇、大咖篇。

基础篇:

此阶段主要是前期的入门过程,一定要打好基础,主要学习一下几个方面

(1)电路知识

首先要学习电路、模电、数电,认识电阻、电容、电感等基础器件,放大电路、集成运放、时序电路基本电路能看懂,不然看电路图一定是云里雾里,也就无法进行后续的工作。硬件产品的设计实现,包括器件选型、原理图和PCB设计、电路调试,都需要过硬的电路基础。

(2)C语言

C语言嵌入式开发中最重要的编程语言,掌握本的数据类型、数组、指针、结构体,链表、文件操作等都要会,掌握基本语法和语句,保证自己会写程序的同时也能看懂别人写的程序。

(3)单片机

单片机入门相对简单,通过单片机的学习可以熟悉单片机的硬件结构,包括I/O口、AD转换、通信(串口、并口、I2C、CAN、USB、以太网、ZigBee技术等)、显示(LED、LCD等)、控制(PWM等控制技术)、数据处理(图形、图像、语音、视频等的处理或识别)等,学好单片机可以为采用嵌入式系统奠定良好的基础。

(4)Linux基础

Linux的源码和架构都是开放的,在嵌入式系统中应用尤为广泛,学习Linux对于系统的开发会有很大的帮助。详细了解Linux下的目录结构、基本命令、编辑器VI、编译器GCC、调试器GDB和 Make 项目管理工具,Shell Makefile脚本编写等知识,以及嵌入式开发环境的搭建。

进阶篇

经过第一个阶段的学习,你已经可以进行嵌入式开发工作了,但是要进阶依旧还有很多知识要学,而这个阶段也将是第一个分水岭,使得优秀的嵌入式工程师得以脱颖而出。此阶段虽然只有三项,但涉及的知识非常广,要想学好需要花费大量的精力。

1.Linux编程

系统编程可以直接跟内核及核心系统程序库对话,深入了解Linux内核。掌握Linux系统编程主要提升对Linux应用开发的理解和代码调试的能力。由于网络应用开发越来越广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,可以全面了解Linux网络应用程序开发。

2数据结构与算法

数据结构及算法在嵌入式底层驱动、通信协议及各种引擎开发中得到了广泛的应用,语言编译要使用栈、散列表以及语法树;操作系统中用队列、存储管理表及目录树等;数据库系统运用线型表、多链表及索引表进行数据管理等等,对其掌握的好坏直接影响程序的效率、简洁及健壮性。

3.QT、DSP、FPGA

Linux没有自己界面,学习QT编程可以创建艺术级的图形用户界面所需的所有功能,从而更好的实现人机交互控制。而如今用户对于图形图像的要求也越来越高,这就需要DSP、FPGA技术来设计开发更好的嵌入式视觉系统。

大咖篇

学习了前两个阶段的知识,你已经可以胜任大部分嵌入式工作了,但是距离大咖仍有一定的差距,其实已经到了第二个分水岭。这部分更多涉及系统层面,没有全方位的知识将会很难下手。

1操作系统平台开发

除了Linux外,嵌入式操作系统还有ARM、WINCE、uC/OS II、Vxworks、uClinux等,不同的系统有着不同的使用环境,你需要学习掌握系统的各个模块,为底层平台搭建做好准备。熟悉各个操作系统的特点以及系统的内核移植,确保操作系统能在某个微处理器或微控制器上运行。随着手机智能硬件的快速兴起,Android操作系统开发也越来越重要。

2驱动开发

驱动程序设计是嵌入式Linux开发工作中非常重要的一部分。不仅要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。还要具备ARM硬件接口的基础知识,熟悉ARM Cortex处理器各资源、掌握Linux设备驱动原理框架,以及工程中常见Linux高级字符设备、块设备、网络设备、USB设备的驱动开发。

当你学完以上所有的时候,那么恭喜你,可以说你已经是一个嵌入式系统的大咖了。

但学如逆水行舟,不进则退!活到老,学到老!学无止境...切记大咖也不能止步不前哦!

所以问一句,你听懂了吗?

觉得不错的话点个赞然后关注一下,关注评论交流@

评论0 赞同0
  •  加载中...
gclove

gclove

回答于2022-06-28 12:00

谈到什么是嵌入式系统,那就要从什么是最小系统开始说起。

何为最小系统?

包含一个芯片的复位,电源,时钟。也就是说,一个程序能够跑起来的所需要的最小基本设施。

对于嵌入式系统,就目前来说,其实有很多种不同的理解。拿安卓应用来说,有人说这是嵌入式开发。但从我个人10年的嵌入式开发经验来看。对于嵌入式系统的理解是,非运行在PC架构上的系统都可以称之为嵌入式系统。

形象点可以说,单片机,嵌入式Linux,Freeos,ucos,安卓等,这些系统都可以称之为嵌入式系统。

评论0 赞同0
  •  加载中...
2i18ns

2i18ns

回答于2022-06-28 12:00

嵌入式系统的定义很多,这也是困扰嵌入式系统学习的一个因素。多年和嵌入式设备及开发人员的接触,提出了嵌入式系统的简单定义:嵌入式系统是嵌入式计算机系统的简称,这个定义突出嵌入式计算机系统和普通计算机系统的共性。现在随着边缘计算的越来越火热,嵌入式开发也会逐渐成为新型科技市场的热门领域,虽然这是一个几十年就存在的技术和岗位。

如果题主真想入坑想学好嵌入式我查询了一些资料供您参考一下,注定是一场攻坚之旅,成为一位合格厉害的嵌入式开发工程师需要逐级掌握以下这些开发知识(升级之路):

第一阶段:打基础阶段即初级工程师或工程师助理

  1.电路知识 首先你要学习电路、模电,认识电阻、电容、三极管,基础器件,放大电路、集成运放、时序电路基本电路能看懂,不然看电路图一定是云里雾里,也就无法进行后续的工作。硬件产品的设计实现,包括器件选型、原理图和PCB设计都需要过硬的电路基础。

  2.C语言

  C语言是嵌入式开发中最重要的编程语言,要对这门语言有深入的理解,毕竟不仅仅要会写程序,看懂他人程序也很重要。最基本的数据类型、数组、指针、结构体,链表、文件操作等都要会,掌握基本语法和语句,不然你要能区分指针数组与数组指针吗?

  3.单片机

单片机入门相对简单,通过单片机的学习可以熟悉单片机的硬件结构,包括I/O口、AD转换、通信(串口、并口、I2C、CAN、USB、以太网、ZigBee技术等)、显示(LED、LCD等)、控制(PWM等控制技术)、数据处理等,学好单片机可以为采用嵌入式系统奠定良好的基础。

  4Linux基础

  Linux的源码和架构都是开放的,在嵌入式系统中应用尤为广泛,学习Linux对于系统的开发会有很大的帮助。详细了解Linux下的目录结构、基本命令、编辑器、编译器、调试器,Shell Makefile脚本编写等知识,以及嵌入式开发环境的搭建。

第二阶段:相当于中级工程师需要掌握的技术

  1.Linux编程

  系统编程可以直接跟内核及核心系统程序库对话,深入了解Linux内核。掌握Linux系统编程主要提升对Linux应用开发的理解和代码调试的能力。由于网络应用开发越来越广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,可以全面了解Linux网络应用程序开发。

  2数据结构与算法

数据结构及算法在嵌入式底层驱动、通信协议及各种引擎开发中得到了广泛的应用,语言编译要使用栈、散列表以及语法树;操作系统中用队列、存储管理表及目录树等;数据库系统运用线型表、多链表及索引表进行数据管理等等,对其掌握的好坏直接影响程序的效率、简洁及健壮性。

  3.QT、DSP、FPGA

  Linux没有自己界面,学习QT编程可以创建艺术级的图形用户界面所需的所有功能,从而更好的实现人机交互控制。

第三阶段:高级工程师

  学习了前两个阶段的知识,你已经可以胜任大部分嵌入式工作了,但是距离大咖仍有一定的差距,其实已经到了第二个分水岭。这部分更多涉及系统层面,没有全方位的知识将会很难下手。

  1操作系统平台开发

除了Linux外,嵌入式操作系统还有ARM、WINCE、uClinux等,不同的系统有着不同的使用环境,你需要学习掌握系统的各个模块,为底层平台搭建做好准备

  2驱动开发

驱动程序设计是嵌入式Linux开发工作中非常重要的一部分。不仅要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,熟悉ARM Cortex处理器各资源、掌握Linux设备驱动原理框架,以及工程中常见Linux高级字符设备、块设备、网络设备、USB设备的驱动开发。

评论0 赞同0
  •  加载中...
tain335

tain335

回答于2022-06-28 12:00

就是单片机控制系统

评论0 赞同0
  •  加载中...
afishhhhh

afishhhhh

回答于2022-06-28 12:00



嵌入式系统是指由硬件和软件组成并且能够移植到硬件设备的操作系统。而相比较于普通的PC操作系统,嵌入式操作系统不能存储大容量的内存和程序。所以嵌入式操作系统的移植必须要进行裁剪工作才能够成功在嵌入式设备进行运作,目前嵌入式操作系统已经广泛运用在生活中的各种各样的设备上。如智能电表、蓝牙手环、车载系统、机器人、军事设备等等。







而嵌入式系统大致由三大部分组成硬件、驱动、软件。首先来说下硬件:嵌入式的硬件和普通的电脑硬件没有太大区别,也是由CPU、存储器、I/O接口、GPU(有些系统没有图形设备)、串口、网口等部分组成。但是嵌入式操作系统在速度、功耗、存储等方面和普通的PC设备有较大的区别,由于嵌入式操作系统基本上都是运用在中小型设备上。所以这类操作系统不可能采用慢的存储介质、而是采用高速、快速的存储设备,比方说NAND FLASH、EPROM等。





接着我们来说下驱动层:嵌入式的驱动层一般所指的是操作系统和硬件的桥梁,操作系统必须要通过这个桥梁才能够正常控制硬件。而驱动层一般提供一整套完成的API程序,让对应的开发者编写相对应的驱动程序使其硬件能够正常工作。在嵌入式操作系统中,驱动层包含了:Flash驱动、串口驱动、网口驱动、键盘驱动、RTC驱动、DMA驱动等等。




最后是嵌入式操作系统的应用层:嵌入式的应用层基本上属于整个嵌入式操作系统的最上层,换言之应用层的程序基本上不会和硬件层、驱动层打交道。而是针对某个特定的应用场景和应用领域完成这些应用场景的需求,而应用层通常包括:多线程、多进程、网络编程、数据库、音视频编解码等等。


而各位小伙伴们觉得,嵌入式系统还运用在哪些方面呢?


看完别忘了点个关注哟୧[ * ಡ ▽ ಡ * ]୨,您的支持是对M君最大的鼓励。

评论0 赞同0
  •  加载中...
jokester

jokester

回答于2022-06-28 12:00


什么是嵌入式


首先,我们来看看什么是嵌入式。

嵌入式,一般是指嵌入式系统,英文叫作:embedded system。嵌入式开发,其实就是对嵌入式系统的开发。

IEEE(美国电气和电子工程师协会)对嵌入式系统的定义是:“用于控制、监视或者辅助操作机器和设备的装置”。

国内学术界的定义更为具体一些,也更容易理解:

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

以应用为中心,说明嵌入式系统是有明确实际用途的。以计算机技术为基础,说明它其实就是一种特殊的计算机。软硬件可裁剪,说明它有很强的灵活性和可定制能力。

专用计算机系统,“专用”所对应的,就是“通用”。我们常用的个人PC、笔记本电脑、数据中心服务器,可以用于多种用途,就是“通用计算机系统”。

嵌入式系统究竟具体应用于哪些“专用”方向呢?

举例如下:

  • 个人通信与娱乐系统:手机、数码相机、音乐播放器、可穿戴电子产品、PSP游戏机
  • 家电类产品:数字电视、扫地机器人、智能家电
  • 办公自动化:打印机,复印机、传真机
  • 医疗电子类产品:生化分析仪、血液分析仪、CT
  • 网络通信类产品:通信类交换设备、网络设备 (交换机、路由器、网络安全)
  • 汽车电子类产品:引擎控制、安全系统、汽车导航与娱乐系统
  • 工业控制类产品:工控机、交互式终端 (POS、ATM)、安全监控、数据采集与传输、仪器仪表
  • 军事及航天类产品:无人机、雷达、作战机器人

嵌入式系统的应用领域

上述这些领域,都使用了嵌入式系统。这还只是冰山一角。

可以说,嵌入式系统完完全全地包围了我们,时刻影响着我们的工作和生活。

嵌入式系统,既然是一个计算机系统,那么肯定离不开硬件和软件。

一个嵌入式系统的典型架构如下:


注意,最重要的就是嵌入式操作系统和嵌入式微处理器。

从硬件角度来看,嵌入式系统就是以处理器(CPU)为核心,依靠总线(Bus)进行连接的多模块系统:


和个人PC是一样的方式

下面这张图,就是一个嵌入式系统的实物样例:



中间偏左上角,S3C2440,是CPU,中间是RAM,然后还有ROM、网卡、串口、电源等等。可以看出,嵌入式系统麻雀虽小,五脏俱全。


什么是嵌入式系统?

嵌入式系统是是一个功能完备、几乎不依赖其他外部装置就可以独立运行的系统。该系统包含软件和硬件,以应用为中心,以计算机为基础,能够根据需求灵活选取软硬件模块的专业计算机系统。

其中系统的软件部分包含软件运行环境以及操作系统,硬件部分包含信号处理器、存储器以及通信模块等多方面内容。与传统的计算机系统相比,嵌入式系统与之相差很大,它并不能实现大容量的存储功能,软件部分则以API接口为平台核心。

嵌入式系统具备定制性强、体积小型、实时性好、可裁剪性好、可靠性高、功耗低等优势。由于嵌入式系统是为特定用户而专门定制的,所以一般嵌入式系统通常都具备专用性。并且嵌入式系统的集成性非常高,所以它的功耗、身材都非常小,可靠性非常高。

嵌入式系统主要功能是以CPU为核心,而在不同的系统中,嵌入的形式和程序是不同的。根据嵌入式系统与计算机的连接的密切程度,将嵌入形式分为全嵌入形式和半嵌入形式。全嵌入形式可以不依赖计算机系统,即可多带带工作,如手机、音乐播放器等设备都是此类型设备。而半嵌入式方式则必须与计算机相结合,才可以发挥作用。

当前嵌入式系统的应用场景十分广泛,包含工业生产、日常生活、航空航天等多个领域,并且随着计算机和制造工艺的发展,嵌入式系统将以最大限度的协同软硬件能力,优化设计方案,逐渐拓展至其他领域。

最后,希望大家点个赞给个关注吧,日常分享干货知识。

评论0 赞同0
  •  加载中...
soasme

soasme

回答于2022-06-28 12:00

嵌入式就是“嵌”在硬件里面的程序,有些公司叫它底层固件。

举个栗子????,我们每天用的手机,就是一个非常典型并且复杂的嵌入式系统。首先是硬件部分,它有一个核心CPU,这是嵌入式设备的大脑。那还有一些连接到CPU上的外设,比如屏幕,扬声器,摄像头等等,这些是嵌入式设备的四肢。那嵌入式程序就是要烧录进CPU的程序,这段程序首先驱动屏幕等外部设备,使他们能够工作。第二决定整个设备完成哪些工作。再举个更简单的????,比如一个智能温度计,它有这样的功能,监测环境温度,然后每隔一个小时进行一次语音播报。那这个产品主要会有一个CPU,一个温度传感器,一个扬声器。嵌入式程序就可以控制温度传感器监测温度,然后设置一个定时器,每隔一个小时再驱动扬声器进行一次语音播报。

嵌入式要学什么?

1,基本硬件电路。

一般大公司硬件和嵌入式软件是分开的岗位,而小公司硬件和嵌入式是合并在一起的。就单纯嵌入式开发而言,至少得能看得懂电路图。知道硬件电路部分的连接和基本原理。单纯嵌入式可以不会硬件开发,但至少要能看得懂,否则CPU使用哪个引脚去控制都不懂得话,就完全没办法进行嵌入式开发。

2,C语言或者C++语言

一般而言嵌入式开发都使用这两种语言。一方面是灵活性高,执行快。另一方面是很多MCU的厂商对于C语言的支持会比较好,有相当多的集成库可以使用。最快的是汇编语言,但是这个学习难度非常高,在现在商业环境中已经很少有精通的工程师了。但是不可否认会汇编的都是大牛。当然其他语言也能进行嵌入式开发,但是很多会有支持问题。

3,英语。很多讲嵌入式的不会讲到这个。但是英语在嵌入式开发中很重要。因为现在主流的嵌入式芯片基本都是国外的。做嵌入式开发难免要参考数据手册,用户参考手册,应用信息等资料,而这些基本都是英文的,很少有中文的。

以上三点学好了基本搞嵌入式没什么问题。工业中很多嵌入式系统比较简单,用的8位MCU,程序也很简单。稍微复杂一点的可能用个32位的芯片。再复杂一点的就类似手机平板这种,必须得上系统了。安卓就是一个嵌入式系统。一些简单的应用不需要完成安卓这么复杂的功能,那么一般嵌入式工程师会自己写一个状态机,也就是一个很简单的系统。嵌入式入门还算简单,但是要精通比较困难。如果想学的话,我建议从STM32开始,一方面应用非常广泛,另一方面资料也多网上课程也多,价格还不贵。

评论0 赞同0
  •  加载中...

相关问题

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<