一、CPU如何与不同设备传输数据?
- 内存控制器根据CPU发出的地址,选择不同的设备进行数据传输;
- CPU通过寄存器访问GPIO_CON、UART_CON等内部设备;
- CPU通过总线(数据总线、地址总线)访问SDRAM、NOR、DM9000等外部设备;
- 内存控制器根据CPU发出的地址,通过片选信号nGCSn选择不同的外部设备;
- 内部设备与外部设备统一编址,在CPU眼中无差别,都是通过发送地址传输数据;
- NandFlash并不属于统一编址,而是通过NandFlash控制器来控制NandFlash。(详见《NandFlash详解》)。
二、CPU与不同位宽设备传输数据?
- 内存接口与8bit设备连接,CPU的A0地址总线与设备的A0地址总线相连;
- 内存接口与16bit设备连接,CPU的A1地址总线与设备的A0地址总线相连;
- 内存接口与32bit设备连接,CPU的A2地址总线与设备的A0地址总线相连;
- CPU发出地址信号,不同的位宽设备得到不同的地址信息
- 如:MOV R0, #3;LDRB R1, [R0];即从地址为3的内存中读取1个byte数据
三、如何确定芯片的访问地址?
- 根据nGCS片选信号确定访问设备的基地址
- 根据设备的地址总线算出设备的存储范围
Nor Flash 使用的是片选0(nGCS0),基地址为0,用到A20,A19……A1,A0共21条地址线,所以地址范围为0x00000000 ~ 0x1FFFFF也就是2M的空间大小。
四、内存设备的时序图分析——以NorFlash为例
- CPU与内存设备之间的连接有多条线,每条线都代表不同含义,当需要传输数据时,内存控制器会控制设备上的不同线路有先后顺序的发出工作信号,相互配合完成数据传输工作;
- 内存控制器可以根据不同的内存设备型号,来修改线路不同线路上信号发出的时间间隔,可以通过结合相关型号内存设备的芯片手册来修改时序图的时间间隔,以此提高设备的访问效率;
2440中NorFlash时序图MX29LV160DBTI款的NorFlash时序图 - 分析时序图来提高NorFlash的访问效率
五、SDRAM传输数据
- SDRAM是由n个bank和格子组成,每个格子16位数据;
- CPU发出地址后,内存控制器片选SDRAM,再同时发出bank信号和行信号,再发出列信号,依次来确定具体的内存格子;
- 内存控制器通过控制LADDR24和LADDR25来确定选择的bank,通过LnSRAS和LnSCAS来区分行和列信号,可以通过设置寄存器来设置bank、行、列的具体数量,以此来确定内存控制器的发出信号。