您好!
我在使用 SDRAM 的演示板上遇到了一些问题。
1) 1)似乎无法在 SDRAM 存储器中初始化全局变量。 我有一个演示项目 dsk5509test、其中包含源 testsdram.c。
以下是 test_sdRAM.c 源代码:
#include "test_SDRAM.h"
#include
#define buffer_size (20)
uint16_t test = 0xAD;
uint16_t arrayZero[10]={1、2、3、5、6、7、8、9、10};
uint16_t writeBuffer[buffer_size]={0xAD、0xAD、0xAD、0xAD、0xAD};
void testSDRAM(){
uint16_t readBuffer[buffer_size]={0xBEEF};
uint16_t dataCount = 0;
uint16_t * sourceAddr、* deminAddr;
dataCount = 0;
sourceAddr =&writeBuffer[0];
log_printf (&trace、"hello testSDRAM!");
test = 1000;
test++;
dataCount = test;
//sourceAddr =(int *) 0xf0000;
deminAddr = sourceAddr+buffer_size;
//printf ("dataCount =%d"、dataCount);
dataCount = 0;
while (sourceAddr "="" nop");=""
我将其放置在 SDRAM 存储器部分:
SECTIONS
{
.data_ram
{
test_SDRAM.obj/*(.text)*/
}> SDRAM_DATA
}
以下是.tcf 文件中存储器区域 SDRAM_DATA 的定义:
因此、当我尝试调试此代码并观察 writeBuffer 数组而不是{0xAD、0xAD、0xAD、0xAD、0xAD}时 、我会看到下一个结果:
我尝试以不同的方式放置它、它仅在放置在内部 IRAM 存储器中时才起作用。
它可能有什么问题?
2) 2)将.obj 的整个段放入一个输出段时出现故障。
例如、当我尝试以这种方式放置段时:
SECTIONS
{
.data_ram
{
test_SDRAM.obj
}> SDRAM_DATA
}
我得到链接错误:
错误#10255-D:无法将数据输入段"./test_SDRAM.obj (.bss)"放置在文本输出段".data_ram"中
错误#10255-D:无法将数据输入段"./test_sdRAM.obj (.cinit)"放置在 文本输出段".data_ram"中
错误#10255-D:无法在 文本输出段".data_ram"中放置数据输入段"../test_sdRAM.obj (.const:_$P$T0$1)"
错误#10255-D:无法放置文本输出段".data_ram"中的数据输入段。/test_sdRAM.obj (.const:.string)"
但是、当我对以下两个文件执行相同的操作时:
SECTIONS
{
.data_ram
{
test_sdRAM.obj
test_smram2.obj
}> SDRAM_DATA
}
或多个部分、如下所示:
SECTIONS
{
.data_ram
{
test_SDRAM.obj (.const)
test_SDRAM.obj (.cinit)
/* test_SDRAM.obj (.bss)*}
> SDRAM_DATA
}
编译正常。 但是、当我向 链接器文件添加 test_sdRAM.obj (.bss)时、编译器会输出相同的错误。
我应该怎么做才能摆脱这种麻烦?
已将项目添加至存档文件: e2e.ti.com/.../dsk5509_5F00_test.zip
此致、
埃戈尔

