1 要了解烧写,首先要了解6437的存储器组织
存储器的硬件组织原理可以参看TMSC6000结构原理与硬件设计(北京航天航空大学);具体的存储器的硬件连接可以参照合众达的DEC6437原理图。从原理图可以知道,flash的控制信号线CE/OE/WE都是连接与板子上面的CPLD,如需要控制读写,还要参看flash的datasheet来了解其读写时序,编写CPLD的程序,这里暂且略过,S29AL032D数据线22根,相当于内部有4M*8bit的存储空间(在flash烧写的程序中会有一句
if(FillSize > 0x100000)
{
printf("The OUT file is too big!
");
}
之所以这里是1M,不是4M,是因为后面调用fread的时候是按照4字节为单位来读取的!),地址线连接于EM_BA0-1(用于bank区分) EM_A0-A19
片选是选择的cs2,因此flash用到的空间是EMIF_CS2 = 0x0x4200 0000,查看存储器映射表(详见TMS320DM6437 Digital Media Processor中table 2-3)
因此,在烧写的程序中基址被定为
#define FLASH_BASE ( EMIF_CS2_BASE )
数据总线与dsp的连接是:EM_D0-7 8位
因此,flash写数据时,指针设置为从FLASH_BASE开始的地方。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
本质上是分为内部ram和外扩的ram,在我们的应用中外部ram是DDR2(0x8000 0000),内部ram分为L1D(数据存储器)、L1P(程序存储器)和L2,查看地址映射表会看到L1D ram、L1Dram/cache、L1Pram/cache、L2 ram/cache的区别。其中包含cache说明可以作为高速缓存用。在6437中,根据寄存器的配置,可以将内部ram的一部分配置成存储器映射ram,也可以配置成高速cache,具体寄存器参见TMS320DM6437 Digital Media Processor table 2-3 Memory map summary中的脚注(1).
Cache的意义在于保留最近读入数据。在开始阶段,cache中是没有数据的,这时如果cpu到cache中来搜索需要的数据,就肯定会有cache的缺失,导致读取外部存储器,并将内容缓存于cache中。后续的操作中若有同样的数据,cpu将优先命中cache,可以有效提高程序的读写速度。新存入cache的数据总是覆盖LRU(least recently use)最近最少使用行,将最少使用的覆盖,以提高cache的命中率。在dsp的程序设计中,cache命中率的提高也是提高效率的一个重要方面。
存储器映射的概念:片内和片外存储器以字节为单位统一编址。在我们的应用中,flash通过emif接口扩展,ddr2通过dm6437专有的ddr2 memory controller来扩展。
EMIF异步扩展存储器接口引脚参看EMIF的手册TMS320DM643x DMP Asynchronous External Memory Interface (EMIF) UG (Rev. A) page9.
DDR2 memory controller 引脚参看对应手册TMS320DM643x DMP DDR2 Memory Controller User's Guide (Rev. B) page11
一周热门 更多>