2017-02-09 13 views
0

私はmbedとuvisorには新しく、多分私の問題は物事の仕組みを理解することです。私はmbedとuvisorについて学びたいと思っているNXP FRDM-K64Fボードを持っています。私は、別のボックスで実行されているタスクのいくつかの基本的な例を実行して、正常にコンパイルしました。私はuvisorのボックスのネット1に接続しようとしていますが、何かが正しく動作していません。mbed uvisorとEthernetInterfaceがオーバーフローしました

これは、メインのファイルコードです:

#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 

私はchangiを試しましたヒープサイズの値を設定していますが、動作させる方法が見つかりませんでした。私は何が欠けていますか?

答えて

1

メインボックスで、UVISOR_SET_PAGE_HEAPの値を変更します。

メインボックスにUVISOR_SET_PAGE_HEAP(8 * 1024, 3)と。セキュアボックスには8Kのヒープがあり、セキュアボックスにはスタックサイズのUVISOR_BOX_STACK_SIZEが格納されています(mbed OS 5.3、GCC ARM on K64F)。

関連する問題