I’m testing Freedom board with OpenOCD and VSProg following the instruction from this message:
http://tech.groups.yahoo.com/group/versaloon/message/347
# vsprog -skinetis -ms -I main.elf -o w VSProg 1.0 svn: CopyRight(c) 2008-2010 by SimonQian <SimonQian@SimonQian.com> URL: http://www.SimonQian.com/en/Versaloon mail: SimonQian@SimonQian.com Info: Chip name undefined, try auto-detecting. Info: Versaloon(0x33)by Simon(compiled on Oct 25 2011) Info: USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006 Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Info: CORTEX-M0(+) r0p0 processor detected Info: CPUID = 0x410CC600 Info: KINETIS series: KL family Info: KINETIS chip: KL25 Info: KINETIS device die number: 09 Info: KINETIS device revision number: 01 Info: KINETIS sram size: 16384 Info: KINETIS flash size: 128K Info: KINETIS pin number: 80 Info: Chip-id read is 0x25151486. Info: Auto-detect signature is 0x25151486 Error: kinetis auto-detect failed. Error: Fail to initialize target. Error: Fail to run command: prepare.
To fix this first issue just add this config to kinetis.xml:
<chip name="kl25z128frdm"> <chip_id>0x25151486</chip_id> <program_mode>js</program_mode> <app_default>0xFF</app_default> <app_addr>0x00000000</app_addr> <app_seg>0</app_seg> <app_page_size>1024</app_page_size> <sram_addr>0x20000000</sram_addr> <uid init="0xFF" bytesize="12" mask="0xFFFFFFFF:0xFFFFFFFF:0xFFFFFFFF" format="%4x%4x%4x"></uid> </chip>
Now it will report flash error:
# vsprog -skinetis -ms -I main.elf -o w VSProg 1.0 svn: CopyRight(c) 2008-2010 by SimonQian URL: http://www.SimonQian.com/en/Versaloon mail: SimonQian@SimonQian.com Info: Chip name undefined, try auto-detecting. Info: Versaloon(0x33)by Simon(compiled on Oct 25 2011) Info: USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006 Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Info: CORTEX-M0(+) r0p0 processor detected Info: CPUID = 0x410CC600 Info: KINETIS series: KL family Info: KINETIS chip: KL25 Info: KINETIS device die number: 09 Info: KINETIS device revision number: 01 Info: KINETIS sram size: 16384 Info: KINETIS flash size: 128K Info: KINETIS pin number: 80 Info: Chip-id read is 0x25151486. Info: Auto-detect signature is 0x25151486 Info: kl25z128frdm found Error: flash is not defined, please define first. Error: Fail to check target defined content. Error: Fail to run command: prepare.
This error message “Error: flash is not defined, please define first.” is because I was using ELF instead of binary.
Just convert this ELF to Binary:
$ arm-none-eabi-objcopy -O binary main.elf main.bin
Let us to try again:
# vsprog -skinetis -ms -I main.bin -o w VSProg 1.0 svn: CopyRight(c) 2008-2010 by SimonQian URL: http://www.SimonQian.com/en/Versaloon mail: SimonQian@SimonQian.com Info: Chip name undefined, try auto-detecting. Info: Versaloon(0x33)by Simon(compiled on Oct 25 2011) Info: USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006 Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Info: CORTEX-M0(+) r0p0 processor detected Info: CPUID = 0x410CC600 Info: KINETIS series: KL family Info: KINETIS chip: KL25 Info: KINETIS device die number: 09 Info: KINETIS device revision number: 01 Info: KINETIS sram size: 16384 Info: KINETIS flash size: 128K Info: KINETIS pin number: 80 Info: Chip-id read is 0x25151486. Info: Auto-detect signature is 0x25151486 Info: kl25z128frdm found Error: fuse is not defined, please define first. Error: Fail to check target defined content. Error: Fail to run command: prepare.
Hmm, now it says the fuse is not defined…
Let us to try to erase the chip:
# vsprog -skinetis -ms -I main.bin -o e VSProg 1.0 svn: CopyRight(c) 2008-2010 by SimonQian URL: http://www.SimonQian.com/en/Versaloon mail: SimonQian@SimonQian.com Info: Chip name undefined, try auto-detecting. Info: Versaloon(0x33)by Simon(compiled on Oct 25 2011) Info: USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006 Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Info: CORTEX-M0(+) r0p0 processor detected Info: CPUID = 0x410CC600 Info: KINETIS series: KL family Info: KINETIS chip: KL25 Info: KINETIS device die number: 09 Info: KINETIS device revision number: 01 Info: KINETIS sram size: 16384 Info: KINETIS flash size: 128K Info: KINETIS pin number: 80 Info: Chip-id read is 0x25151486. Info: Auto-detect signature is 0x25151486 Info: kl25z128frdm found Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Info: CORTEX-M0(+) r0p0 processor detected Info: CPUID = 0x410CC600 Info: KINETIS series: KL family Info: KINETIS chip: KL25 Info: KINETIS device die number: 09 Info: KINETIS device revision number: 01 Info: KINETIS sram size: 16384 Info: KINETIS flash size: 128K Info: KINETIS pin number: 80 Info: Chip-id read is 0x25151486. Info: erasing flash erasing flash |========================================%100| 0.00s used Info: flash erased
Good, I hope! 🙂
Now, I will try to flash again:
# vsprog -skinetis -ms -I main.bin -o w VSProg 1.0 svn: CopyRight(c) 2008-2010 by SimonQian URL: http://www.SimonQian.com/en/Versaloon mail: SimonQian@SimonQian.com Info: Chip name undefined, try auto-detecting. Info: Versaloon(0x33)by Simon(compiled on Oct 25 2011) Info: USB_TO_XXX abilities: 0x00000008:0x00000040:0xC0000006 Info: SWDID = 0x0BC11477 Info: AHB-AP_ID = 0x04770031 Info: ROM_ADDRESS = 0xF0002003 Info: CFG = 0x00000000, Little-endian Error: Stiky Error/Overrun. Error: Fail to initialize cm. Error: Maybe your last firmware disable the JTAG/SWD port, try using OpenOCD to erase the firmware. Error: Fail to enter program mode. Error: kinetis auto-detect failed. Error: Fail to initialize target. Error: Fail to run command: prepare.
Hmm, I think it is necessary to disable some protection before to try writing something.
Let to test OpenOCD-CMSIS-DAP:
# ./src/openocd -f ./tcl/interface/vsllink.cfg Open On-Chip Debugger 0.7.0-dev-g1d8f0c1 (2013-03-18-19:24) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Error: The specified debug interface was not found (vsllink) The following debug interfaces are available: 1: cmsis-dap Runtime Error: ./tcl/interface/vsllink.cfg:7: in procedure 'script' at file "embedded:startup.tcl", line 58 in procedure 'interface' called at file "./tcl/interface/vsllink.cfg", line 7 root@bob:/comum/Projetos/Freedom/openocd/OpenOCD-CMSIS-DAP# ./src/openocd -f ./tcl/interface/vsllink.cfg^C root@bob:/comum/Projetos/Freedom/openocd/OpenOCD-CMSIS-DAP# ./src/openocd -c "interface cmsis-dap" -f tcl/target/kl25.cfg Open On-Chip Debugger 0.7.0-dev-g1d8f0c1 (2013-03-18-19:24) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxygen/bugs.html Info : only one transport option; autoselect 'cmsis-dap' Info : CMSIS-ADI: cmsis_dap_select Info : CMSIS-DAP: cmsis_dap_swd_init Info : kernel driver active Info : kernel driver now detached. Info : CMSIS-DAP: SWD Supported Info : CMSIS-DAP: Interface Initialised (SWD) cortex_m3 reset_config sysresetreq adapter speed: 50 kHz Info : CMSIS-DAP: cmsis_dap_init Info : CMSIS-DAP: FW Version = 1.0 Info : CMSIS-DAP: Packet Size = 64 Info : CMSIS-DAP: Packet Count = 32 Info : SWCLK/TCK = 0 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 0 Info : CMSIS-DAP: cmsis_dap_reset_link Info : DAP_SWJ Sequence (reset: 50+ '1' followed by 0) Info : DAP Read IDCODE Info : CMSIS-DAP: Interface ready Info : clock speed 50 kHz Info : CMSIS-ADI: cmsis_dap_init Info : CMSIS-ADI: cmsis_dap_queue_idcode_read Info : CMSIS-ADI: cmsis_dap_queue_dp_read 00 Info : 0bc11477 Info : IDCODE 0x0bc11477 Info : CMSIS-ADI: cmsis_dap_queue_ap_abort START... Info : CMSIS-ADI: cmsis_dap_queue_dp_read 04 Info : 00000040 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 04 00000020 Info : CMSIS-ADI: cmsis_dap_queue_dp_read 04 Info : 00000040 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 04 50000000 Info : CMSIS-ADI: cmsis_dap_queue_dp_read 04 Info : f0000040 Info : CMSIS-ADI: cmsis_dap_run Info : CMSIS-ADI: cmsis_dap_queue_dp_read 04 Info : f0000040 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 00000000 Info : CMSIS-ADI: cmsis_dap_queue_ap_read 00 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 00000000 Info : 03000000 Info : CMSIS-ADI: cmsis_dap_queue_ap_read 04 Info : ddfdffff Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 000000f0 Info : CMSIS-ADI: cmsis_dap_queue_ap_read f4 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 000000f0 Info : 00000000 Info : CMSIS-ADI: cmsis_dap_queue_ap_read f8 Info : f0002003 Info : CMSIS-ADI: cmsis_dap_queue_ap_read fc Info : 04770031 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 00000000 Info : CMSIS-ADI: cmsis_dap_queue_ap_write 00 a2000012 Info : CMSIS-ADI: cmsis_dap_queue_dp_write 08 00000000 Info : CMSIS-ADI: cmsis_dap_queue_ap_write 04 e000ed00 Info : CMSIS-ADI: cmsis_dap_queue_ap_read_block 01 Error: CMSIS-DAP: Block Read Error (04) Info : CMSIS-ADI: cmsis_dap_queue_ap_abort
No way! I will need to modify MDM-AP Control register before trying to use SWD.