最近我们测算发现程序执行到这条语句会卡住不再继续执行下去:system("regrw.out -w 1c71c7c 0x120 > /dev/null\n"); 一旦卡住,会导致运行该语句的进程
CPU占用率达90%以上,大概是每20次左右会出现一次卡死。
0x1c717c对应寄存器:OSD模块 Bitmap Window 1 Y-Position (OSDWIN1YP)。
我们程序是基于Appro IPNC方案Private_IPNC_DM368_1.9.0。
SDK版本:dvsdk_2_10_01_18。
Regrw.out命令的主要源码如下:
regAddr = xstrtoi(argv[2]);
regValue = xstrtoi(argv[3]);
status = CSL_vpssOpen(&gCSL_vpssHndl);
if(status!=OSA_SOK) {
OSA_ERROR("CSL_sysInit()\n");
return status;
}
if(regDump) {
DRV_regDump(regAddr, numRegs, numCols);
} else {
DRV_regWrite(regAddr, regValue);
}
status = CSL_vpssClose(&gCSL_vpssHndl);
测试发现程序是卡死在if(regDump) 之前了,这个函数主要操作是把寄存器的物理地址映射成虚拟地址。
user1369122:
Hi , 不是很清楚你的具体操作。请问和regrw去操作的具体寄存器地址有关吗。我担心你去操作的寄存器的那个模块可能并没有正确的初始化,比如时钟电源都没有正常加上去之类的,这样去读写肯定不行