嵌入式知识点总结 ARM体系与架构 专题提升(一)-硬件基础
目录
1.NAND FLASH 和NOR FLASH异同 ?
2.CPU,MPU,MCU,SOC,SOPC联系与差别?
3.什么是交叉编译?
4.为什么要交叉编译?
5.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别?
1.NAND FLASH 和NOR FLASH异同 ?
特性 | NAND Flash | NOR Flash |
---|---|---|
存储结构 | NAND 门结构,按块和页擦写 | NOR 门结构,按字节读取 |
写入速度 | 较快,适合大数据量写入 | 较慢,适合小数据量按字节写入 |
读取速度 | 较慢,按页读取 | 较快,按字节读取 |
擦除单位 | 按块擦除 | 按扇区擦除 |
应用 | 高容量存储,适合 SSD、闪存卡等 | 固件存储、嵌入式系统代码存储 |
成本 | 较低,适合大容量存储 | 较高,适合小容量且要求快速读取的应用 |
容量 | 大容量,通常为数百GB或更多 | 小容量,通常为几MB到几GB |
耐用性 | 擦写次数较少,有限的寿命 | 擦写次数较多,适合长期使用 |
写之前都要先擦除,因为写操作只能使1->0,而擦除动作是为了把所有位都变1
擦除单元可以都以块为单位
2.CPU,MPU,MCU,SOC,SOPC联系与差别?
1.CPU(Central Processing Unit ),是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。
2.MPU (Micro Processor Unit),叫微处理器(不是微控制器),通常代表一个功能强大的CPU(暂且理解为增强版的CPU吧),但不是为任何已有的特定计算目的而设计的芯片。这种芯片往往是个人计算机和高端工作站的核心CPU。最常见的微处理器是Motorola的68K系列和Intel的X86系列。
3.MCU(Micro Control Unit),叫微控制器,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种1/0接口集成在一片芯片上,形成芯片级的芯片,比如51,avr这些芯片,内部除了CPU外还有RAM,ROM,可以直接加简单的外围器件(电阻,电容)就可以运行代码了,而MPU如x86,arm这些就不能直接放代码了,它只不过是增强版的CPU,所以得添加RAM,ROM.MCU MPU最主要的区别就睡能否直接运行代码。MCU有内部的RAM ROM,而MPU是增强版的CPU,需要添加外部RAM ROM才可以运行代码。
4.SOC(System on Chip),指的是片上系统,MCU只是芯片级的芯片,而S0C是系统级的芯片,它既MCU(51,avr)那样有内置RAM,ROM同时又像MPU(arm)那样强大的,不单单是放简单的代码,可以放系统级的代码,也就是说可以运行操作系统(将就认为是MCU集成化与MPU强处理力各优点二合-)。
5.SOPC(System OnaProgrammable Chip)可编程片上系统(FPGA就是其中一种),上面4点的硬件配置是固化的,就是说51单片机就是51单片机,不能变为avr,而avr就是avr不是51单片机,他们的硬件是一次性掩膜成型的,能改的就是软件配置,说白点就是改代码,本来是跑流水灯的,改下代码,变成数码管,而SOPC则是硬件配置,软件配置都可以修改,软件配置跟上面一样,没什么好说的,至于硬件,是可以自己构建的也就是说这个芯片是自己构造出来的,这颗芯片我们叫“白片”,什么芯片都不是,把硬件配置信息下载进去了,他就是相应的芯片了,可以让他变成51,也可以是avr,甚至arm,同时SOPC是在SOC基础上来的,所以他也是系统级的芯片,所以记得当把他变成arm时还得加外围ROM,RAM之类的,不然就是MPU了
3.什么是交叉编译?
在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。
这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(0peratingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intelx86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
4.为什么要交叉编译?
有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器:有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。
5.描述一下嵌入式基于ROM的运行方式和基于RAM的运行方式有什么区别?
基于RAM
1.需要把硬盘和其他介质的代码先加载到ram中,加载过程中一般有重定位的操作。
2.速度比基于ROM的快,可用RAM比基于ROM的少,因为所有的代码,数据都必须存放在RAM中。
基于ROM
1.速度较基于RAM的慢,因为会有一个把变量,部分代码等从存储器(硬盘,flash)搬移到RAM的过程。
2.可用RAM资源比基于RAM的多
特性 | 基于ROM的运行方式 | 基于RAM的运行方式 |
---|---|---|
存储介质 | 程序代码存储在ROM中 | 程序代码从外部存储加载到RAM中 |
启动过程 | 从ROM中加载并执行程序 | 从外部存储加载到RAM并执行程序 |
速度 | 启动较慢,执行受限于ROM的访问速度 | 启动较快,执行速度受限于RAM的访问速度 |
资源使用 | RAM资源主要用于数据存储和临时数据 | RAM资源用于存储程序和数据,消耗较大 |
可用RAM资源 | RAM主要用于临时数据存储 | RAM用于存储所有程序和数据,资源紧张 |
应用场景 | 固件存储、引导加载程序等 | 嵌入式操作系统、复杂应用程序等 |