基于ARM的嵌入式开发的硬件常识

简介: 如何理解一个基于ARM内核的微处理器 可以从两方面来理解基于ARM内核的微处理器,一方面是由ARM公司设计的ARM内核,另一方面是由芯片设计厂家在ARM内核上整合的各种外围设备和外围接口控制器。

如何理解一个基于ARM内核的微处理器

可以从两方面来理解基于ARM内核的微处理器,一方面是由ARM公司设计的ARM内核,另一方面是由芯片设计厂家在ARM内核上整合的各种外围设备和外围接口控制器。下面我们分别做详细的介绍:

ARM内核:

      1.它是由ARM公司设计。

      2.是微处理器中的核心部分,相当于人的大脑,控制着整个系统的运行。

      3.主要功能是实现程序的自动化执行,包括从哪个地址取指令,进行指令译码,指令执行,从哪个地址取待操作的数据,进行数据的数学运算或逻辑运算,将数据结果存储到哪个地址。

      4.某些ARM内核还进行CACHE和MMU的管理。

      5.唯一可以配置ARM内核的途径是CP15协处理器接口(JTAG调试口除外)。

      6.在ARM内核的眼里,它看不到所有的外围设备,包括GPIO,UART,ADC,NAND FLASH,LCDC等许多的设备,在它眼里,数据和地址就是整个世界。所以别期待ARM内核知道当前在操作系统的哪个外围设备。

      7.由ARM内核提供给外部的接口我们也可以知道内核在芯片中起的作用。

       下面是ARM926内核结构框图:

ARM926内核结构框图

外围设备和接口控制器:

        外围设备和外围接口控制器是芯片设计厂家在ARM内核上集成的,它由芯片厂家根据自己芯片所面对的市场来集成需要的外围设备和接口,比如GPIO,UART,IIC,SPI,ADC.LCDC.SENSOR,NAND FLASH,DDR,H.263/H.264等等等等。

        芯片设计厂家如何分配和组织ARM内核提供的这4G的地址空间,完全取决于芯片厂家的习惯和方便,更何况加入了MMU后,将哪段地址分配给哪个外围设备或外围接口,就更加变得无关紧要了。

外围设备和ARM内核连接的桥梁:

        1. 寄存器,下面我们以GPIO来分析一下ARM内核是怎么通过寄存器来控制GPIO的:

             通常ARM内核通过如下几个寄存器来控制GPIO:第一个是方向寄存器(方向配置),第二个是数据寄存器,第三个是上拉下拉电阻配置寄存器。ARM内核通过方向寄存器来控制GPIO管脚的输入和输出;通过数据寄存器来输出高电平和低电平,或读取GPIO管脚的高低电平状态;通过上拉下拉配置寄存器来开启上拉下拉电阻。

             总结:寄存器一端连接ARM内核的总线(当然,有可能是间接连接),另一端连接外围控制逻辑,是ARM内核和外围的连接桥梁。采用寄存器控制外围的方式除了GPIO,还有UART,IIC,SPI,ADC.LCDC.SENSOR,NAND FLASH,H.263/H.264等其它很多外围控制器。

        2. 总线接口 ,下面我们以NOR FLASH的访问来 分析一下ARM内核是怎么通过总线接口来控制NOR FLASH的:

       以freescale I.MX27和NOR FLASH  连接图为例:

flash_connect

我们在看下I.MX27存储空间的分配图:

memory map

显然,当ARM内核访问地址空间0xC0000000--0xCFFFFFFF时,NOR FLASH控制器就会自动产生访问NOR FLASH所需要的各种信号包括片选信号CS0或者CS1,地址信号A[25:0],数据信号D[15:0]等。

目录
相关文章
|
缓存 Linux 编译器
ARM嵌入式开发——基础概念
ARM嵌入式开发——基础概念
175 0
|
Linux Windows 内存技术
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(二)
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(二)
257 0
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(二)
|
内存技术
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(三)
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(三)
147 0
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(三)
|
前端开发 C语言 芯片
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(一)
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(一)
289 0
【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )(一)
|
Java
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(二)
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(二)
174 0
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(二)
|
存储
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(一)
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(一)
516 0
【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )(一)
|
Java
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)
540 0
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(二)
|
芯片
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
728 0
【嵌入式开发】ARM 关闭中断 ( CPRS 中断控制位 | 中断使能寄存器 | 中断屏蔽寄存器 | 关闭中断 | 汇编代码编写 )(一)
|
芯片 Linux 开发工具
2012 ARM嵌入式开发应用研讨会杂谈
以前参加的ARM的研讨会,名称是技术研讨会,不知道为什么现在改名为嵌入式开发应用研讨会了。不过今年演讲的重点就是 ARM DS-5开发工具(还免费发放了一本《Linux/Android开发利器 ARM DS-5使用指南》书籍),也许这就是所谓的嵌入式开发应用名称的由来吧
772 0
【各种问题处理】X86架构和ARM架构的区别
【1月更文挑战第13天】【各种问题处理】X86架构和ARM架构的区别