Content originally posted in LPCWare by Tobene on Wed Mar 11 08:56:06 MST 2015
I searched the whole day for solutions, but i didn´t find the right thing.
I developed a board based on a LPC11E67 (64pin). The environment for developing is emIDE with the SEGGER debugger used via SWD. So far everything works fine in debug-mode. But when I wondered why the Program doesn´t stay permanent in flash i discovered some things I don´t understand.
I did not take care of the ISP-pin during my board design. So the PIO0_1-pin was used as digital output without any pull-up or pull-down resistor. The external crystal (10MHz) startet and the PLL could be configured. This is in debug-mode.
In the SEGGER GDBServer Window I can see that the program is written to address 0x00000000. So the program should stay in flash. But when I power up the board without the debugger nothing happens.
Even when I flash the controller with the SEGGER command line tool and read the flash back. I can see that the 4 bytes beginning on address 0x1C were changed. So I think that the checksum should be correct and the program is "valid".
When I attach a pull-up Resistor to ISP pin PIO0_1 then nothing happens even in debug mode.
The programs stops here: In "Chip_SetupXtalClocking()"; it stops at
/* Dead loop on fail */
"while (resp[0] != PLL_CMD_SUCCESS) {}." -> So the PLL does not lock
When I use to setup with IRC, it works again in debug-mode. But still the same Problem, that the controller does not start up without debugger for stand-alone mode.
I am using the LPCopen Library 2.11 which is recommended for LPC11U67 and LPC11E67.
But even if I set up the Registern by myself it stops while waiting for the PLL locked.
I never used ARM-controllers before.
So the questions are:
Why doesn´t the PLL work when the ISP Pin PIO0_1 is at high-level?
Why doesn´t the program stay in the flash?
thanks for any kind of help