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.

[参考译文] 编译器/TMS320F28377D:访问 C2000WARE 中的16位 ASRAM 示例的 EMIF1在大于32k x 16位的 SRAM 上不能正常工作,如何解决?

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/817950/compiler-tms320f28377d-emif1-accessing-16bit-asram-example-in-c2000ware-does-not-work-well-on-sram-large-than-32k-x-16bit-how-to-fix

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

工具/软件:TI C/C++编译器

我为  tms320f28379 launchpad 构建了一个具有 256K x 16位 SRAM 的 SRAM 子卡。  

可以从 GitHub 获取设计文件

顶部图片可从 https://raw.githubusercontent.com/zzsczz/ram4f28379d/master/top.jpg 获取

您 可以从  https://github.com/zzsczz/ram4f28379d/blob/master/memboard.pdf 获取该 sch

GitHub 还具有 gerb 和 eageGLE PCB 文件

此电路板可与 f28379d 的原始 c2000ware emif1 SRAM 示例("C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\emif1_16bit_asram")配合使用。

但我对代码有一些疑问:

我在以下行中修改了示例:

#define ASRAM_CS2_START_ADDR 0x100000
#define ASRAM_CS2_SIZE 0x8000

1  我将 ASRAM_CS2_SIZE 更改为   0x8100, 调试程序,  然后得到  “ErrCount equals 1”

2    我将 ASRAM_CS2_START_ADDR 0x107000  ASRAM_CS2_SIZE 更改为   0x2100,  调试程序和程序运行良好 ,  条件如下:

如果(ErrCount = 0x0)

test_status = test_pass;

 

3 我将 ASRAM_CS2_SIZE 更改为   0x40000、 调试程序、 CPU 跳转到函数"mem_read_write"、并按照以下行永久循环:

对于(i=0;i < mem_size;i++)
{
*XMEM_ps++= mem_wds;
mem_wds += 0x111111;
}

如何修复 大型 SRAM 的程序?

变量"i" 定义是否  正确?

int i; ???? 

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

    您好!

    [引用 user4076930]1  我将 ASRAM_CS2_SIZE 更改为   0x8100, 调试程序,  然后得到  “ErrCount equals 1”

    该示例为地址行 A0-A14配置 GPIO。 要增加要访问的地址范围、需要将其他 GPIO 配置为地址行。 有关要配置的地址行和每个芯片选择可用的存储器范围的更多详细信息、请参阅器件 TRM 和数据表。

    [报价用户="user4076930"]我将 ASRAM_CS2_SIZE 更改为   0x40000, 调试程序, CPU 跳转到函数"mem_read_write",并在以下行中永久循环:

    发生这种情况的原因是变量 I 定义为 int (16位)、并且存储器范围远远超出整数范围、导致溢出。

    谢谢

    Vasudha