打印

什么是嵌入式,嵌入式应用于哪里?有那些方向?

[复制链接]
318|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindoug|  楼主 | 2020-4-27 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

原答案是两年前做毕业设计的时候偶然看到这个所写下的答案,毕业两年,对于计算机系统的理解又深了一些,过来补充一点内容。
什么是嵌入式?
一、区分存储器
首先我们要区分 内存、RAM、ROM、硬盘 这四者的区别,由于安卓系统没有严格选取名词,导致这些名词被赋予了新的含义。在这里,我们使用PC下的语境重新理解这四个词。
内存:英文是 Memory,即**的意思,汉语翻译成内存是有道理的,这个词分开就是两个字,内和 存,内就是内部的意思,这个内部是相对于CPU而言的,存就是存储。内存有什么特点呢?CPU可以直接访问,就像人类的**,直接就能想到。
RAM:随机访问内存,可以自由读写的内存,靠电压保存写入的数据,一断电所有信息都消失了。这个概念和PC上的内存基本上是一样的
ROM:只读内存,顾名思义,是只能够读取的内存,无法往里面写入数据。不写入,怎么读取呢?ROM是需要通过特殊的途径写入数据的,由于是写死在硬件上面的,所以又称之为烧录。安卓手机的ROM表示的PC中的硬盘。
二、编程平台
面向软件编程:代码基于操作系统或中间件编写,无需考虑底层硬件的具体细节。例如,编写一个基于Windows系统的程序,我们无需考虑电脑用的是什么硬件,无论intel还是amd,只要运行的是Windows系统,编写的程序就能正常运行。这种编程模式下,无需关注用的哪个内存位置,跑的是哪条CPU指令,操作系统或中间件会自动为你处理好这些与应用业务无关的细节。
面向硬件编程:代码基于硬件平台编写,需要考虑硬件的细节。例如,基于开发板编写洗衣机控制程序,要考虑马达插在哪个针上,使用哪条指令控制这个针的通电情况,这些每个芯片配合不同的开发板都是不一样的,需要对着开发板厂商的编程手册编写代码。写完的代码要用专用的设备写入ROM中(俗称“烧录”)。这种编程模式下,需要选择适当的指令,合理使用存储器。
综合比较:
1、面向软件编程通常会有较为复杂的业务逻辑,如各类的信息管理系统、电子商务系统,有一大堆的规则等着你;
2、面向硬件编程业务逻辑比较简单,如各种智能家居、安防设备,主要是开关、定时、预警这类功能;

----------------------- 原回答分割线 ---------------------------
先说一下“系统”这个词:搞清楚这几个概念,可以避免一些误解。
  • 系统:由多个零部件通过一定的规则组合而成的一个“整体”;(不少同学一听到系统这个,一下子就想到了“Windows”、“重装系统”这些东西,这种想法在计算机领域要稍微调整一下)
  • 计算机系统:简单的说就是一台“计算机”,由“硬件系统”和“软件系统”两个系统组合而成,这里的计算机的范围比较广,从常见的PC、路由器、手机到电视机顶盒、LED广告都属于计算机的范畴,千万别把计算机局限在你的电脑上;(同样,这里的系统也不是指 Windows系统)
  • 硬件系统:最常见的,由cpu、内存、硬盘、主板、鼠标、键盘、显示器等等,组成的这么一个看得见,摸得着的计算机;(这里举PC的例子是为了好理解,如同上面所写的,硬件系统也不仅局限于PC)
  • 软件系统:计算机上安装的所有软件所构成的一个整体,显然,软件系统是建立在硬件系统的基础之上;
  • 操作系统:负责管理计算机硬件系统和软件系统的一个软件;(这个才是我们日常生活中说的“Windows系统”、“Linux系统”、“重装系统”);

有了上面那几个概念之后,可以将“嵌入式”进行归类,按我的理解,“嵌入式”可以算是“计算机系统”下面的一个分支,那么比较规范的说法应该是“嵌入式计算机系统”。
以下,通过几个问题来描述嵌入式。
那么,为什么叫“嵌入”呢?
  • 嵌入的原文是“Embeded”,百度词典的翻译是“植入的,深入的,内含的”,这个词描述的是“硬件系统”和“软件系统”之间的关系,所以,“嵌入式”是指“软件系统”与“硬件系统”的关系非常紧密的一类“计算机系统”。

这个紧密到什么程度呢?
  • 例如,洗衣机、电饭煲、空调里面的控制程序,几乎就是不可替换的,控制程序都是针对这个硬件平台编写的,这个程序要是出什么问题,几乎是没有可替换的程序的(当然了,你要针对这个硬件平台重新写一个就另当别论了),还有就是,除了这个硬件平台,这个软件基本没有用武之地。(不要以为你家的电饭煲不是计算机,理论上很多家电都是计算机)

嵌入式都有哪些特点?
  • 目标单一,只能做一两件事情,例如,汽车的点火器,只能打火和熄火;(不像PC这么有通用性,能上QQ、PS、玩各种各样的游戏)
  • 编程针对特定的硬件平台,所以,必须要有相应的硬件编程知识;
  • 硬件资源较少,一般内存也就100M左右,甚至更少,没有硬盘,一般使用flash闪存;
  • 出厂后软件无法更改,用户无法选择额外的应用程序;

安卓开发算不算嵌入式?
  • 不算,也算,分开来看:
    • 用 Java 写 App,不能算嵌入式;(可以安装在多种设备上)
    • 用 C、汇编写内核、驱动,算嵌入式;(只能安装在特定平台的设备上)



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

468

主题

472

帖子

19

粉丝