从pc端发送数据到DSP的程序。定义了数据格式如下
typedef struct baohead//包头
{
int size;
int id;
int recvsize;
}ElemType;
ElemType datahead;
struct recvbuf//包格式
{
ElemType head;//包头
char buf[1024];//存放数据的变量
int bufSize;//存放数据长度的变量
};
struct recvbuf data,*pdata;
PC端VC++ 断点运行,显示了发送数据如下。

我主要测试了包的头文件的这两个参数:Size=0x00010436=66614;id=0x00000001;
DSP端断点运行在变量观察窗口和内存分别查看了接收到的数据


为了方便观察,在CCS内存观察窗内,我选择了Hex 8 bit 查看了内容,跟PC端发送的是一致的。但是在DSP程序中打印了这两个变量值
printf("id=%d\n",pdata->head.id);
printf("size=%d",pdata->head.size);
得到的结果却是:id=65537 size=70691714
也就是说DSp是这样读取数据的,以4字节为单位读取。size=0x0436AB82;id=0x00010001;也就是按照CCS中Hex 32 bit – TI Style这种方式读取的,如下图。

请问我如何操作才能得到想要的结果,也就是Size=0x00010436=66614;id=0x00000001;还有就是CCS变量观察窗口为什么给出了正确的结果,它的取址是单字节取址?
PS:我试了下#pragma DATA_SECTION (pdata,"my_sect")
由于该程序是NDK中helloworld的例程改编的。它使用了BIOS,没有.cmd文件,我试着硬加上了一个cmd文件。
cmd文件内容如下:
MEMORY
{
PAGE 1 : spacename : origin= 0x0020B628,length=0x410
}
SECTIONS
{
.my_sect :{} >spacename PAGE 1
}
出现了一个警告:creating aoutput section "my_sect" without a SECTIONS spceification.
最后结果也没有任何变化。 能具体说下,我这样做错在哪儿了么。pdata指针指向的内容并没有出现在指定的0x0020B628 内存中。或者有没有其他方法,能够使数据地址默认是4的倍数啊。 感觉编译器应该会自动处理的啊。。 郁闷中