移植8位机的C的程序<br /> 8位C的读取4个字节的数据<br /> Block0_offset=*((ULONG*)(&SD_Buffer[0x1c6]));<br /> 可能因为在ARM中&SD_Buffer[0x1c6]不是一个4的倍数<br /> 我在IAR调试中就跑到__HaltDAbort错误中去了<br /><br /> 只能改为这个了<br /> Block0_offset=SD_Buffer[0x1c6];<br /> Block0_offset+=SD_Buffer[0x1c7]<<8;<br /> Block0_offset+=SD_Buffer[0x1c8]<<16;<br /> Block0_offset+=SD_Buffer[0x1c9]<<24;<br /><br /> 有没有其他办法呢<br /><br />还有数据结构中这样定义 bpb=(struct bpb710 *)(&SD_Buffer[0x0B]);<br />也跑飞了<br />在32位机器中 定义的struct<br />typedef struct TEST_ST<br />{<br /> unsigned char a;<br /> unsigned long b;<br /> unsigned char c;<br />}S_T;<br /><br /> Uart_Printf("
size of struct:%d",sizeof(S_T));<br /><br />得到的结果是 size of struct:12<br /><br />typedef struct TEST_ST<br />{<br /> unsigned char a;<br /> unsigned char a1;<br /> unsigned long b;<br /> unsigned char c;<br />}S_T;<br /><br />得到的结果是 size of struct:12<br /><br /><br />只要不是连续放置的的字节,都放在长整形里面了 看来<br /><br />我如此定义的数据 bpb=(struct bpb710 *)(&SD_Buffer[0x0B]);<br />就要改成自己写一个程序 慢慢小心的放置了 看来<br />有更好的方法吗?<br /><br /> |
|