打印

一段DSP代码,两个问题,敬请指点

[复制链接]
1745|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ahong007|  楼主 | 2009-3-6 16:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一段DSP代码,两个问题,敬请指点


Uint16 data_buff[256]={0x1234,0x5678,0xaa55,0x55aa};
Uint16 FAT32data_buff[512];
unsigned long lb2bb(unsigned char *dat,unsigned char len);
void main()
{
   Uint32 i, temp=0;
   unsigned char BPB_temp=0x00;
   struct FAT32_Init_Arg *arg;
   struct FAT32_BPB *bpb=(struct FAT32_BPB *)(FAT32data_buff);
   CSL_init();
 
    SdRead_Sector(temp,data_buff);  
 
    asm(" nop ");

 if(FAT32data_buff[0]==0xeb && FAT32data_buff[2]==0x90)
    asm(" nop ") ;
    BPB_temp=lb2bb((bpb->BPB_FATSz32),4);
    arg->FATsectors      =BPB_temp;                                
 asm(" nop ");                                                      A处
 arg->FirstDirClust   =lb2bb((bpb->BPB_RootClus)   ,4);
 asm(" nop ");
 arg->BytesPerSector  =lb2bb((bpb->BPB_BytesPerSec),2);                B处 
 asm(" nop ");             //每扇区字节数
 arg->SectorsPerClust =lb2bb((bpb->BPB_SecPerClus) ,1);                 C处
 asm(" nop ");
 arg->FirstFATSector  =lb2bb((bpb->BPB_RsvdSecCnt) ,2)+arg->BPB_Sector_No;//第一个FAT表扇区
 asm(" nop ");

1    程序执行到A处,BPB_temp类型为unsigned char ,数值0x792,而结构体的arg->FirstDirClust类型为unsigned int ,数据值变为0x1C12,不是所希望的0x792,不知道怎么回事,请指点一下。
2    程序执行A,B,都没有问题,但是执行到C就抛飞,与硬件仿真器自动断开,lb2bb在A和B都没有问题而在C处怎么存在问题?
3    Arg和bpb都是512字节的变量,CMD中设置-heap大小为1000字节。

相关帖子

沙发
hitajian| | 2009-3-9 17:52 | 只看该作者

FAT32_Init_Arg

   struct FAT32_Init_Arg *arg;

看起来像是一个FAT32的初试化参数表, 贴出的代码里面
我只看到   " struct FAT32_Init_Arg *arg;"
那么只是说明arg是指向一个结构体"FAT32_Init_Arg"的指针,
此时arg的值是不确定的.
指向别的数据区域里,结果自然会不对.

使用特权

评论回复
板凳
r_jw| | 2009-3-10 10:51 | 只看该作者

回复

文件系统数据结构中定义的是8位,如果DSP是16时char型数据就占用一个地址,32位时,数据接口的宽度为16位也会占用一个地址。char型数据运算前清掉高8位就可以。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

120

主题

337

帖子

7

粉丝