1

NiosII の OS メールボックスを介して 2D 配列を渡すように求められます。たとえば、次のようになります。

mailbox=OSMboxCreate((void *)0);
INT8U return_code = OS_NO_ERR;
MemoryPartition = OSMemCreate(&array_a[0][0], 3, 4*ARRAY_SIZE*ARRAY_SIZE, &return_code);
void function1()

    INT32S (*array_a)[32];
    array_a = OSMemGet(MemoryPartition, &return_code);
    alt_ucosii_check_return_code(return_code);
    return_code = OSMboxPost(mailbox, (void *)(array_a));
    alt_ucosii_check_return_code(return_code);
void function2()

    INT32S (*data_array)[32];
    data_array = (INT32S *)OSMboxPend(mailbox, 0, &return_code);
    alt_ucosii_check_return_code(return_code);
    for(i=0;i<32;i++){
        for(j=0;j<32;j++){
            data_array[i][j]= 1;
        }
    }
    printf("done");

array_a にメモリを割り当てる必要があるため、ポインターの配列を使用しますが、各ポインターは 1D 配列を指すことができます。ただし、配列が渡されないため、プログラムは正しく機能していません。エラー メッセージは表示されず、「完了」はコンソールに出力されません。コードは 1D 配列 (ポインターの配列ではなく *array_a と *data_array) を渡す作業を行っていますが、どこで間違いを犯したのかわかりません。

4

0 に答える 0