下面这段话是摘自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 RTC 0x57000040 0x57000088 ADC 0x58000000 0x58000014 总结:AHB总线上的译码器根据地址产生相应的片选信号,选中对应的设备。AHB总线上有一个AHB to APB 桥,桥是AHB总线的从设备,是APB总线上唯一的主设备。桥是一个协议转换器(AHB协议到APB协议的转换),它还要完成APB总线的地址译码工作。 SPI 0x59000000 0x59000034 SD Interface 0x5a0000000x5a000040 |