如題,我的開發平台為Devkit8500(DM3700)
我的想法是,在ARM端下,先用fopen去讀一個txt檔 然後命名為number_array的矩陣,然後得到number_array的物理位置,並將位置給DSP,讓DSP來去做運算
程式碼如下:
MYFACEDETECTION_Handle hMYFACEDETECTION = NULL;
IMGENC1_Params MYFACEDETECTION_params = MYFACEDETECTION_Params_DEFAULT;
IMGENC1_DynamicParams MYFACEDETECTION_dynParams = MYFACEDETECTION_DynamicParams_DEFAULT;
Engine_Handle hEngine = NULL;
Buffer_Handle hMYFACEDETECTION_InBuf;
Buffer_Handle hMYFACEDETECTION_DstBuf;
Buffer_Attrs myfacedetection_bufAttrs = Buffer_Attrs_DEFAULT;
XDAS_Int8 *inPtr;
XDAS_Int8 *outPtr;
int bufSize;
int j;
int *number_array;
number_array = (int *)malloc(1*sizeof(int));
XDAS_Int8 *buf;
Uint32 physAddr;
int Bufsize_face = 1;
/* Initialize Codec Engine runtime */
CERuntime_init();
/* Initialize Davinci Multimedia Application Interface */
Dmai_init();
/* Open the codec engine */
hEngine = Engine_open(engineName, NULL, NULL);
if (hEngine == NULL) {
printf("Failed to open codec engine %s\n", engineName);
exit(-1);
}
/* Create the MYFACEDETECTION encoder */
hMYFACEDETECTION = MYFACEDETECTION_create(hEngine, "myfacedetection", &MYFACEDETECTION_params, &MYFACEDETECTION_dynParams);
if (hMYFACEDETECTION == NULL) {
printf("Failed to create encoder: %s\n", "MYFACEDETECTION");
exit(-1); }
/* Create an input buffer*/
bufSize = 1;
hMYFACEDETECTION_InBuf = Buffer_create(bufSize, &myfacedetection_bufAttrs);
/* Create an output buffer*/
bufSize = 1;
hMYFACEDETECTION_DstBuf = Buffer_create(bufSize, &myfacedetection_bufAttrs);
//number_array的值為 2
FILE *fid; fid = fopen("number.txt", "r");
for(j = 0 ; j < 1 ; j++)
{
fscanf(fid, "%d",&number_array[j]);
}
fclose(fid);
/* Allocate a large block of physically contiguous memory for our "alg heap" */
buf = (XDAS_Int8 *)Memory_contigAlloc(Bufsize_face, number_array);
/* Convert virtual address to physical address. */ physAddr = Memory_getBufferPhysicalAddress(buf, Bufsize_face, NULL);
/* Put values into input buffer */
inPtr = Buffer_getUserPtr(hMYFACEDETECTION_InBuf);
inPtr[0] = physAddr;
/* Run MYFACEDETECTION */
if (MYFACEDETECTION_process(hMYFACEDETECTION, hMYFACEDETECTION_InBuf, hMYFACEDETECTION_DstBuf) < 0) {
printf("Failed to encode video buffer(MYFACEDETECTION)\n");
exit(-1);
}
/*take out value */
outPt r= Buffer_getUserPtr(hMYFACEDETECTION_DstBuf);
printf("added value is %d\n",outPtr[0]);
free(number_array);
在DSP的部分是 將得到的數值加1
但是得到的結果卻不是為3
想請問是否在程式碼部分有寫錯,還是說有需要額外呼叫的函式,謝謝您。
Steven Lin1:
頂一下,有人可以幫忙嗎,謝謝各位
TI中文支持网

