各位专家!
我在对DDR程序进行调试时,在对结构体指针变量赋初值时,如结构体指针变量DDR_Regs,遇到了一些情况如下:
1、给DDR_Regs初始地址0x21000000,但由于Memory Map中从0x21000000开始的地址只有256个地址空间,远小于DDR_Regs所需分配的地址空间,所以结构体成员有些没有分配到地址,也就没有给予赋值;
2、我们改变DDR_Regs初始地址为0x78000000,有足够的地址空间供DDR_Regs分配,却发现这样虽然有了足够的地址空间,但执行程序却不能给这些内存空间赋值,同时有两个地址分配的错误提示为:Error:line 2045 unexpected token:( ;
3、我们再次改变DDR_Regs初始地址为0xE0000000,同样有足够的分配空间,发现这些地址空间在程序刚开始运行时已经赋了非零初始值,执行完程序,DDR_Regs执行相对应的地址空间也是赋了值的,但没有执行的依旧是刚开始那些非零初始值
4、以上3种情况是基于硬仿真的,但在软仿真时,Expressions都会观察到DDR_Regs地址空间分配错误提示:Error: line 48: unexpected token: 0x21000000 等
基于以上4种情况,请各位帮忙分析一下!
谢谢!
Andy Yin1:
您好,
DDR_Regs定义的就是DDR Controller相关寄存器的结构体,而其在memory map的地址就是从0x21000000开始,你的第一个问题是啥意思?不清楚你后面的修改测试目的是为何,并且也不合理。