我的工作是在DSP处理器上实现BFSK算法,需要在LINUX上使用预定义的DSP底层文件来模拟实现。输入数据以浮点数组的形式出现。从输入中逐个提取各个比特。在typdef结构的fprm中生成调制输出,该结构由两个浮点变量(实部和虚部,因为调制数据是复数基带信号)组成。但DSP仿真需要将输出保存到空指针数组中。这不能改变,因为DSP需要它以空指针的形式存在。该结构的定义如下:
typedef struct {
float re;
float im;
}complex_float;我可以使用memcpy将数据复制到空指针中:
sigbuf=(float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));
memcpy(sigbuf, comSig, (bitsPerBlk*sigLen*sizeof(complex_float)));comSig是保存输出的空指针数组,complex_float是保存调制输出的sigbuf数组。问题是我不能访问sigbuf数组的个别值。我也试过了
sigbuf=(complex_float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));但它仍然不起作用。
如果有人能帮助我,那将对我很有帮助。
谢谢,安舒
发布于 2012-06-17 08:53:36
确保目标地址sigbuf正确对齐。例如,DSP可能要求4字节浮点值必须在4字节边界上对齐。memcpy()很可能不会检查对齐,并且会毫无错误地复制单个字节。但是,如果sigbuf没有正确的对齐方式,那么您将无法以浮点型的形式访问内容(即,当数据从内存读取到寄存器中时,数据将被损坏)。
https://stackoverflow.com/questions/11064964
复制相似问题