AnsweredAssumed Answered

LPCOpen 2_12 for LPC11U68 is broken

Question asked by Fco. Javier Rodriguez G on Jul 1, 2017
Latest reply on Aug 4, 2017 by Fco. Javier Rodriguez G

This week I bought the LPC11U68 ExpressoBoard from NXP, and then I downloaded the lpcopen_2_12_lpcxpresso_nxp_lpcxpresso_11u68.zip bundle. I also downloaded and installed the mcuxpressoide 10.0.0_344 IDE for my LinuxMint 18.2 box.

 

The freertos_blinky demo (in fact, all demos) refused to be compiled because a problem with building the chip library. There were two major problems:

 

1. A mismatch between a declaration and definition in a system function

../src/gpio_11u6x.c:96:6: error: conflicting types for 'Chip_GPIO_SetPortDIR'

 

It's easy to figure out what's going on if you look at the original declaration and definition

void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask, bool outSet);

void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pinMask, bool outSet) {}

 

After fixing it in the function's definition (uint32_t) a new problem shows up.

 

2. A close brace in a system function

../src/syscon_11u6x.c: In function 'Chip_SYSCTL_SetPinInterrupt':
../src/syscon_11u6x.c:106:1: error: expected declaration or statement at end of input

 

In ../src/syscon_11u6x.c:61 there is this function definition:

void Chip_SYSCTL_SetPinInterrupt(uint32_t intno, uint8_t port, uint8_t pin)
{
  if (port == 0) {
    /* Pins P0.1 to P0.23 only */
    LPC_SYSCTL->PINTSEL[intno] = (uint32_t) pin;
  } else {
    /* P1.1 to P1.31 and P2.0 to P2.7 */
    LPC_SYSCTL->PINTSEL[intno] = (uint32_t) ((port - 1) * 32 + pin + 24);
  }

 

That's not a typo! Chip_SYSCTL_SetPinInterrupt() doesn't have a close brace!!!!! Somebody forgot to close the function, and of course, to test the whole bundle.

 

 

I've been using the NXP tools for years, so it took me few minutes to figure out what the problems were and then fixed them, but some philosophical questions have arose:

 

1.- Did I downloaded a wrong bundle? It was the most recent I found, however, I could overlooked a newer one.

 

2.- If this is the most recent release: Did nobody note this problem in years?

 

3.- If this is the most recent release: What can I do so that a newer fixed release is build and share by NXP? It will be annoying for me and other programmers to fix the problems anytime a new workspace is created.

 

4.- This one is not so important: FreeRTOS is currently in release 9.0.0, and the bundle is including the 7.1 (and so many other bundles for other chips as well), so how the newest FreeRTOS release can be included in the bundles?

 

 

In the sake of making life easier for me and other programmers in the near future, I've attached the fixed bundle. It works as expected in LinuxMint 18.2. 

 

Thanks!!

Original Attachment has been moved to: lpcopen_2_12_lpcxpresso_nxp_lpcxpresso_11u68_fixed.zip

Outcomes