嵌入式基本概念

184 阅读9分钟

1. ARM概念区分与解析

stm32: 即ST公司开发的32位MCU(Microcontroller Unit,微控制单元,也就是我们常说的单片机)。 ARM7、ARM9、ARM11: 都是内核的名称,由ARM公司设计的内核。ARM既是一家公司,也是一类处理器核心的统称。他们使用了不同的架构,ARM7使用ARMv4架构,ARM7使用ARMv5架构,ARM11使用ARMv6架构。ARM7没有MMU单元也就没有办法为多用户多进程分配进程自己的地址空间,所以ARM7无法运行Linux这种多用户多进程操作系统,而ARM9、ARM11带有MMU内存管理单元。 Cortex、M4、M7: 也是内核名称,只不过在ARMv7架构之后都以Cortex来命名。M4、M7是属于Cortex-M系列的内核,此外还有M0,他们的主频和功耗不同。Cortex目前有三大系列,Cortex-M系列主要用于单片机,也就是微控制器,偏向于控制领域;Cortex-A系列主要用于微处理器,面向高端的操作系统,如安卓,数字电视等;Cortex-R系列用于实时系统,比如汽车制动等。 MCU与CPU: MCU是把CPU的频率与规格进行缩减,并将内存、计数器、A/D、DMA、USRT等整合在一个芯片上,形成的芯片级计算机。CPU是中央处理单元,他是计算机系统的运算和控制核心,是数据处理和程序运行的执行单元。MCU一般是集成了CPU、ROM、RAM、计算器/定时器、以及各种IO接口的微型计算机。 说到这里不得不提一下SOC和MPU。 MPU: 微处理器,可以理解为功能更强大的CPU,但它不是控制器。 SOC: 片上系统,在单个芯片上集成一个完整的计算机系统,属于系统级芯片,功能要比MCU强大。 ARMv4、ARMv5、ARMv6、ARMv7: ARM指令集架构,指令集是处理器能够识别并执行的指令集合,每一个指令可处理一个操作,并对应了一条或几条汇编指令。ARM是基于精简指令集RISC的,指令格式和长度固定,且大多数指令可在一个周期内执行完。 CMSIS: Cortex Microcontroller Software Tnterface Standard, ARM微控制器软件接口标准。ARM公司只提供芯片标准,负责芯片内核的架构设计。而具体由TI、ST等公司根据ARM内核标准来设计芯片。例如不同公司的M4芯片,他们只是存储器、片上外设IO等不同,但他们的内核都是一样的。

2. 驱动

驱动的官方解释

首先,用官方一些的话来描述一下驱动的定义:

驱动,计算机软件术语,是指驱动计算机里软件的程序。驱动程序全称设备驱动程序,是添加到操作系统中的特殊程序,其中包含有关硬件设备的信息。此信息能够使计算机与相应的设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动,计算机中的硬件就无法工作。不同的操作系统,硬件驱动程序也不相同。(摘自百度) 驱动的个人理解

其实,驱动程序就是我们添加到操作系统中的一块代码,这段代码包含了和硬件设备有关的一些信息,通过这些信息告诉计算机如何和硬件设备进行通信。总的来说,驱动是属于硬件的一部分,当我们需要安装一个原本不属于自己电脑的硬件时,我们的计算机并不知道这个硬件是什么东西,或者不知道如何和这个硬件进行交互。这时,操作系统就会要求我们安装硬件的相关驱动,通过驱动程序,计算机和我们安装的硬件就可以连通。举个例子,驱动就像一个中间商,计算机和硬件就是交易双方,只有通过中间商交易双方才知道对方出什么价格,要交易什么物品,在哪交易等信息。驱动就扮演这么一个沟通的角色,他把硬件的信息告诉计算机,并把计算机的指令传达给硬件,这样硬件就可以在我们的计算机上工作了。比如我们经常使用的USB转串口驱动,有了这个驱动,当硬件设备连接在计算机USB接口时就可以被计算机识别为串口设备,并给这个硬件设备分配串口号。 我们通过右击电脑左下角开始标志,点击设备管理器可以看到电脑连接的各种设备

image.png 打开后显示如下

image.png 如果我们通过电脑USB接入一个设备,但是在端口处没有显示,可能就是没有串口驱动,我们需要安装一个串口驱动程序才能识别到设备。

