作者:赵孝强,华清远见嵌入式学院讲师。
DMA作为一种CPU与外设传输数据的技术,现在广泛用于各种计算机架构中,它最大的优点就是无需CPU干涉下,完成数据从内存到外设的传递。这一章就给读者讲解一下S5PC100中的DMA控制器的操作方法。
首先简单介绍下什么是DMAC,DMAC 是一个自适应先进的微控制器总线体系的控制器,它由ARM公司设计并基于PrimeCell技术标准,DMAC提供了一个AXI接口用来执行DMA传输,以及两个APB接口用来控制这个操作,DMAC在安全模式技术下用一个APB接口执行TrustZone技术,其他操作则在非安全模式下执行。DMAC包括了一个小型的指令集,用来提供一些灵活便捷的操作,为了缩小内存需求,DMAC则使用了变长指令。
不同于ARM11以及以前系列的芯片,S5PC100使用了基于PrimeCell技术标准的PL330(DMA控制器核心)有了很大的变化,从编程方式上看,它提供了灵活的子指令集,使得你有更多的组合方式用来操作DMA,从硬件上看,它实现了硬件上的多线程管理,一次编写代码即可让它正常的完成所需的工作,因此这一章的学习是有一定困难的。
下图给出DMAC接口框图:
图12-1 DMAC接口框图
在S5PC100中,三星公司为安全考虑而加入了一套新的技术标准,即多加了一套安全模式,在安全模式下,处理核的寄存器是受到保护并且与非安全模式下是隔离开来的,这样在一般的外设接口都会涉及到两种模式,DMAC也不例外,但是这里我们只关注非安全模式。
S5PC100下DMAC模型
图12-2 DMAC
AXI总线主机:
●DMAC以及一个ARM处理器
●一个AXI互联以及两个AMBA协议桥
●PrimeCell的从机:
●一个动态的内存控制器
●一个静态的内存控制器
●一个定时器
●一个GPIO 一个UART
1、特性
●DMAC提供了如下的特性:
●一个提供灵活编程接口的DMA指令集
●单个AXI主机接口控制DMA传输
●双APB从机接口下,同时提供基于安全以及非安全两套寄存器
●支持TrustZone技术
●支持多种传输类型
●内存至内存
●内存至外设
●外设至内存
●分散/聚集模式
●可配置的RTL,使得DMAC对于应用有着更佳的性能
●对于每个DMA通道都可以配置其安全模式
●使用中断输出信号用来发生多种DMA事件
2、 DMAC配置特点
●下面这些特性为DMAC的配置特性:
●AXI数据总线宽度
●AXI读处理活动的个数
●AXI写处理活动的个数
●同时的DMA通道个数
●内部数据缓冲的深度
●指令cache的行数,一行的字数
●读指令队列的深度
●写指令队列的深度
●外设请求接口的个数
●中断输出信号的个数