mbed lib with startup delay fixed for Nucleo401RE
Fork of mbed-src by
Revision 23:8d50de55f208, committed 2013-09-16
- Comitter:
- mbed_official
- Date:
- Mon Sep 16 16:15:04 2013 +0100
- Parent:
- 22:dbd009839d5e
- Child:
- 24:75304dd5f5fb
- Commit message:
- Synchronized with git revision 96ea3db1b37e4f615584fba010d46f37056474ed
Changed in this revision
--- a/common/retarget.cpp Fri Sep 13 14:22:58 2013 +0100 +++ b/common/retarget.cpp Mon Sep 16 16:15:04 2013 +0100 @@ -439,13 +439,20 @@ #undef errno extern "C" int errno; +// For ARM7 only +register unsigned char * stack_ptr __asm ("sp"); + // Dynamic memory allocation related syscall. extern "C" caddr_t _sbrk(int incr) { static unsigned char* heap = (unsigned char*)&__end__; unsigned char* prev_heap = heap; unsigned char* new_heap = heap + incr; +#ifdef __get_MSP if (new_heap >= (unsigned char*)__get_MSP()) { +#else + if (new_heap >= stack_ptr) { +#endif errno = ENOMEM; return (caddr_t)-1; }
--- a/targets/cmsis/TARGET_NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/LPC2368.ld Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/cmsis/TARGET_NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_ARM/LPC2368.ld Mon Sep 16 16:15:04 2013 +0100 @@ -143,6 +143,7 @@ . = ALIGN( 8 ) ; __heap_start__ = . ; end = . ; + __end__ = . ; .stab 0 (NOLOAD) : { *(.stab) } .stabstr 0 (NOLOAD) : { *(.stabstr) }
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/analogin_api.c Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/analogin_api.c Mon Sep 16 16:15:04 2013 +0100 @@ -42,7 +42,7 @@ void analogin_init(analogin_t *obj, PinName pin) { obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC); - if (obj->adc == (uint32_t)NC) { + if (obj->adc == (ADCName)NC) { error("ADC pin mapping failed"); }
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/analogout_api.c Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/analogout_api.c Mon Sep 16 16:15:04 2013 +0100 @@ -25,7 +25,7 @@ void analogout_init(dac_t *obj, PinName pin) { obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC); - if (obj->dac == (uint32_t)NC) { + if (obj->dac == (DACName)NC) { error("DAC pin mapping failed"); }
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/ethernet_api.c Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/ethernet_api.c Mon Sep 16 16:15:04 2013 +0100 @@ -697,7 +697,7 @@ if(receive_idx == -1) { receive_idx = LPC_EMAC->RxConsumeIndex; } else { - while(!(rxstat[receive_idx].Info & RINFO_LAST_FLAG) && (receive_idx != LPC_EMAC->RxProduceIndex)) { + while(!(rxstat[receive_idx].Info & RINFO_LAST_FLAG) && ((uint32_t)receive_idx != LPC_EMAC->RxProduceIndex)) { receive_idx = rinc(receive_idx, NUM_RX_FRAG); } unsigned int info = rxstat[receive_idx].Info; @@ -713,7 +713,7 @@ LPC_EMAC->RxConsumeIndex = receive_idx; } - if(receive_idx == LPC_EMAC->RxProduceIndex) { + if((uint32_t)receive_idx == LPC_EMAC->RxProduceIndex) { receive_idx = -1; return 0; } @@ -762,7 +762,7 @@ void *pdst, *psrc; int doff = 0; - if(receive_idx == LPC_EMAC->RxProduceIndex || receive_idx == -1) { + if((uint32_t)receive_idx == LPC_EMAC->RxProduceIndex || receive_idx == -1) { return 0; }
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/pinmap.c Mon Sep 16 16:15:04 2013 +0100 @@ -17,7 +17,7 @@ #include "error.h" void pin_function(PinName pin, int function) { - if (pin == (uint32_t)NC) return; + if (pin == (PinName)NC) return; uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 4; @@ -28,7 +28,7 @@ } void pin_mode(PinName pin, PinMode mode) { - if (pin == (uint32_t)NC) { return; } + if (pin == (PinName)NC) { return; } uint32_t pin_number = (uint32_t)pin - (uint32_t)P0_0; int index = pin_number >> 5;
--- a/targets/hal/TARGET_NXP/TARGET_LPC23XX/pwmout_api.c Fri Sep 13 14:22:58 2013 +0100 +++ b/targets/hal/TARGET_NXP/TARGET_LPC23XX/pwmout_api.c Mon Sep 16 16:15:04 2013 +0100 @@ -57,7 +57,7 @@ void pwmout_init(pwmout_t* obj, PinName pin) { // determine the channel PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM); - if (pwm == (uint32_t)NC) + if (pwm == (PWMName)NC) error("PwmOut pin mapping failed"); obj->pwm = pwm;