ARM总线架构

S3C2440集成了丰富了外设控制器(LCD控制器、USB Device控制器、USB Host控制器、NAND FLASH控制器、I2C控制器、SPI控制器等)。要控制这些外设就要设置相应控制器的寄存器以产生相应的驱动时序。学习S3C2440,主要是如何配置寄存器。下面是S3C2440特殊功能寄存器地址:

#define rBANKCON0  (*(volatileunsigned *)0x48000004) //Boot ROM control
#define rBANKCON1  (*(volatileunsigned *)0x48000008) //BANK1 control
#define rBANKCON2  (*(volatileunsigned *)0x4800000c) //BANK2 cControl

#define rBANKCON0  (*(volatileunsigned *)0x48000004) //Boot ROM control

#define rBANKCON1  (*(volatileunsigned *)0x48000008) //BANK1 control

#define rBANKCON2  (*(volatileunsigned *)0x4800000c) //BANK2 cControl

图1 内存映射

下面就来详细分析。

图2 S3C2440结构框图

先介绍一下AMBA(Advanced Micro-Controller Bus Architecture)是由ARM Limited公司推出的On-Chip Bus片上总线规范,是目前芯片总线的主流标准。一开始AMBA 1.0只有ASB和APB,为了节省面积,这时候的总线协定都是采用3态的总线,到后来的AMBA 2.0版本,新增了AHB总线,共定义了3组总线:高性能总线(AdvancedHigh Performance Bus,AHB)、系统总线(AdvancedSystem Bus,ASB)和外设总线(Advanced PeripheralBus,APB)。

图3 典型的基于AMBA总线的系统

关于AMBA总线的更多的内容可上网查看,中文的资料都有很多。由图2可知AHB总线上挂载了LCD控制器、中断控制器、USB Host控制器、电源管理、NAND控制器、Camera控制器、存储器控制器以及AHB to APB桥和DMA控制器APB总线上挂载了UART控制器、I2C控制器、USB Device控制器、I3S控制器SDI/MMC控制器、GPIO、Watchdog/定时器、RTC、ADC、SPI、AC97。下面这段话是摘自S3C2440芯片手册:

"The S3C2440A holds 13 bus masters. They include DRAMrefresh controller, LCD_DMA, CAMIF DMA, DMA0,DMA1, DMA2, DMA3, USB_HOST_DMA,EXT_BUS_MASTER, Test interface controller (TIC) and ARM920T."

S3C2440A有13个主设备。当AHB总线上的主设备读写从设备时,发出的地址经过AHB总线的译码器(通过内存映射表) 产生该地址所对应从设备的选择信号,选中从设备;这样就可以对从设备进行读写啦。

图4 AHB译码器

图5 译码器的具体实现代码

译码器的内存映射表具有相对的独立性。如果AHB总线上的从设备发生了变化,必须对内存映射表进行修改以确保每个地址都对应正确的从设备。下面是内存映射表的一个例子。

图6 内存映射表

使用了两种内存映射表:正常工作下的内存映射表和重新启动时的内存映射表。在正常工作时,微处理器的从设备包括内部RAM、外部RAM、外部ROM和AHB/APB桥;当系统重新启动时,系统的内存映射不包括内部RAM,而是将0x0000—0000至0x0000—03FF的内存地址段映射为nash。这个部分包含系统的启动和初始化代码。当系统启动完成初始化后,AMBA总线将产生一个Remap信号,送入译码器,将译码器的当前内存映射表改为正常工作状态下的内存映射表。

下面是S3C2440的地址映射

AHB Memory Map

Memory control                                    0x48000000  0x48000030

USB HOST                                             0x49000000  0x49000058

INTERRUPT                                            0x4a000000   0x4a00001c

DMA                                                      0x4b000000   0x4b0000e0

CLOCK & POWER MANAGEMENT        0x4c000000  0x4c000018

*LCD CONTROLLER                               0x4d000000  0x4d000060  0x4d000400(Palettestart address)

Nand Flash                                            0x4E000000  0x4E00003C

Camera Interface                                   0x4F000000  0x4F0000A0

APB Memory Map

UART0                                                0x50000000  0x50000028

UART1                                                0x50004000 0x50004028

UART2                                                0x50008000  0x50008028

PWM TIMER                                       0x51000000 0x51000040

USB DEVICE                                        0x52000140 0x5200026c

WATCH DOG TIMER                           0x53000000  0x53000008

IIC                                                       0x54000000  0x54000010

IIS                                                       0x55000000   0x55000010

AC97                                                   0x5b000000  0x5b00001C

I/O PORT

A                                                         0x560000000x56000004

B                                                         0x560000040x56000018

C                                                         0x560000200x56000028

D                                                         0x560000300x56000038

E                                                          0x560000400x56000048

F                                                          0x560000500x56000058

G                                                         0x560000600x56000068

H                                                         0x560000700x56000078

J                                                          0x560000d0 0x560000d8

other                                                   0x56000080  0x560000cc

RTC                                                     0x57000040 0x57000088

ADC                                                    0x58000000 0x58000014

SPI                                                      0x59000000 0x59000034

