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;">
ARM总线架构的更多相关文章
- ARM总线方面知识
AMBA简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片 ...
- [转] 张凌 ARM体系架构
很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是什么,有哪些不同?今天查了些资料,来解解惑 ...
- ARM系统架构
ARM系统架构 一.ARM概要 ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架 ...
- stm32f4xx系统总线架构
最近有人在STMCU社区网站咨询如下问题: 由于实验需要,要用到STM32F407的两个DMA并用定时器触发,在使用过程中发现DMA1无法把GPIO的IDR上的数据传输到内存,调试过程中出现DMA1的 ...
- ARM 处理器架构【转】
ARM 处理器架构 转自:http://www.arm.com/zh/products/processors/instruction-set-architectures/index.php ARM 架 ...
- ARM和STM32的区别及ARM公司架构的发展
ARM和STM32的区别及ARM公司架构的发展 转:https://www.cnblogs.com/kwdeblog/p/5260348.html ARM是英国的芯片设计公司,其最成功的莫过于32位嵌 ...
- 如何在linux主机上运行/调试 arm/mips架构的binary
如何在linux主机上运行/调试 arm/mips架构的binary 原文链接M4x@10.0.0.55 本文中用于展示的binary分别来自Jarvis OJ上pwn的add,typo两道题 写这篇 ...
- ARM体系架构下的同步操作
http://blog.hamobai.com/2012/06/28/synchronization-on-ARM-one/ 处理器在访问共享资源时,必须对临界区进行同步,即保证同一时间内,只有一个对 ...
- ARM CPU 架构
1978年12月5日,物理学家赫尔曼·豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司(Cambridge Processing Unit),主要业务是为 ...
随机推荐
- Freemarker导出带多个不重复图片的word
1.新建一个word,添加一张图片,调整好图片大小与位置.
- Django开发笔记四
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.邮箱激活 users app下,models.py: ...
- jquery筛选数组之grep、each、inArray、map的用法及遍历son对象(转)
grep [传入的参数为返回bool类型的函数] <script type='text/javascript' src="/jquery.js"></script ...
- Libevent源码分析系列
1.使用libevent库 源码那么多,该怎么分析从哪分析呢?一个好的方法就是先用起来,会用了,然后去看底层相应的源码,这样比较有条理,自上向下掌握.下面用libevent库写个程序,每隔1秒 ...
- linux内核capable源代码分析【转】
转自:https://blog.csdn.net/sanwenyublog/article/details/50856849 linux内核里对于进程的权限管理有一个很重要的函数capable,以前看 ...
- eclipse指定项目编译级别
指定项目编译级别Eclipse→Preferences→Java→Compiler→Compiler compliance level:1.6或其他 或者,
- 路由器中继(repeater)模式 和 AP+WDS模式区别?
理论上的 中继(repeater)模式, 只有连接的最后一个才会有信号发出,中间的连接节点是没有信号发出的. AP+WDS模式:就是每一个路由都有信号发出,可以进行信号的全方位覆盖.
- http转发
该http转发,我感觉有点类似于负载均衡(我还没有详细了解过负载均衡). 现在有三个站点,想自己建立一个web,对三个站点进行整合,效果如图所示: a)现状:浏览器需要访问3个站点,需要记住3个地址, ...
- Ex 5_33 实现一个关于公式长度(其中所有文字总的出现次数)为线性时间的Horn公式可满足性问题_第十次作业
对于所有的蕴含式,生成一张有向图,对于每一个蕴含式,将左边的每一个文字连接到一个中间结点,并用中间结点记录蕴含式左边文字的数量,然后将中间结点连接到蕴含式的右侧结点.例如,对于蕴含式集合 生成的有向图 ...
- appium运行报错java.net.SocketException: socket write error
这个错我调了 快两天一点头绪没有,脚本正常跑没问题,但是就是控制台输出信息报错,没法定位问题在哪.报错如图: 虽然这个报错不影响测试结果,但是本人有强迫症,一定要查出究竟: 我的尝试: 1.那天试验, ...