之前在网上看资料,在Bulid Option中定义了CHIP_DM642并添加csl库,使用csl2_dat.c模块,但是在运行一段时间后程序跑死在DAT_wait模块中,找了很久没找到原因,由于648不再使用csl,不知道这样能不能用,后来又模仿该c文件重写DAT模块,具体代码见附件,去掉Bulid Option中对642的定义并移除csl模块,但是程序还是跑死,有时在DAT_wait中,有时在_getFreeChannel中(IPR位均为0,无法开辟新通道),若打开TEST定义(中断方式),即利用中断的话程序会跑死出现如下情况,不知道什么原因
结构体定义如下:
//DAT模块数据结构体
typedef struct tDat
{
Int32 segId; //内存段ID,如SDRAMHEAP/ISRAMHEAP
EDMA3_DRV_Handle hEdma; //EDMA3 Driver Handle, used to call all the Driver APIs
CSL_Edma3ccShadowRegsOvly shadow; //DMA Channel Controller Regions Shadow Register
EDMA3_DRV_PaRAMRegs param; //DMA Parameter RAM
Uint16 chId[DAT_CHANNEL_NUM]; //DMA Channel ID, 10 channel run in parallel
Uint8 tcc[DAT_CHANNEL_NUM]; //DMA Channel TCC code
Uint32 mask[2]; //通道状态掩码
Uint32 chIdx; //当前DAT模块使用的通道索引
} tDat;
zhiping liu:
这种不固定位置的死机可能是板子本身抗干扰不行,如果有电机,电机不启动试试,在多几块板子上试试。
xiangfei mi:
回复 zhiping liu:
没有电机啊,只有视频,然后就是DAT模块搬移视频数据