找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于S3C6410的DMA数据跟踪技术在TD-LTE中的实现

[复制链接]
admin 发表于 2013-3-26 02:46:50 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 基于TD-LTE系统中数据跟踪技术的研究与DMA获取系统总线的不同模式,设计并分析比较了在S3C6410上通过DMA实现原语跟踪的两种方案。根据TD-LTE无线综合测试仪中的设计要求,选择了中断标志查询模式获取系统总线的方案,实现了TD-LTE系统原语的实时跟踪,满足了系统对CPU资源利用率以及数据传输速度和准确性的要求。
关键词: 直接存储器存取;嵌入式应用;长期演进;跟踪数据
       原语是从物理层到非接入层各层间的通信数据,这些数据包含带有大量标识信息的头。在TD-LTE无线综合测试仪表数据传输过程中,从最上端非接入层开始向下逐层将数据加头并加入本层的有效数据,到物理层后向上反馈并逐层解析头提取本层所需数据。这些数据的正确性是确保整个通信系统正常运作的关键所在,因此,在系统设计与调试过程中对这些数据的实时跟踪检测十分必要。
     本文介绍了在TD-LTE中基于三星ARM1176JZF芯片S3C6410的DMA技术的具体应用实现(即原语跟踪技术),以及在具体环境中不同技术方案的对比分析。最终的设计方案充分利用了DMA在基带芯片中的可用性与占用CPU资源小的优势[1],实现了高效实时可靠的原语跟踪。
1 S3C6410中DMA控制器特性
     S3C6410包含4个DMA控制器,每个DMA控制器由8个传输通道组成。DMA控制器的每个通道能在主AXI(Advanced Extensible Interface)总线的设备和外部AXI总线之间通过AHB(Advanced High performance Bus)到AXI进行单向数据传输。DMA控制器结构框图如图1所示,每个控制器提供16个外设DMA请求,并且DMA控制器支持外部中断响应,即每个通道可以支持从内存到外设、从内存到内存、从外设到内存、从外设到外设4种模式的数据传输。在TD-LTE系统中,原语跟踪使用的是内存到外设模式,每个外设连接到DMA控制器,可以产生DMA脉冲请求或是单一DMA请求,脉冲大小可编程。DMA内部有4个字的FIFO通道,支持8 bit、16 bit、32 bit宽度处理。由于原语跟踪采用的外设是UART支持的8 bit输出,故本文在设计中DMA也采用8 bit处理[2]。
    2012110704580258094618.gif
   2 DMA信号处理流程与跟踪步骤
     数据跟踪的基本机制如下:首先为各层的数据在内存中开辟存储空间,将数据存储到指定缓存中,再由DMA实现内存到外设的数据搬移。本文的外设是UART,将数据搬移到UART的输出缓存区以实现数据跟踪。DMA控制器和外设的信号交互如图2所示。
    2012110704580270594619.gif
       当请求被允许且剩余数据量大于脉冲大小时,DMA控制器发送全部数据脉冲;而剩余数据量小于脉冲大小时,DMA控制器将再次监控请求信号等待下次传输[3]。本文在数据跟踪时将脉冲设置为1以满足数据跟踪实时性的要求。此外,由于单次数据量并不是很大(最大不过字节单位的数据量),因此没有采用链表模式来传输数据。整个跟踪过程主要包括以下几个步骤:首先DMA接收到外设驱动初始化完毕后发送的DMA请求;然后DMA控制器请求CPU将数据搬移到需要使用的总线交给DMA控制,将数据预读取到DMA-FIFO中(即DMA数据搬移内部过程);最后打开DMA通道将DMA-FIFO中的数据传输到UART的输出缓存中,输出到显示设备。其中只有驱动初始化和总线释放过程有CPU参与,而驱动初始化过程是一次性的,之后的步骤都由DMA单独控制从而释放CPU资源以继续执行系统的其他工作。工作中会产生更多的原语需要DMA反复运行支持实时跟踪,图3为数据跟踪基本设计流程。
3 DMA跟踪数据方案设计与分析
     数据在内存中的缓存处理方案是:根据TD-LTE无线综合测试仪表系统单次跟踪的数据量大小以及原语产生地址与时间的随机不连续性,DMA搬移数据时设置了100 KB的数据缓存区,以统一数据地址提高跟踪效率[4],从而在合理利用存储空间的同时也保证了数据在传输过程中的高效与完整性,设计中采用起始地址和结束地址标志相减的方式判断单次数据量大小。当数据存储到100 KB缓存边界缓存溢出时,需要采用一定的数据处理机制来做溢出判断,其处理方式如图4所示。将本次的数据量分成A、B两块,分两次分别传输,A部分是本次数据搬移起始位置到100 KB边界位置的数据量,B部分是当前数据总量减去A部分数据后的剩余数据量。这里要注意的是:A部分数据传输完成后,系统可能又产生了新的原语数据块C,因此设计中,在传输数据块B时要重新读取数据的终止标志位加上后面产生的新的数据块C,以保证数据的实时性与完整性。
    2012110704580270594620.gif
       在TD-LTE无线综合测试仪表系统中,原语是单条产生的,并带有一定的时间间隔。为满足系统对实现数据跟踪的实时性要求,在跟踪数据时也是单条实时显示。这就要求在设计中判定DMA在每次传输是否完成,避免本次传输还未完成而下一次传输已经开始,导致本次传输数据不完整。因此在设计过程中,采用了中断判断模式和中断标志位判断模式两种方案来判定传输是否完成并获取总线来执行下一次数据搬移。
3.1 中断判定模式
     根据S3C6410中DMA控制器特性,DMA在数据搬移结束时可以产生数据计数中断或数据错误中断两种中断。设计中打开DMA对应的GPIO(General Purpose Input Output)口并初始化相对应的41号VIC(Vectored Interrupt Controllers)中断向量,就可以利用数据计数中断来完成系统的外部中断响应,进入中断函数,在中断函数中再次调用DMA以此完成多次数据搬移[4]。在使能DMA通道并且数据传输完成后由硬件自动响应中断,有效避免了DMA设备在传输过程中被下一次传输请求打断,而搬移数据和系统其他程序的执行完全互不干扰。这种模式可以在各种数据量大小的数据搬移过程中最大限度地利用CPU资源。但是,由于采用了上述的数据缓存机制,而且在TD-LTE系统中断处理中比DMA计数中断优先级高的中断还有很多,因此采用中断模式在实际运用中会出现以下三种典型不稳定的情况及所采取的措施:
     (1)在CPU向缓存中搬移数据过程中产生了中断,此时会出现当前一次要搬移的数据在内存中不完整或标志位混乱的情况,因此,在设计时搬移数据前还需要增加内存数据是否存储完成的标志位判定。由于中断类型众多,设计有一定难度。
     (2)最后几条原语数据在存入内存缓存区后,若前面的搬移数据还没有完成,则无法获取总线,则会导致最后几条原语无法跟踪。因此,需要在原语全部发送完毕后在系统程序靠后的固定位置添加一条空的原语跟踪语句来跟踪最后几条。
     (3)当出现较大数据量搬移时耗时较长,可能超过上层系统原语发送的间隔时间,后面几条原语将堆积到缓存中,等待下一次DMA总线获取后,一次性搬出,这样会导致下一次数据搬移时间的延长。这一条是基于机制的本质问题,实时性和数据完整性预计会受到较大影响。
3.2 中断标志位判定模式
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-28 05:37 , Processed in 0.062177 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表