TMS320F28377D: 你好,我利用EMIF写入SRAM存在一个问题:当我一次写入32750个数据,程序正常运行,当我一次写入50000个数据,程序在调试界面直接卡死,调试窗口的值不进行更新,写入80000个数据则直接崩溃,是什么问题呢??

Part Number: TMS320F28377D

如题所示,当我一次写入37250个16bit的数据,调试正常如下

当我一次性写入50000个16bit的数据,调试界面如下,调试窗口的变量不进行更新

当我一次性写入80000个16bit的数据,程序直接崩溃,无法开始运行,只能暂停或者结束调试

我的程序流程大概如下:28377对两块SRAM实现乒乓操作:CPU1首先对SRAM1进行写入数据,然后同时CPU2对SRAM2进行数据读取并写入,然后CPU1对SRAM2进行写入数据,同时CPU2对SRAM1进行数据读取并写入,只是一个简单的乒乓操作,代码如下,请问是什么问题呢??很急!!!!辛苦尽快给我参考意见,感谢!!!

CPU1代码

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "device.h"
#include "F28x_Project.h"
#include "board.h"
#include <driverlib.h>
#define ASRAM_CS2_START_ADDR 0x100000//CS2
#define ASRAM_CS3_START_ADDR 0x300000//FPGA
#define ASRAM_CS4_START_ADDR 0x380000
#define data_length 80000//
void data_write(void);
void initEMIFA(void);
void setupEMIF1PinmuxAsync16Bit(void);
EMIF_AsyncTimingParams tparam;
//
uint16_t data_CS2[data_length] = {0};//(Word,16bit)
uint16_t data_CS4[data_length] = {0};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

CPU2代码

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "device.h"
#include "F28x_Project.h"
#include "board.h"
#include <driverlib.h>
#define ASRAM_CS2_START_ADDR 0x100000//CS2
#define ASRAM_CS3_START_ADDR 0x300000//FPGA
#define ASRAM_CS4_START_ADDR 0x380000
#define data_length 80000
EMIF_AsyncTimingParams tparam;
//
uint16_t data_CS2_CPU2[data_length] = {0};//(Word,16bit)
uint16_t data_CS4_CPU2[data_length] = {0};
uint16_t CS2;
uint16_t CS4;
bool status = false;
IPC_MessageQueue_t messageQueue;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX