This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8377万S:emif1_16bit_asram示例中的外部SRAM测试错误

Guru**** 2539500 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/576403/tms320f28377s-bugs-in-external-sram-test-in-emif1_16bit_asram-example

部件号: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
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Steve,感谢您的反馈! 我将提出一个关于您所提到的问题的错误。

    此致
    Chris