操作指针,向SDRAM地址写值问题

2019-07-20 03:55发布

外部SDRAM地址为0XC0000000 ,16位, 用如下方式读写均正常
void FMC_SDRAM_WriteBuffer(u8 *pBuffer,u32 WriteAddr,u32 n)
{
for(;n!=0;n--)
{
  *(vu8*)(Bank5_SDRAM_ADDR+WriteAddr)=*pBuffer;
  WriteAddr++;
  pBuffer++;
}
}


现使用以下方式操作指针,向SDRAM地址写值:

#define SRAM_BASE_ADDR          0XC0000000UL //SDRAM开始地址

定义两个指针如下:
struct struct_sram* sram_ptr = (struct struct_sram*)SRAM_BASE_ADDR;
struct struct_report* report_tail;

struct struct_sram{
    struct struct_report report_buf[REPORT_SIZE];
};

struct struct_report{
    unsigned short len;
    char buf[REPORT_BUF_SIZE];
};

#define REPORT_SIZE         1000
#define REPORT_BUF_SIZE     300



主函数内,初始化report_tail指针后,对report_tail指针进行偏移操作
report_tail = sram_ptr->report_buf;
while(1)
{
     report_tail += 1;                 
  if (report_tail >= sram_ptr->report_buf+REPORT_SIZE)      
   report_tail -=REPORT_SIZE;  

delay_ms(1000);
}

单步调试时
report_tail+=1运行之后,程序就会挂掉,
这是什么原因,求大神指点




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
HCHDaLeiGe
1楼-- · 2019-07-20 06:59
 精彩回答 2  元偷偷看……
这件事有空再说
2楼-- · 2019-07-20 10:33
HCHDaLeiGe 发表于 2019-1-26 09:17
我看着没什么问题,帮顶

检查这段代码确实没问题,映射指针从SDRAM读数据时候挂掉的
sammy902583
3楼-- · 2019-07-20 14:52
 精彩回答 2  元偷偷看……
这件事有空再说
4楼-- · 2019-07-20 19:12
sammy902583 发表于 2019-1-29 17:08
SDRAM确定可以用吗?
读数据的地方设个断点, 读取0xC0000000这边的memory, 尝试直接用debugger写入, 看 ...

SDRAM可以用,确定用可以读写,用指针从SDRAM中取不了成片数据,会挂掉

一周热门 更多>