Dear Team,
My customer is looking for a way to flash Kinetis MCU with MCU-Link probe using a command line but he does not want to install our mcuxpresso ide on his machine (PC) in order to flash his image (.bin file).
could you please advise if there is another method to flash (.bin/.hex) into NXP MCU (via command line method) without the need to install mcuxpresso ide?
Waiting for your kind feedback, Many thanks.
Shai
已解决! 转到解答。
You could use the OpenOCD version, but this is not an officially supported NXP code base, and will disable several features (like power measurement, SWO profiling, etc.) if you use it. We introduced a new tool called LinkServer (https://nxp.com/linkserver) in March this year, and this enables you to program a target from the command line. It works with MCU-Link, LPC-Link, LPC-Link2, LPC11U35 based and NXP delivered OpenSDA implementations.
Also see this article about it: https://mcuoneclipse.com/2023/05/14/linkserver-for-microcontrollers/
You could use the OpenOCD version, but this is not an officially supported NXP code base, and will disable several features (like power measurement, SWO profiling, etc.) if you use it. We introduced a new tool called LinkServer (https://nxp.com/linkserver) in March this year, and this enables you to program a target from the command line. It works with MCU-Link, LPC-Link, LPC-Link2, LPC11U35 based and NXP delivered OpenSDA implementations.
Also see this article about it: https://mcuoneclipse.com/2023/05/14/linkserver-for-microcontrollers/
Hi @shai_b
In user manual NXP mentioned that "MCU-Link’s VCOM feature can be used with serial terminal emulation programs such as PuTTY and TeraTerm."
Hi @ErichStyger,
Thank you so much for your details answer, I got over it but did not understand how to do flash only .bin/.hex file (not .elf for debug).
I need some simple instructions for how to program/flash the MKV31 by using lite tool (we don't want that end customer support engineer will need to Install the MCUexpresso just updating the MCU on the field).
We sent to the field the MCU-LINK and looking for a simpler solution.
Waiting for your kind feedback, Thanks a lot.
KR,
Shai
MCU-Link (non Pro version) with OpenOCD...
D:\>OpenOCD\bin\openocd -c "adapter driver cmsis-dap" -f "target\klx.cfg" -c "program fb.hex verify reset exit"
Open On-Chip Debugger 0.11.0 (2021-10-16) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "swd". To override use 'transport select <transport>'.
Info : add flash_bank kinetis klx.pflash
Info : CMSIS-DAP: SWD Supported
Info : CMSIS-DAP: JTAG Supported
Info : CMSIS-DAP: FW Version = 1.10
Info : CMSIS-DAP: Serial# = XXXXXXXXXX
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 1000 kHz
Info : SWD DPIDR 0x2ba01477
Info : klx.cpu: hardware has 2 breakpoints, 2 watchpoints
Info : starting gdb server for klx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Error: DP initialisation failed
Info : SWD DPIDR 0x2ba01477
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x00004096 msp: 0x1fff8400
Info : SWD DPIDR 0x2ba01477
Error: Failed to read memory at 0x40048024
Info : Kinetis K32L2A31 detected: 2 flash blocks
Info : 2 PFlash banks: 256k total
Info : Disabling Kinetis watchdog (initial WDOG_CS 0x00002180)
** Programming Started **
Info : Padding image section 0 at 0x00000008 with 1016 bytes
Info : Flash write discontinued at 0x00000410, next section at 0x00001000
Warn : MAXADDR1 0x20 check failed, please report to OpenOCD mailing list
Info : This device supports Program Longword execution only.
Info : FOPT requested in the programmed file differs from current setting, set 'kinetis fopt 0x3d'.
Info : Trying to re-program FCF.
Info : This device supports Program Longword execution only.
Info : This device supports Program Longword execution only.
** Programming Finished **
** Verify Started **
** Verified OK **
** Resetting Target **
Error: DP initialisation failed
shutdown command invoked
@jh0 ,
Thanks for your input, I will give OpenOCD a try.
it looks like the most suitable solutions.
@ErichStyger, The customer actually uses a PC to update his MCU but he needs a script style method, and using such as PEMicro Device is out of the picture at this point.
Anyway, thanks a lot to both of you for your effort and support.
Kind regards,
Shai
Hi @shai_b ,
what we use for this in the field is a flasher (see https://mcuoneclipse.com/2016/04/02/flashing-many-arm-boards-without-a-host-pc/
I hope this helps,
Erich
Hi @shai_b ,
You simply could use a MCU-Link Pro (https://mcuoneclipse.com/2021/10/17/new-mcu-link-pro-debug-probe-with-energy-measurement/ ), program it with the J-Link firmware and use the J-Link tools in command line mode or without any IDE (see https://mcuoneclipse.com/2015/03/25/command-line-programming-and-debugging-with-gdb/ ). This is what I would recommend.
If you want to use the McuLink (non-Pro): it uses a LinkServer which (at least as of today) does not support a gdb server. But with some tweaking (see https://community.nxp.com/t5/MCUXpresso-General/Use-mcuxpresso-linkserver-debug-via-command-line/td-... ) you should be able to use it that way too.
I hope this helps,
Erich