diff --git a/bsp/lpc176x/emac.c b/bsp/lpc176x/emac.c index 235a72df280d99e77919f91eef4297dcfe785f7f..8d1c370ec1dbcf2b1183801e71809949add5da72 100644 --- a/bsp/lpc176x/emac.c +++ b/bsp/lpc176x/emac.c @@ -29,8 +29,14 @@ void ENET_IRQHandler(void) { rt_uint32_t status; + /* enter interrupt */ + rt_interrupt_enter(); + status = LPC_EMAC->IntStatus & LPC_EMAC->IntEnable; + /* Clear the interrupt. */ + LPC_EMAC->IntClear = status; + if (status & INT_RX_DONE) { /* Disable EMAC RxDone interrupts. */ @@ -44,6 +50,9 @@ void ENET_IRQHandler(void) /* release one slot */ rt_sem_release(&sem_slot); } + + /* leave interrupt */ + rt_interrupt_leave(); } /* phy write */ diff --git a/bsp/lpc176x/startup.c b/bsp/lpc176x/startup.c index dce89005ab218a61492a2e396c85e2d6aa51d54d..b517e64eca8b02bdcc9edae610f2a32627f4cc7b 100644 --- a/bsp/lpc176x/startup.c +++ b/bsp/lpc176x/startup.c @@ -85,12 +85,12 @@ void rtthread_startup(void) #ifdef RT_USING_HEAP #ifdef __CC_ARM - rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)0x10004000); + rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)0x10008000); #elif __ICCARM__ - rt_system_heap_init(__segment_end("HEAP"), (void*)0x10004000); + rt_system_heap_init(__segment_end("HEAP"), (void*)0x10008000); #else /* init memory system */ - rt_system_heap_init((void*)&__bss_end, (void*)0x10004000); + rt_system_heap_init((void*)&__bss_end, (void*)0x10008000); #endif #endif