LPC54113 Cold reboot fails

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC54113 Cold reboot fails

390 Views
Aghosh993
Contributor I

I am attempting to bring up a custom PCB designed around an LPC54113 microcontroller. As far as I'm aware, this chip is functionally identical to the LPC54114 chip on the LPCXpresso board (I understand the 54114 also has an additional CM0 core but I am not using this coprocessor.)

I am using the arm-none-eabi-gcc toolchain with startup code that I got from NXP's SDK builder (along with NXP's linker script.) I am using a custom Makefile to compile my C project using these resources, and I am flashing/debugging using a Segger J-Link.

My major issue revolves around the fact that somehow I am never able to cold-reboot the processor and have it run the firmware I place in flash. Note that this is unique to my experience on the LPC54113 processor. I have used the identical setup (Makefile, SDK generator-based startup ASM, Linker) to build a similar fork of my software for the LPC54114 on the LPCXpresso54114 eval board, and a cold reset works just fine.

I am tearing my hair out as to what else I can do to resolve this, and would appreciate a pointer.

0 Kudos
Reply
2 Replies

384 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

If you want  LPC54113 to run in standalone mode, You have to connect the PIO0_31 pin to high with an external 10K ohm pull-up resistor after Reset so that the LPC54113 can sample the pin logic high and LPC54113 can run from flash directly.

In conclusion, Pls check the PIO0_31 pin logic on your schematics.

Hope it can help you

BR

XiangJun Rong

I copy the pin from UM10914.pdf

xiangjun_rong_0-1669002268487.png

 

0 Kudos
Reply

371 Views
Aghosh993
Contributor I

Hi, thanks for the reply.

Yes - the boot/ISP pins were some of the first things I checked when having this issue. I have verified PIO0_31 is high and also installed an external pull-up to rule this out (and I believe the MCU also internally pulls this pin up to enforce sane default behavior of booting from flash anyway, so this really shouldn't be a factor.)

I have since been able to fix this issue by rebasing my code to simply use the ARM-developed generic linker script and startup code for the Cortex-M4 platform. This is distributed as a part of the GCC arm-none-eabi toolchain within the "share" folder and with only minor modification to allow for the LPC54113 peripheral IRQs worked out of the box. While I would love to diff the NXP startup/linker code vs. the ARM generic code, I don't really have the resources to do this.

In future I would highly recommend to NXP and other vendors that whenever possible, "upstream" code such as that already distributed by ARM as part of open-source compilers be utilized and actually tested to avoid wasting customer time. Thanks.

0 Kudos
Reply