SD Interface                                       0x5a0000000x5a000040

总结:AHB总线上的译码器根据地址产生相应的片选信号,选中对应的设备。AHB总线上有一个AHB to APB 桥,桥是AHB总线的从设备,是APB总线上唯一的主设备。桥是一个协议转换器(AHB协议到APB协议的转换),它还要完成APB总线的地址译码工作。

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

原文地址:https://www.cnblogs.com/big-devil/p/8590213.html

时间: 2024-10-02 05:36:54

ARM总线架构的相关文章

ARM总线方面知识

AMBA简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片上总线设计是最关键的问题.为此,业界出现了很多片上总线标准.其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构.AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanc

什么是数据仓库总线架构

一.总线架构 维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”.总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact). 在多维体系结构(MD) 的数据仓库架构中,主导思想是分步建立数据仓库,由数据集市组合成企业的数据仓库.但是,在建立第一个数据集市前,架构师首先要做的就是设计出在整个企业内具有统一解释的标准化的维度和事实,即一致性

搭建数据仓库第06篇:逻辑建模–3–维度建模核心之总线架构

目录 前言 维度建模 星型模型 小结 前言 维度建模是Kimball提出来的经典的数据仓库建模思想.维度建模提倡针对某一主题,通过建设维度和事实来快速建设数据仓库.与维度建模相对应的自然是Inmon的范式建模.在上篇也提到范式建模非常适合应用于中间明细层的建设,那么在DW/DM层为什么选择使用维度建模呢?这是第一个问题.维度建模的核心是总线架构,一致性维度,一致性事实.本篇的主题是总线架构,那为什么说维度模型是总线式架构?本篇通过维度建模和星型模型的讲解来分别解释这两个问题. 维度建模 维度模型

数据仓库专题(22):总线架构和维度建模优势-杂项

一.总线架构 维度建模的数据仓库中,有一个概念叫Bus Architecture,中文一般翻译为“总线架构”.总线架构是Kimball的多维体系结构(MD)中的三个关键性概念之一,另两个是一致性维度(Conformed Dimension)和一致性事实(Conformed Fact). 在多维体系结构(MD) 的数据仓库架构中,主导思想是分步建立数据仓库,由数据集市组合成企业的数据仓库.但是,在建立第一个数据集市前,架构师首先要做的就是设计出在整个企业 内具有统一解释的标准化的维度和事实,即一致

ARM 处理器架构【转】

ARM 处理器架构 转自:http://www.arm.com/zh/products/processors/instruction-set-architectures/index.php ARM 架构是构建每个 ARM 处理器的基础.ARM 架构随着时间的推移不断发展,其中包含的架构功能可满足不断增长的新功能.高性能需求以及新兴市场的需要.有关最新公布版本的信息,请参阅 ARMv8 架构. ARM 架构支持跨跃多个性能点的实现,并已在许多细分市场中成为主导的架构.ARM 架构支持非常广泛的性能

如何在linux主机上运行/调试 arm/mips架构的binary

如何在linux主机上运行/调试 arm/mips架构的binary 原文链接[email protected]0.0.0.55 本文中用于展示的binary分别来自Jarvis OJ上pwn的add,typo两道题 写这篇教程的主要目的是因为最近想搞其他系统架构的pwn,因此第一步就是搭建环境了,网上搜索了一波,发现很多教程都是需要树莓派,芯片等硬件,然后自己编译gdb,后来实践的过程中发现可以很简单地使用qemu实现运行和调试异架构binary,因此在这里分享一下我的方法. 主机信息: 以一

ARM计算架构迈一小步,却是人工智能产业的一大步

2017年3月21日,ARM在北京召开了新闻发布会,推了针对其Cortex A系列CPU芯片的新计算架构DynamIQ技术.本质上说,DynamIQ并不是新的芯片技术,而是一种新的多计算核集群方式.这种新的集群方式,让ARM的Cortex A系列能够更好的适应多种人工智能计算任务.尽管这只是ARM芯片技术的一小步,但对于推动人工智能产业来说却是一大步. 在理解DynamIQ的意义之前,先了解一些基础知识.ARM的芯片设计产品目前分为Cortex A.Cortex R和Cortex M三大系列,这

ARM Cortex-A7架构,高通210系列-MSM8909

核心板特性 A7架构 4核(4*1.1GHz(A7)) 产品尺寸小,便于客户集成,减少产品体积: 支持4G LTE超高速上网,单板兼容移动/联通/电信2G/3G/4G: 支持2+32存储器,Micro SD支持32G: 尺寸小.集成度高.大板布板灵活; 支持全网通.wifi.蓝牙.GPS; 支持 HD(1280*720) 接口丰富,可扩展性强 Sim 卡*2/MicroSD 卡*1/IIC*4/串口*2/USB(OTG)*1/3.5mm 耳机*1/GPIO *20/ADC*2/PWM*1 高通骁

Linux驱动下的platform总线架构(转)

从 Linux 2.6 内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver .    Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示:驱动用 platform_driver 进行注册.        Linux platform driver 机制和传统的 device driver 机制(即:通过 driver_register 函数进行注册)相比,一个十分明显的优势在于 platform