主流DSP存储器测试方法学习指南:TI KeyStone
测试的缓冲区是一个位于L2 中的比较小的缓冲区,而被测试的存储器往往要大得多,所以上述测试流程需要被重复很多遍才能完成对整个存储器的测试。
EDMA 有多个传输控制器,它们可以被交替使用来保证它们都被用到。例如,我们可以用EDMATC1 来填充并回读第一组数据,然后用EDMA TC2 来填充并回读第二组数据…
请注意,在多核DSP 中,EDMA 必须用全局地址来访问L1 和LL2 存储器。
3.2 测试系统中所有的存储器
如图1 所示,Keystone 系统中主要有4 种类型的存储器,它们都应该被测试到。
3.2.1 内部L1 存储器
通常,我们建议用IDMA 测试内部L1 存储器。测试前,L1 存储器应该被配置成普通存储器而不是cache。
DSP 核可以测试本核的L1D 存储器,但DSP 核不能测试本核的L1P 存储器。
在多核DSP 上,如果我们想在一个核上运行程序来测试另一个核的L1 存储器,我们应该用EDMA 而不能用IDMA,因为IDMA 只能访问本核的存储器。在对其它核的存储器测试时,其它核不能运行程序。
3.2.2 内部LL2 存储器
LL2 可以被系统中所有的主模块测试。根据通常的使用情况,我们可以用DSP 核和EDMA 来测试本地LL2 存储器。
通常,存储器测试代码和数据缓冲区都在本地LL2 存储器。所以,测试程序应该检测被测试代码和测试缓冲区占用的空间大小,而仅对剩下的空闲空间进行测试。
尽管被测试代码和测试缓冲区占用的存储区没有被严格的测试算法测试,通常,如果这个区域有问题,测试程序往往会失败。所以,从一定程度上说,这块存储器也是被覆盖了的。如果真的需要用严格的测试算法来测试所有的空间的话,我们需要两个测试程序,一个测试程序占用存储器前半部分,而测试后半部分;另一个测试程序占用存储器后半部分,而测试前半部分。
在多核DSP 上,如果我们想在一个核上运行程序来测试另一个核的LL2 存储器,EDMA 和DSP核都可以用来做测试。在对其它核的存储器测试时,其它核不能运行程序。
3.2.3 内部共享SL2 存储器
每个DSP 核和DMA 都有单独的总线访问共享SL2 存储器,测试应该涵盖每条总线,通过每个DSP 核和DMA 来测试SL2 存储器。
DSP 核通过缺省地址空间(从0x0C000000 开始)访问SL2 会经过cache 和prefetch buffer。要绕过cache 和prefetch buffer 访问SL2,必须把SL2 重新映射到其它地址空间,并把这个地址空间设置(通过MAR 寄存器)成不可cache,不可prefetch。测试应该涵盖这两种情况。
3.2.4 外部DDR 存储器
外部DDR 在测试之前需要被正确配置。如果DDR 测试在某些板子上通过,而在另一些板子上失败,可以尝试放松一些DDR 的时序参数,如果这样能让测试通过则往往说明DDR 接口存在时序问题。
DSP 核和EDMA 都应该被用来测试DDR 存储器。而对DSP 核的测试,既需要测试通过cache访问的情况,也需要测试没有cache 的情况。
DDR 最大可以有8GB,对所有DDR 存储单元的测试会消耗大量测试时间。因为EDMA 访问效率最高,所以我们可以用EDMA 来做DDR 全空间测试。对其它主模块,如DSP 核,我们不需要用它来访问整个DDR 空间,只需要测试比较小的空间就可以了,目的只是要覆盖从这个主模块到DDR 的数据路径,而DDR 存储单元已经被EDMA 完整的测过了。例如,测试DSP 核通过L2cache 访问DDR,我们只需要测试比L2 cache 大的DDR 空间就可以了,这样就覆盖了数据路径和L2 cache。
本文选自电子发烧友网6月《智能工业特刊》Change The World栏目,转载请注明出处!
3.3 通过不同数据路径测试
由于不同的主模块有自己的总线,同一存储器可以被不同的主模块从不同的数据路径访问。例如,DSP 核和EDMA 通过不同的数据路径访问LL2。
另外,同一主模块也可以通过不同的数据路径访问同一存储器。例如,DSP 核可以通过cache 或不通过cache 访问DDR 存储器。
所有这些不同的数据访问路径都应该被测试程序覆盖。
4 KeyStone DSP 上的示例测试工程
本节介绍上述测试方法在KeyStone DSP 上实现的例子。相应的测试代码可以从以下网址获得:
http://www.deyisupport.com/cfs-file.ashx/__key/telligent-evolution-components-attachments/00-53-01-00-00-10-90-46/Memory_5F00_Test.zip
4.1 CCS 工程
例子工程的目录结构如图2 所示。
图2 例子工程目录结构
工程文件在"Memory_Test"目录中。一些通用的初始化代码,如PLL, EDMA, DDR 的初始化在"common"目录中。主要的测试代码在"Memory_Test\src"子目录中。表2 描述了
- Telematics的应用模式与系统设计要领(06-22)
- 西门子SIMATIC系统在安全防爆方面的应用(08-28)
- 低照性能的突破——照亮IP视频摄像机应用前景(11-12)
- TI家用能源显示设备方案(03-12)
- 飞兆、NXP、TI、安森美四家LED驱动方案大比拼(04-07)
- 德州仪器(TI)的电冰箱解决方案(06-10)