请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TMS320F2.8377万S 主题中讨论的其他部件:C2000WARE
我在 C2000Ware 1.00 的F2.8377万S的emif1_16bit_asram.c中的外部SRAM测试中发现了一些错误。00.00 :
1- mem_read_write()中的Loop变量将外部SRAM限制为64K x 32位
MEM_READ_WRITE (UINT32 start_addr,UINT32 mem_size) { 无符号长mem_rds; 未签名的long mem_wds; 长*XMEM_ps; //unsigned int I;<<更改为unsigned long以支持大于64K x 32位的外部SRAM
无符号长I;
2-对于给定的mem_size,mem_data_walk仅覆盖其它测试覆盖的一半内存
MEM_DATA_Walk (UINT32 start_addr,UINT32 mem_size) { 无符号长SRAM_rd; 无符号长SRAM_wd; 无符号长I; int k; 间隔m; unsigned long *xm_p; unsigned long *XMEM_p; xm_p =(unsigned long *) start_addr; //对于(i=0;i < mem_size;i=i+64)<<需要将mem_size加倍,以覆盖与其他测试相同的内存,因为每个位置都是正常的反向测试
对于(i=0;i <(mem_size * 2);i=i+64)
3- mem_addr_walk中的Loop变量将外部SRAM限制为64K x 32位
MEM_addr_walk (UINT32 start_addr,UINT32 addr_size) { 无符号长SRAM_rd; 无符号长SRAM_wd; //unsigned int k;<<更改为unsigned long以支持大于64K x 32位的外部SRAM
unsigned long k;
unsigned long xshift;unsigned long *XM_p;unsigned long *XMEM_p;
其余的不是错误本身,而是有用的说明:
4- mem_size是32位字的数目(给定每个地址指向16位的可寻址大小的一半)
建议添加类似于下面的注释
#define test_pass 0xABCDAB#define test_fail 0xDEADDEAD #define ASRAM_CS2_START_ADDR 0x10万 #define ASRAM_CS2_SIZE 0x8000 //要测试的32位字的数目
5-删除未使用的计时值(这些值在代码中不会执行任何操作,可能会引起混淆)
#定义EMIF1 0 #定义EMIF2 1 #define MEM_D_WIDTH 1. // 16位内存接口 #define turn环绕时间 0 // 2 EMIF时钟的周转时间 #define RD_Setup_Time 0 //读取1 EMIF时钟的设置时间 #define RD_strobe时钟 3. //读取4 EMIF时钟的选通时间 #define RD_HOLD_TIME 0 // 1 EMIF时钟的读取保持时间 #define WR_SETUP_TIME 0 // 1 EMIF时钟的写入保持时间 #define WR_STROBAT_BETIME 0 // 1 EMIF时钟的写入设置时间 #define WR_HOLD_TIME 0 // 1 EMIF时钟的写保持时间 #define extend_wait 0 //禁用扩展等待 #define strobe SEL 0 //禁用选通模式。 #define wait_polical_inv 0 #define wait_count 0
谢谢!
Steve