gpt4 book ai didi

c - mbed uvisor 和以太网接口(interface)溢出

转载 作者:行者123 更新时间:2023-11-30 15:00:24 25 4
gpt4 key购买 nike

我对 mbed 和 uvisor 还很陌生,所以也许我的问题是理解事情是如何工作的。我有一 block NXP FRDM-K64F 板,我正在尝试了解 mbed 和 uvisor。我已经成功编译并运行了在不同机器上运行的任务的一些基本示例。我正在尝试连接到 uvisor 中的其中一个盒子,但有些东西无法正常工作。

这是主要文件代码:

#include "uvisor-lib/uvisor-lib.h"
#include "mbed.h"
#include "main-hw.h"

/* Create ACLs for main box. */
MAIN_ACL(g_main_acl);

/* Enable uVisor. */
UVISOR_SET_MODE_ACL(UVISOR_ENABLED, g_main_acl);
UVISOR_SET_PAGE_HEAP(8 * 1024, 5);

int main(void)
{
printf("----Eup---------\r\n");
DigitalOut led(MAIN_LED);

while (1) {
printf("taka\r\n");
led = !led;

/* Blink once per second. */
Thread::wait(1000);
}
return 0;
}

这是盒子文件中的代码:

#include "uvisor-lib/uvisor-lib.h"
#include "mbed.h"
#include "main-hw.h"
#include "EthernetInterface.h"

// Network interface
EthernetInterface net;

struct box_context {
Thread * thread;
uint32_t heartbeat;
};

static const UvisorBoxAclItem acl[] = {
};

static void my_box_main(const void *);

/* Box configuration
* We need 1kB of stack both in the main and interrupt threads as both of them
* use printf. */
UVISOR_BOX_NAMESPACE(NULL);
UVISOR_BOX_HEAPSIZE(3072);
UVISOR_BOX_MAIN(my_box_main, osPriorityNormal, 1024);
UVISOR_BOX_CONFIG(my_box, acl, 1024, box_context);


static void my_box_main(const void *)
{

while (1) {
printf("tan tan\r\n");
Thread::wait(2000);
}

}

我还没有添加具体的连接代码,只是添加了EthernetInterface对象的定义,我在编译时收到以下错误:

../../../../arm-none-eabi/bin/ld.exe: Region m_data_2 overflowed with stack and heap
collect2.exe: error: ld returned 1 exit status

我尝试过更改堆大小的值,但尚未找到使其工作的方法。我错过了什么?

最佳答案

在主框中,更改 UVISOR_SET_PAGE_HEAP 的值。

主框中有UVISOR_SET_PAGE_HEAP(8 * 1024, 3);和安全框中的 8K 堆以及它为我编译和链接的安全框中的 UVISOR_BOX_STACK_SIZE 堆栈大小(mbed OS 5.3、K64F 上的 GCC ARM)。

关于c - mbed uvisor 和以太网接口(interface)溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42141709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com