这个问题已经困扰我好久,但论坛上发帖鲜有人回答,而在google也搜索不到相关经验,难道诸位兄弟从来没有遇到过类似问题?希望版主能回答小弟的提问,在线等待。问题如下:
我查阅了多种DSP,发现DSP只能进行16bit的操作,而不能进行8bit字节的操作,所以如果想将51单片机上的程序移植到DSP环境中,就会涉及到数据结构不匹配的问题,就像我们的FAT32文件系统中DBR/DPT等数据结构有字节的定义,有字和双字的定义。这些数据结构的定义已经被完全固定。譬如我们读一个sector到DSP中的ram,那么就由512个字节变为了DSP中的256个字,很显然原本的数据结构在DSP中已经无法在匹配。就像下面的一个结构体:
typedef _peripheral_struct{
BYTE bdata1;
WORD wdata1;
BYTE bdata2;
}peripheral_struct;
当我从该外设读到DSP的时候,因为DSP是按字操作的,所以该数据结构存储在DSP中就变成了两个字。上面数据结构中的WORD就被拆分,高字节和bdata1组成一个字,低字节则和bdata2组成一个字。如果我想在DSP定义同样的一个结构体,很显然得不到我想要的数值。
同样的道理因为DSP只能进行WORD操作的原因,所以在从8bit的外设读进来的数据在执行memcpy和memcmp等操作的时候也会遇到问题。 |