Меня просят передать двумерный массив через почтовый ящик ОС в NiosII, например:
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, поэтому я использую массив указателей, в то время как каждый указатель может указывать на одномерный массив. Однако программа не работает должным образом, так как массив не передается. Сообщение об ошибке не отображается, и сообщение «Done» не печатается на консоли. Код работает над передачей 1D массива (* array_a и * data_array вместо массива указателей), но я не могу найти, где я допустил ошибку.
Задача ещё не решена.
Других решений пока нет …