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分配内存,所以我使用指针数组,而每个指针都可以指向一个一维数组。但是,由于未传递数组,因此程序无法正常工作。没有显示错误消息,并且控制台上没有打印“完成”。代码正在传递一维数组(*array_a 和 *data_array 代替指针数组),但我找不到错误的地方。

4

0 回答 0