嵌入式硬件学习(一)——ARM介绍

一、ARM介绍

1、ARM公司

(1)主要设计ARM系列RISC处理器内核
(2)授权ARM内核给生产和销售半导体的合作伙伴,自己不生产芯片
(3)提供基于ARM架构的开发设计技术

2、ARM各系列

(1)A——特点:高性能、支持多核,应用场景:手机、电脑
(2)R——特点:实时性强,应用场景:汽车电子
(3)M——特点:低功耗、低延迟,应用场景:嵌入式系统、工业自动化

二、SOC概念

SOC构成
(1)SOC包括:kernal、总线、存储器、片内外设。
(2)kernal包括
算术逻辑单元(ALU)、
寄存器(R0-R12)、
内存管理单元(MMU)——负责将RAM映射为虚拟内存、
高速缓存——i.cache、d.cache、
pc、lr、sp寄存器。
(3)内部总线包括
AHB总线:高速总线,挂载存储器、LCD等高速设备。
APB总线:低速总线,挂载Timer、UART、I2C等。
(4)最小系统:电源、时钟、复位、ROM、RAM。

三、ROM和RAM的分类

RAM介绍
sram用晶体管存储0和1,速度快,成本高,存储密度小
dram动态存储,用电容充放电存储0和1,功耗大,速度慢,成本低,存储密度大
sdram增加了同步电路,提高了读写速度
ddr ram(double data rate sdram),为sdram的下一代
iram并非真正意义上的ram,通常iram就是sram,通常在soc内部,所以叫iram
ROM介绍
rom非易失性存储器,最早只读不写
promprogrammable rom,可编程的rom。能够写入一次
eprom可擦写的prom,可以重复擦写,需要特殊工具
eeprom电可擦写的prom
flash新一代非易失性存储器,分为nor flash(可以寻址)和nand flash(不能寻址)

四、编译流程

在这里插入图片描述
在程序开发中,使用高级语言编写的代码被称为源代码,比如用C语言编写的后缀名为.c的文件,或者C++编写的后缀名为.cpp的文件。源代码不能被机器执行,必须转换成二进制的机器代码(指令+数据)才能被CPU执行。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成。

编译器对源代码进行语法检查,只有没有语法错误的源代码才能被编译通过。源代码经过编译后,并没有生成最终的可执行文件,而是生成一种被称为目标文件(Object File)的中间文件。比如,Visual C++的目标文件后缀名为.obj,而GCC的目标文件后缀名为.o

源代码可能包含多个源文件,比如main.c/fun1.c/fun2.c等等,编译器会对源文件逐个进行编译。因此,有几个源文件,就会生成几个目标文件;目标文件并不能被执行,因为它可能存在一些问题,比如源文件之间的引用关系导致的问题。

举个例子:文件A.c引用了文件B.c中的变量"EXT_someflag",A.c和B.c分别编译生成A.o和B.o,A.o中并没有变量"EXT_someflag"的定义,必须依靠B.o才能形成完整的代码。

把经过编译后生成的目标文件,按照其内在引用关系彼此相连接而生成一个完整的、可执行的文件的过程称为链接,链接工作由链接器完成。

五、大小端

大小端是指数据在内存中的存储方法
1、大端:高位字节在低地址,低位字节在高地址。
2、小端:低位字节在低地址,高位字节在高地址。

六、ARM的工作模式

ARM有7种基本工作模式:
1、User:非特权模式
2、FIQ:高优先级(fast)中断产生
3、IRQ:低优先级(normal)中断产生
4、Abort:存取异常产生
5、Supervisor:复位或者软中断指令执行
6、Undef:执行未定义指令
7、System:和User模式相同的寄存器集特权模式

七、ARM寄存器基本介绍

1、ARM有37个32bits长的寄存器:PC、CPSR、5个SPSR、30个通用寄存器
2、Cortex有40个32bits长的寄存器。
3、sp寄存器:栈指针寄存器,主要用于临时存储局部变量、函数形参和返回地址。
4、lr寄存器:用于存储函数调用的返回地址。
5、pc寄存器:指向cpu执行的下一条指令。
在这里插入图片描述

八、判断一个数是不是立即数

判断条件有以下三点:
(1)如果这个数的范围在0-255之间,那么这个数一定是立即数;
(2)如果超出,需要把这个数展开成二进制,从高位依次向下第一个1和和最后一个1之间如果位数不超过8位(包含这两个1),如果超过了一定不是;
(3)如果不超过八位,还要看最低位1后面的零是否为偶数,如果是偶数,则是立即数。

九、ARM上电启动流程

1、硬件复位阶段

(1)电源上电:电源管理芯片确保各组件获得稳定供电;
(2)时钟初始化:晶振电路为系统提供时钟信号,锁相环将时钟频率提高到合适频率;
(3)复位信号:复位电路生成复位信号,将处理器和外设恢复到初始状态;
(4)内存初始化:检测是否能正常工作。

2、ROM固件启动阶段

(1)ROM引导程序执行:复位接触,处理器将从ROM固定地址开始执行指令。ROM中的引导程序(BootROM)是硬件厂商预置。
(2)启动模式选择:引导程序通过GPIO、DIP开关、Boot引脚等,确定从何处加载下一步引导程序。
(3)外设初始化

3、一级引导程序(Bootloader)加载

(1)加载Bootloader:根据BootROM的配置,从指定存储介质加载一级引导程序到RAM中。
(2)执行引导程序:初始化更复杂的硬件、配置必要外设、准备环境以加载操作系统内核或者二级引导程序。

4、二级引导程序加载

(1)加载内核:从存储器中读取操作系统内核
(2)设置启动参数、设置树加载、跳转到内核——将控制权交给操作系统内核,进入系统运行阶段。

5、操作系统内核启动

(1)内存管理初始化
(2)加载设备驱动,初始化硬件设备
(3)文件系统挂载
(4)启动用户空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值