总结

总结来说,驱动就是应用层和硬件之间的一个桥梁,通过驱动层接口可以实现对硬件的操作。

驱动本质上是软件代码,其主要作用是计算机系统与硬件设备之间完成数据传送的功能,只有借助驱动程序,两者才能通信并完成特定的功能。如果一个硬件设备没有驱动程序,只有操作系统是不能发挥特有功效的,也就是说驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,即将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备,从而实现两者的无缝连接。(摘自百度)

3. 显示器

(1)嵌入式中常用显示器

**CRT显示器:**Cathode Ray Tube,阴极射线管显示器。现在已经很少使用,而是使用功耗更低、成本更低的轻薄的液晶显示器。(基本淘汰)

**LCD显示器:**Liquid Crystal Display,液晶显示器。液晶是一种介于固体和液体之间的有机化合物,其本身不发光,依靠背光灯来提供光源。他的工作原理是,在电场的作用下,利用液晶分子的排列方向发生变化,使外光源透光率改变(电光效应),然后控制红蓝绿光的强度来混合出各种色彩。LCD液晶显示器是当前的主流显示器,广泛用于电视机、计算机、手机、智能手环等嵌入式设备。

**LED点阵显示器:**Light Emitting Diode,发光二极管。由无数个半导体发光二极管像素点均匀排列组成。LED点阵显示器有单色和彩色之分,彩色LED点阵显示器的每一个像素由红、绿、蓝三种颜色的LED灯组成。LED点阵显示器的每一个像素都是LED自发光的(液晶显示屏需要外部光源)。目前应用主要是户外(宾馆、医院、银行等)广告牌、出租公交信息牌等。

**OLED显示器:**Organic Light Emitting Diode,像素由有机电自发光二极管组成的显示屏。(未来主流)

(2)显示器的参数

**像素:**组成一个显示图像的最基本要素单元,也就是成像的最小点(不可再分割)。

**分辨率:**嵌入式设备一般以行列像素来表示分辨率,比如屏幕分辨率1200x800表示屏幕一行有1200个像素,一列有800个像素。一般来说,屏幕分辨率越高,所包含的像素点就越多,所能显示的图像就越清晰。

**色彩深度:**即色彩位数,表示显示器每个像素点所能表示的颜色种数,单位bit。比如黑白屏只有两种颜色亮和灭,用1个bit就能表示,他的色彩深度为1bit。我们常用的色彩深度有8bit,也就是2的8次方256个级别。

**点距:**屏幕上相邻两个同色像素单元之间的距离,也叫点间距。在屏幕尺寸相同情况下,点距越小,分辨率越高,显示越清晰。

**尺寸:**即显示器的大小,一般用英寸表示,比如我们的笔记本电脑显示器尺寸一般有14.5寸,15寸等,这个长度是指屏幕对角线长度,根据屏幕尺寸和长宽比就能求出屏幕大小。

**帧:**最小的单幅图像画面,即图像的单位,一幅图像(动画中的一个静止画面)就是一帧。也可以表示为屏幕中,所有组成图像的像素点集合。帧数表示每秒钟图像可以刷新几次,用fps表示,帧数越高,动画越流畅。

**RGB信号线:**红蓝绿三种颜色所占的位数,比如RGB565表示红色数据线占5根,绿色数据线6位,蓝色数据线5根,总共16的数据为,可以表示2的16次方种颜色。

**显存:**也称为做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据,显存用来存储要处理的图形信息。屏幕中每个像素点都是数据,在实际应用时,需要先把每个像素点的数据缓存起来,然后传递给屏幕,这个缓存像素点的存储器就是显存。显存至少应该可以容纳一帧图像的像素,比如对于分辨率1200x800,RGB565的屏幕,一帧数据大小为(5+6+5)/8*1200 *800byte。

**ARGB:**A是指Alpha(透明度),ARGB是一种色彩模式,支持两层显示数据混合,可以做出前景背景分离的效果,比如我们一边看直播,一边刷弹幕,弹幕就是前景显示。使用这种效果,前景层必须包含透明像素,比如ARGB1555,有1bite透明像素,红蓝绿各5bit,1bit透明像素只能表示透明或者不透明,不透明时,后面的RGB555失效,如果有多个bit的透明像素,可以表示RGB位的透明程度。