at91rm9200 发表于 2007-12-13 09:19

vxworks 代码错误,谢谢!

LOCAL&nbsp;AT91S_MciDeviceFeatures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features;<br />LOCAL&nbsp;&nbsp;AT91S_MciDeviceDesc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Desc;<br />LOCAL&nbsp;AT91S_MciDevice&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMCI_Device=0;<br /><br />/*-----------------------------------------------*/<br />/*&nbsp;SDCard&nbsp;Device&nbsp;Descriptor&nbsp;Structure&nbsp;Definition&nbsp;*/<br />/*-----------------------------------------------*/<br />typedef&nbsp;struct&nbsp;&nbsp;&nbsp;&nbsp;_AT91S_MciDeviceDesc<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;state;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SDCard_bus_width;<br /><br />}&nbsp;AT91S_MciDeviceDesc,&nbsp;*AT91PS_MciDeviceDesc;<br /><br />/*---------------------------------------------*/<br />/*&nbsp;MMC&nbsp;&&nbsp;SDCard&nbsp;Structure&nbsp;Device&nbsp;Features&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*---------------------------------------------*/<br />typedef&nbsp;struct&nbsp;&nbsp;&nbsp;&nbsp;_AT91S_MciDeviceFeatures<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Card_Inserted;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;(0=AT91C_CARD_REMOVED)&nbsp;(1=AT91C_MMC_CARD_INSERTED)&nbsp;(2=AT91C_SD_CARD_INSERTED)*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Relative_Card_Address;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;RCA*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max_Read_DataBlock_Length;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;2^(READ_BL_LEN)&nbsp;in&nbsp;CSD&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max_Write_DataBlock_Length;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;2^(WRITE_BL_LEN)&nbsp;in&nbsp;CSD*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Read_Partial;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;READ_BL_PARTIAL*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Write_Partial;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;WRITE_BL_PARTIAL*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Erase_Block_Enable;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;ERASE_BLK_EN*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Read_Block_Misalignment;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;READ_BLK_MISALIGN*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Write_Block_Misalignment;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;WRITE_BLK_MISALIGN*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Sector_Size;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;SECTOR_SIZE*/<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;Memory_Capacity;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Size&nbsp;in&nbsp;bits&nbsp;of&nbsp;the&nbsp;device*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;AT91S_MciDeviceFeatures,&nbsp;*AT91PS_MciDeviceFeatures&nbsp;;<br /><br />/*---------------------------------------------*/<br />/*&nbsp;MCI&nbsp;Device&nbsp;Structure&nbsp;Definition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*---------------------------------------------*/<br />typedef&nbsp;struct&nbsp;_AT91S_MciDevice<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;BLK_DEV&nbsp;blkDev;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;drive;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;blkOffset&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91PS_MciDeviceDesc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMCI_DeviceDesc;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;MCI&nbsp;device&nbsp;descriptor*/<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91PS_MciDeviceFeatures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMCI_DeviceFeatures;/*&nbsp;Pointer&nbsp;on&nbsp;a&nbsp;MCI&nbsp;device&nbsp;features&nbsp;array&nbsp;&nbsp;*/<br />}AT91S_MciDevice,&nbsp;*AT91PS_MciDevice;<br /><br />void&nbsp;AT91F_CfgDevice(AT91PS_MciDevice&nbsp;pmmcDev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Init&nbsp;Device&nbsp;Structure*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Relative_Card_Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Card_Inserted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;AT91C_CARD_REMOVED;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Max_Read_DataBlock_Length&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Max_Write_DataBlock_Length&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Read_Partial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Write_Partial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Erase_Block_Enable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Sector_Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Features.Memory_Capacity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Desc.state&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;AT91C_MCI_IDLE;<br />&nbsp;&nbsp;&nbsp;&nbsp;MCI_Device_Desc.SDCard_bus_width&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;AT91C_MCI_SCDBUS;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Init&nbsp;AT91S_DataFlash&nbsp;Global&nbsp;Structure,&nbsp;by&nbsp;default&nbsp;AT45DB&nbsp;choosen&nbsp;!!!*/<br />&nbsp;&nbsp;&nbsp;&nbsp;pmmcDev-&gtpMCI_DeviceDesc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&MCI_Device_Desc;<br />&nbsp;&nbsp;&nbsp;&nbsp;pmmcDev-&gtpMCI_DeviceFeatures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&MCI_Device_Features;<br /><br />}<br /><br /><br />void&nbsp;mmcDevCreate(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;AT91PS_MciDevice&nbsp;pmmcDev;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((pmmcDev&nbsp;=&nbsp;(AT91PS_MciDevice&nbsp;)calloc(sizeof&nbsp;(AT91PS_MciDevice),&nbsp;1))&nbsp;==&nbsp;NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pMCI_Device&nbsp;=&nbsp;pmmcDev;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AT91F_CfgDevice(pmmcDev);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />上面代码中,执行到<br />&nbsp;&nbsp;&nbsp;&nbsp;pmmcDev-&gtpMCI_DeviceDesc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&MCI_Device_Desc;<br />&nbsp;&nbsp;&nbsp;&nbsp;pmmcDev-&gtpMCI_DeviceFeatures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&MCI_Device_Features;<br />系统出错,提示信息如下:<br />Data&nbsp;abort<br />Exception&nbsp;address:&nbsp;0x20013fe8<br />Current&nbsp;Processor&nbsp;Status&nbsp;Register:&nbsp;0x20000013<br /><br />trcStack&nbsp;aborted:&nbsp;error&nbsp;in&nbsp;top&nbsp;frame<br />shell&nbsp;restarted.<br /><br /><br />请问,这边可以直接给指针赋值?谢谢!
页: [1]
查看完整版本: vxworks 代码错误,谢谢!