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) を渡す作業を行っていますが、どこで間違いを犯したのかわかりません。