Skip to content

Commit d8935bb

Browse files
committed
Misc fixes for LPC4088/LPC4088DM:
- Resetting in LPCXpresso IDE did not reset the LCD controller which sometimes could cause strange behaviour - The ROM_LAT bit in the MATRIXARB register must be set in order to prevent a HardFault when debugging - The change of compiler in LPCXpresso IDE to ARM launchpad GCC5 was causing build errors due to multiply defined timeval symbol. - The exporters for LPCXpresso IDE did not set the FPU_PRESENT define for assembler, only for c/c++. This caused very strange behaviour in the RTOS code (e.g. timeouts no longer working, context switches failing etc.)
1 parent bccd6f2 commit d8935bb

File tree

5 files changed

+23
-5
lines changed

5 files changed

+23
-5
lines changed

hal/targets/cmsis/TARGET_NXP/TARGET_LPC408X/LPC407x_8x_177x_8x.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,9 @@ typedef struct
209209
__IO uint32_t EXTPOLAR; /*!< Offset: 0x14C (R/W) External Interrupt Polarity Register */
210210
uint32_t RESERVED6[12];
211211
__IO uint32_t RSID; /*!< Offset: 0x180 (R/W) Reset Source Identification Register */
212-
uint32_t RESERVED7[7];
212+
uint32_t RESERVED7[1];
213+
__IO uint32_t MATRIXARB; /*!< Offset: 0x188 (R/W) Matrix Arbitration Register */
214+
uint32_t RESERVED71[5];
213215
__IO uint32_t SCS; /*!< Offset: 0x1A0 (R/W) System Controls and Status Register */
214216
__IO uint32_t IRCTRIM; /*!< Offset: 0x1A4 (R/W) Clock Dividers */
215217
__IO uint32_t PCLKSEL; /*!< Offset: 0x1A8 (R/W) Peripheral Clock Selection Register */

hal/targets/cmsis/TARGET_NXP/TARGET_LPC408X/system_LPC407x_8x_177x_8x.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,5 +567,15 @@ fpu_init();
567567
SCB->VTOR = 0x00000000 & 0x3FFFFF80;
568568
#endif
569569
#endif
570+
571+
/* Must set ROM_LAT bit in the Matrix Arbitration Register otherwise SPIFI
572+
* initialization will cause debugging to HardFault */
573+
LPC_SC->MATRIXARB |= (1<<16);
574+
575+
/* Reset LCD Controller to prevent strange behavior when doing a partial
576+
* reset (happens when debugging).
577+
*/
578+
LPC_SC->RSTCON0 = 1;
579+
570580
SystemCoreClockUpdate();
571581
}

libraries/net/eth/lwip-eth/arch/TARGET_NXP/lwipopts_conf.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,10 @@
2727
#define MEM_SIZE 16362
2828
#endif
2929

30+
#if defined (TOOLCHAIN_GCC_CR)
31+
/* For LPCXpresso IDE above v8.0.0 to avoid clash with timeval struct */
32+
#include <sys/time.h>
33+
#define LWIP_TIMEVAL_PRIVATE 0
34+
#endif
35+
3036
#endif

workspace_tools/export/codered_lpc4088_cproject.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
7070
<option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
7171
<option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
72-
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DDEBUG -D__CODE_RED " valueType="string"/>
72+
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DDEBUG -D__CODE_RED -DFPU_PRESENT=1 " valueType="string"/>
7373
<option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
7474
<option id="com.crt.advproject.gas.fpu.478766821" name="Floating point" superClass="com.crt.advproject.gas.fpu" value="com.crt.advproject.gas.fpu.fpv4" valueType="enumerated"/>
7575
<inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
@@ -981,7 +981,7 @@
981981
<tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
982982
<option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
983983
<option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
984-
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DNDEBUG -D__CODE_RED " valueType="string"/>
984+
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DNDEBUG -D__CODE_RED -DFPU_PRESENT=1 " valueType="string"/>
985985
<option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
986986
<inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
987987
</tool>

workspace_tools/export/codered_lpc4088_dm_cproject.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<tool id="com.crt.advproject.gas.exe.debug.1277199919" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.debug">
7070
<option id="com.crt.advproject.gas.arch.1079400011" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm4" valueType="enumerated"/>
7171
<option id="com.crt.advproject.gas.thumb.1976113150" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
72-
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DDEBUG -D__CODE_RED " valueType="string"/>
72+
<option id="gnu.both.asm.option.flags.crt.1501250871" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DDEBUG -D__CODE_RED -DFPU_PRESENT=1 " valueType="string"/>
7373
<option id="com.crt.advproject.gas.hdrlib.473313643" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
7474
<option id="com.crt.advproject.gas.fpu.478766821" name="Floating point" superClass="com.crt.advproject.gas.fpu" value="com.crt.advproject.gas.fpu.fpv4" valueType="enumerated"/>
7575
<inputType id="com.crt.advproject.assembler.input.910682278" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
@@ -981,7 +981,7 @@
981981
<tool id="com.crt.advproject.gas.exe.release.579950187" name="MCU Assembler" superClass="com.crt.advproject.gas.exe.release">
982982
<option id="com.crt.advproject.gas.arch.1401271875" name="Architecture" superClass="com.crt.advproject.gas.arch" value="com.crt.advproject.gas.target.cm3" valueType="enumerated"/>
983983
<option id="com.crt.advproject.gas.thumb.1024544278" name="Thumb mode" superClass="com.crt.advproject.gas.thumb" value="true" valueType="boolean"/>
984-
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DNDEBUG -D__CODE_RED " valueType="string"/>
984+
<option id="gnu.both.asm.option.flags.crt.637466836" name="Assembler flags" superClass="gnu.both.asm.option.flags.crt" value="-c -x assembler-with-cpp -D__NEWLIB__ -DNDEBUG -D__CODE_RED -DFPU_PRESENT=1 " valueType="string"/>
985985
<option id="com.crt.advproject.gas.hdrlib.492600365" name="Use headers for C library" superClass="com.crt.advproject.gas.hdrlib" value="com.crt.advproject.gas.hdrlib.newlib" valueType="enumerated"/>
986986
<inputType id="com.crt.advproject.assembler.input.812068162" name="Additional Assembly Source Files" superClass="com.crt.advproject.assembler.input"/>
987987
</tool>

0 commit comments

Comments
 (0)