I am trying to use the target LPC55S6X with a Arm Cortex-M33 on the ChipWhisperer Pro UFO Board (CW308_LPC55S6X).
When using the jupyter notebook interface, we usually do something like:
prog = cw.programmers.STM32FProgrammer # or XMEGAProgrammer, etc.
cw.program_target(scope, prog, firmware_path)
But for the LPC55S6X, I do not see which programmer I should use among those available. Is there any tutorial with this target board that I missed?
Besides, I use the same UFO board configuration as the one I used for the STM32F3 target (which is detailed below), as I did not find information regarding this target. Please let me know if anything is incorrect.
You’ll need to use an external JTAG programmer for that target. I haven’t programmed that target personally, but anything that works with OpenOCD should be able to do it.
As for board setup, it should be pretty similar to the F3. The only major difference is that this target requires a 1.2V VCC, meaning you’ll need the 1.2V LED to be illuminated on the CW308.
Thank you for your reply.
I am not familiar with JTAG programming. I have looked around a bit, and still have some questions. From what I understand, the steps are following (using mainly this page):
On the CW308, use jumper wires to connect the following pins:
J5 Pin 12 (SCK) → J8 Pin 6 (J_TCK)
J5 Pin 18 (PDID) → J8 Pin 5 (J_TMS)
J5 Pin 13 (MISO) → J8 Pin 4 (J_TDO)
J5 Pin 14 (MOSI) → J8 Pin 3 (J_TDI)
(source: here)
Question: the tutorial states that these connections are for the STM32F3 board; are they the same for any board using JTAG, in particular the LPC55S6x?
Run the following commands:
import chipwhisperer as cw
scope = cw.scope()
scope.enable_MPSSE(1)
Create a file myconfigfile.cfg with the following content:
I’ll have to look into this. It looks like OpenOCD support for this target is currently in development, and I’ve seen PyOCD recommended as well, so there might be a few different options.
Our JTAG implementation might not work with this target - it’s just a bitbanged emulation of an FTDI chip, so lots of things aren’t really right with regards to frequency or meeting the requirements for buffers/commands. You may need a third party JTAG programmer.
Do you have any update on this?
Do you know if there is a documented way of programming this target board in the current project state, or if someone managed to do it recently?
I have just tried to program the target board using the OpenOCD patch. However, when running the ‘openocd -f lpc_configfile.cfg’, I get the following output and warning:
$ openocd -f lpc_config_file.cfg
Open On-Chip Debugger 0.12.0+dev-00634-g23c33e1d3-dirty (2024-10-10-15:03)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : FTDI SWD mode enabled
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 1000 kHz
Warn : Haven't made progress in mpsse_flush() for 2002ms.
Warn : Haven't made progress in mpsse_flush() for 4004ms.
Warn : Haven't made progress in mpsse_flush() for 8004ms.
Warn : Haven't made progress in mpsse_flush() for 16002ms.
Warn : Haven't made progress in mpsse_flush() for 32005ms.
Warn : Haven't made progress in mpsse_flush() for 64009ms.
And so on…
Is it related to the remark you made in your last post about the (external) debugger? I did not understand what it meant actually…
Incidentally, do you know how we can stop this openocd command properly? Ctrl+C doesn’t work, neither does kill (without -9), and I am afraid to make things go wrong if I brutally disconnect the chip/force kill the command…
What was meant was that you’ll need a commercial programming tool such as Segger J-Link (which we have confirmed to work).
Ok, thank you. It’s just that from Alex’s response, I more or less understood that using the OpenOCD patch he mentioned could be sufficient to have it work without a third party tool.