mirror of https://github.com/ARMmbed/mbed-os.git
Only link in LPC17xx ethernet ISR as needed
Originally the ethernet ISR would be linked in to all mbed-os based firmware because it was named ENET_IRQHandler() so that it would be automatically placed in the FLASH image's interrupt vector table. This meant that programs which made no use of the lwIP stack still pulled in this ISR. This commit changes the name of the routine so that the ISR isn't automatically placed in the interrupt vector table at link time but is instead dynamically placed in the interrupt vector table at runtime when the lwIP stack is initialized. Now the ethernet ISR is only linked in when it is actually needed. Example arm-none-eabi-size output for a simple LED blinking program showing the before and after size results: text data bss dec hex filename 13208 148 7784 21140 5294 LPC1768/HelloWorld.elf text data bss dec hex filename 12700 148 7468 20316 4f5c LPC1768/HelloWorld.elfpull/4112/head
parent
067fe9b0e5
commit
be0bab3f40
|
@ -670,7 +670,7 @@ static err_t lpc_low_level_output(struct netif *netif, struct pbuf *p)
|
|||
* This function handles the transmit, receive, and error interrupt of
|
||||
* the LPC177x_8x. This is meant to be used when NO_SYS=0.
|
||||
*/
|
||||
void ENET_IRQHandler(void)
|
||||
void LPC17xxEthernetHandler(void)
|
||||
{
|
||||
#if NO_SYS == 1
|
||||
/* Interrupts are not used without an RTOS */
|
||||
|
@ -1050,6 +1050,7 @@ err_t eth_arch_enetif_init(struct netif *netif)
|
|||
}
|
||||
|
||||
void eth_arch_enable_interrupts(void) {
|
||||
NVIC_SetVector(ENET_IRQn, (uint32_t)LPC17xxEthernetHandler);
|
||||
NVIC_SetPriority(ENET_IRQn, ((0x01 << 3) | 0x01));
|
||||
NVIC_EnableIRQ(ENET_IRQn);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue