Nuvoton M0517LBN ARM Cortex M0
Nuvoton don’t guarantee the deviation of HIRC(22.1184MHz) for M0517.
M0517 is a special part number of M051 series.
https://groups.google.com/forum/#!msg/cheali-charger/2Rz-dtwZ5Is/zUGr3PzX9bcJ
pinout:
CHARGER -------------DONGLE ICE_DATA <---------> SWDIO ICE_CLK <---------> SWCLK ICE_RST <---------> RST (on SWIM header on my programmer) GND <---------> GND VCC <---------> 5V
dpavlin@x200:/rest/cvs/cheali-charger$ cat .gitmodules [submodule "utils/M0517_flash_tools"] path = utils/M0517_flash_tools url = https://github.com/sasam/M0517_flash_tools.git dpavlin@x200:/rest/cvs/cheali-charger/utils/M0517_flash_tools/tcl$ openocd \ -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \ -f target_MO517_linux.cfg \ -f M0517_flash.tcl -f M0517_unlock.tcl
If you get following error:
Error: init mode failed (unable to connect to the target)
Connect RST pin to GND while plugging in ST-Link v2 into computer. This will start M0517 in reset mode (you might see squares in first line of display).
Then, unplug RST pin from GND and connect it to RST and restart openocd. Your IMAX B6 is probably protected, so follow instructions below to unlock it.
Open telnet connection to openocd in other terminal:
dpavlin@x200:/rest/cvs/cheali-charger$ telnet localhost 4444 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > FlashAprom /rest/cvs/cheali-charger/hex/unstable/cheali-charger-imaxB6-clone_1.99-20150727_nuvoton-M0517.hex
Output from openocd after successful flash:
Open On-Chip Debugger 0.9.0 (2015-05-28-17:08) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD adapter speed: 1000 kHz adapter_nsrst_delay: 100 FlashAprom EraseChip Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : clock speed 950 kHz Info : STLINK v2 JTAG v23 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.339130 Info : M0517.cpu: hardware has 4 breakpoints, 2 watchpoints Info : accepting 'telnet' connection on tcp/4444 Image: /rest/cvs/cheali-charger/./src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_1.00-20150617_nuvoton-M0517.bin; Size=34840; Sectors:69; FlashProces:(34840;3584,9;2584,1) >>>> Load FlashPgm to SRAM: NU_M051x.bin => 0x20000000 target state: halted target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0xfffffffe msp: 0xfffffffc 276 bytes written at address 0x20000000 downloaded 276 bytes in 0.008215s (32.810 KiB/s) >>>> FlashInit: sp (/32): 0x20001000 pc (/32): 0x20000000 Error: timed out while waiting for target halted Flash is locked! Chip erase... . . . . . APROM: Erased!: (0x00000000):0xFFFFFFFF LDROM: Erased!: (0x00100000):0xFFFFFFFF Config: Erased!: (0x0030000):0xFFFFFFFF Image: /rest/cvs/cheali-charger/./src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_1.00-20150617_nuvoton-M0517.bin; Size=34840; Sectors:69; FlashProces:(34840;3584,9;2584,1) >>>> Load FlashPgm to SRAM: NU_M051x.bin => 0x20000000 target state: halted target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0xfffffffe msp: 0xfffffffc 276 bytes written at address 0x20000000 downloaded 276 bytes in 0.008211s (32.826 KiB/s) >>>> FlashInit: sp (/32): 0x20001000 pc (/32): 0x20000000 target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x41000000 pc: 0x20000048 msp: 0x20001000 r0 (/32): 0x00000000 >>>> FlashInit stop: >>>> EreaseFlash: start FLASH sector addr: 0x00000000 sectors to erease: 0x00000045 r0 (/32): 0x00000000 r1 (/32): 0x00000045 sp (/32): 0x20001000 pc (/32): 0x20000058 target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x200000a2 msp: 0x20000fec r0 (/32): 0x00000000 >>>> FlashErease: stop >>>> FLASH image: /rest/cvs/cheali-charger/./src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_1.00-20150617_nuvoton-M0517.bin to 0x00000000 >> Flash Sector: 0-6 => 0x00000000 (3584) SRAM load : tmp/fl.00 => 0x20000120 FLASH addr: reg r0 0x00000000 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069231s (50.555 KiB/s) r0 (/32): 0x00000000 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 7-13 => 0x00000e00 (3584) SRAM load : tmp/fl.01 => 0x20000120 FLASH addr: reg r0 0x00000e00 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.068563s (51.048 KiB/s) r0 (/32): 0x00000E00 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 14-20 => 0x00001c00 (3584) SRAM load : tmp/fl.02 => 0x20000120 FLASH addr: reg r0 0x00001c00 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.068231s (51.296 KiB/s) r0 (/32): 0x00001C00 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 21-27 => 0x00002a00 (3584) SRAM load : tmp/fl.03 => 0x20000120 FLASH addr: reg r0 0x00002a00 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069227s (50.558 KiB/s) r0 (/32): 0x00002A00 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 28-34 => 0x00003800 (3584) SRAM load : tmp/fl.04 => 0x20000120 FLASH addr: reg r0 0x00003800 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069238s (50.550 KiB/s) r0 (/32): 0x00003800 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 35-41 => 0x00004600 (3584) SRAM load : tmp/fl.05 => 0x20000120 FLASH addr: reg r0 0x00004600 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069181s (50.592 KiB/s) r0 (/32): 0x00004600 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 42-48 => 0x00005400 (3584) SRAM load : tmp/fl.06 => 0x20000120 FLASH addr: reg r0 0x00005400 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069107s (50.646 KiB/s) r0 (/32): 0x00005400 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 49-55 => 0x00006200 (3584) SRAM load : tmp/fl.07 => 0x20000120 FLASH addr: reg r0 0x00006200 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.069117s (50.639 KiB/s) r0 (/32): 0x00006200 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 56-62 => 0x00007000 (3584) SRAM load : tmp/fl.08 => 0x20000120 FLASH addr: reg r0 0x00007000 SIZE addr: reg r1 0x00000e00 BUFFR addr: reg r2 0x20000120 3584 bytes written at address 0x20000120 downloaded 3584 bytes in 0.068143s (51.363 KiB/s) r0 (/32): 0x00007000 r1 (/32): 0x00000E00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >> Flash Sector: 63-68 => 0x00007e00 (2584) SRAM load : tmp/fl.09 => 0x20000120 FLASH addr: reg r0 0x00007e00 SIZE addr: reg r1 0x00000c00 BUFFR addr: reg r2 0x20000120 2584 bytes written at address 0x20000120 downloaded 2584 bytes in 0.050122s (50.346 KiB/s) r0 (/32): 0x00007E00 r1 (/32): 0x00000C00 r2 (/32): 0x20000120 sp (/32): 0x20001000 pc (/32): 0x200000AE target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 r0 (/32): 0x00000000 >>>> FLASH image: stop >>>> Verify: verify_image /rest/cvs/cheali-charger/./src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_1.00-20150617_nuvoton-M0517.bin 0 target state: halted target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000002e msp: 0x20000ff4 verified 34840 bytes in 0.226838s (149.990 KiB/s) Trajanje init: 0 sec Trajanje brisi: 2 sec Trajanje pisi: 2 sec Trajanje ukupno: 4 sec
dpavlin@x200:/rest/cvs/cheali-charger/utils/M0517_flash_tools/tcl$ openocd -f interface/stlink-v2.cfg -f target_MO517_linux.cfg Open On-Chip Debugger 0.9.0 (2015-05-28-17:08) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD adapter speed: 1000 kHz adapter_nsrst_delay: 100 Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : Unable to match requested speed 1000 kHz, using 950 kHz Info : clock speed 950 kHz Info : STLINK v2 JTAG v23 API v2 SWIM v4 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 3.239563 Info : M0517.cpu: hardware has 4 breakpoints, 2 watchpoints # in other terminal dpavlin@x200:/rest/cvs/cheali-charger/utils/M0517_flash_tools$ telnet localhost 4444 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > source M0517_flash.tcl FlashAprom > FlashAprom /rest/cvs/cheali-charger/hex/unstable/cheali-charger-imaxB6-clone_1.99-20150727_nuvoton-M0517.hex
1 2 3 1 - +5V 2 - TTL TX serial / Vout of LM35 3 - GND
grep '$1' cheali.log | sed 's/;/\t/g' | xclip -selection clipboard -i
cheali-charger version 1.99:
The "Hard way" (any temp probe):
1. connect external temp probe
2. check if there is 5V on temp. connector (between pin 1 (GND) and pin 3)
3. go to: "options"> "calibrate">"temp extern"
(first calibration point: point 0)
4. set "temp:" to your room temperature (~20�C)
(second calibration point: point 1)
5. set "calib. p.:" to 1
6. heat temp. sensor to 60�C
7. set "temp:" to 60�C (the temperature sensor should be at 60�C at this moment)
The "easy way" (LM35, LM35DZ):
1. connect external temp probe
2. check if there is 5V on temp. connector (between pin 1 (GND) and pin 3)
2. check sensor output voltage, should be: ~0.20V (between pin 1 (GND) and pin 2)
3. go to: "options"> "calibrate">"temp extern"
(first calibration point: point 0)
4. set "temp:" to your room temperature (~20�C)
(second calibration point: point 1)
5. set "calib. p.:" to 1
6. disconnect temperature probe
7. make a shortcut between pin 1 (GND) and pin 2 on the temperature connector (simulate sensor output voltage = 0V)
8. set "temp:" to 0�C
Table 6.13-1 Memory Address Map
Block Name | Size | Start Address | End Address |
AP-ROM | 8/16/32/64KB | 0x0000_0000 | 0x0000_1FFF (8KB) |
0x0000_3FFF (16KB) | |||
0x0000_7FFF (32KB) | |||
0x0000_FFFF (64KB) | |||
Data Flash | 4KB | 0x0001_F000 | 0x0001_FFFF |
LD-ROM | 4KB | 0x0010_0000 | 0x0010_0FFF |
User Configuration | 1 Words | 0x0030_0000 | 0x0030_0000 |
> init > dump_image aprom.bin 0x0 0x10000 dumped 65536 bytes in 0.638086s (100.300 KiB/s) > dump_image flash_data.bin 0x1f000 0x1000 dumped 4096 bytes in 0.042080s (95.057 KiB/s) > dump_image ldrom.bin 0x100000 0x1000 SWD DPIDR 0x0bb11477 Failed to read memory at 0x00100000 > dump_image config.bin 0x300000 0x1000 SWD DPIDR 0x0bb11477 Failed to read memory at 0x00300000
apply fix for python3 from https://github.com/dpavlin/cheali-charger/tree/python3
dpavlin@nuc:/nuc/cheali-charger/utils/eepromExtractor$ ls -al eeprom.bin -r--r--r-- 1 dpavlin dpavlin 4096 Jul 5 10:54 eeprom.bin dpavlin@nuc:/nuc/cheali-charger/utils/eepromExtractor$ ./eeprom.py magic: chli version: 9.3.10 Data( magicString = ( 99, 104, 108, 105, ), architecture = 16385, calibrationVersion = 9, programDataVersion = 3, settingVersion = 10, calibration = ( Calibration( p = ( CalibrationPoint( x = 0, y = 50, ), CalibrationPoint( x = 17148, y = 15976, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 50, ), CalibrationPoint( x = 17148, y = 15976, ), ), ), Calibration( p = ( CalibrationPoint( x = 525, y = 100, ), CalibrationPoint( x = 5447, y = 1000, ), ), ), Calibration( p = ( CalibrationPoint( x = 1919, y = 100, ), CalibrationPoint( x = 5827, y = 300, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 1, y = 1, ), ), ), Calibration( p = ( CalibrationPoint( x = 8000, y = 5940, ), CalibrationPoint( x = 8642, y = 3479, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 21558, y = 12728, ), ), ), Calibration( p = ( CalibrationPoint( x = 52287, y = 1910, ), CalibrationPoint( x = 45432, y = 0, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 25736, y = 3995, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 25736, y = 3995, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 51320, y = 7985, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 26220, y = 4002, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 26150, y = 3989, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 25169, y = 3916, ), ), ), Calibration( p = ( CalibrationPoint( x = 0, y = 0, ), CalibrationPoint( x = 25405, y = 3933, ), ), ), Calibration( p = ( CalibrationPoint( x = 525, y = 100, ), CalibrationPoint( x = 5457, y = 1000, ), ), ), Calibration( p = ( CalibrationPoint( x = 3013, y = 100, ), CalibrationPoint( x = 9187, y = 300, ), ), ), ), calibrationCRC = 53014, battery = ( Battery( type = 6, capacity = 2000, cells = 4, Ic = 1000, Id = 410, Vc_per_cell = 4200, Vd_per_cell = 3000, minIc = 100, minId = 55, time = 1000, enable_externT = 1, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 6, capacity = 3000, cells = 1, Ic = 3000, Id = 1000, Vc_per_cell = 4200, Vd_per_cell = 3000, minIc = 300, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 1, capacity = 2000, cells = 1, Ic = 2000, Id = 490, Vc_per_cell = 1800, Vd_per_cell = 850, minIc = 200, minId = 100, time = 1000, enable_externT = 1, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 2, capacity = 3600, cells = 2, Ic = 3600, Id = 1000, Vc_per_cell = 1800, Vd_per_cell = 1000, minIc = 360, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73740>, ), Battery( type = 0, capacity = 2000, cells = 3, Ic = 2000, Id = 1000, Vc_per_cell = 1, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac73640>, ), Battery( type = 11, capacity = 2000, cells = 1, Ic = 2000, Id = 1000, Vc_per_cell = 3000, Vd_per_cell = 1, minIc = 200, minId = 100, time = 1000, enable_externT = 0, externTCO = 6000, enable_adaptiveDischarge = 0, DCRestTime = 30, capCutoff = 120, _0 = <v9_3_10.N11ProgramData7Battery3DOT_1E object at 0x7f3f4ac735c0>, ), ), programDataCRC = 13555, settings = Settings( backlight = 70, fanOn = 3, fanTempOn = 5000, dischargeTempOff = 6000, audioBeep = 1, minIc = 50, minId = 50, inputVoltageLow = 10000, adcNoise = 0, UART = 3, UARTspeed = 3, UARToutput = 1, menuType = 1, ), settingsCRC = 15640, ) dpavlin@nuc:/nuc/cheali-charger/utils/eepromExtractor$ cp defaultCalibration.cpp ../../src/hardware/nuvoton-M0517/targets/imaxB6-clone/
pi@pihdmi:~/openocd-rpi2-stm32/imax_b6 $ openocd -f rpi2-swd.cfg -f target/numicro.cfg Open On-Chip Debugger 0.10.0+dev-01489-g06c7a53f1-dirty (2020-11-14-15:21) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html swd cortex_m reset_config sysresetreq Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : BCM2835 GPIO JTAG/SWD bitbang driver Info : clock speed 1001 kHz Info : SWD DPIDR 0x0bb11477 Info : NuMicro.cpu: hardware has 4 breakpoints, 2 watchpoints Info : starting gdb server for NuMicro.cpu on 3333 Info : Listening on port 3333 for gdb connections
Program new version
> halt target halted due to debug-request, current mode: Handler External Interrupt(6) xPSR: 0x41000016 pc: 0x00000a70 msp: 0x20000f60 > flash write_bank 0 /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210623_nuvoton-M0517.bin Nuvoton NuMicro: Flash Write ... wrote 37776 bytes from file /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210623_nuvoton-M0517.bin to flash bank 0 at offset 0x00000000 in 0.906262s (40.706 KiB/s) > reset NuMicro.cpu -- clearing lockup after double fault target halted due to debug-request, current mode: Handler HardFault xPSR: 0x01000003 pc: 0xfffffffe msp: 0x20000eb0 Polling target NuMicro.cpu failed, trying to reexamine NuMicro.cpu: hardware has 4 breakpoints, 2 watchpoints
This will brick mcu, so don't do it!
https://github.com/dpavlin/M0517_flash_tools/tree/fix_openocd_0.10
Update cheali-charger/utils/M0517_flash_tools to branch fix_openocd_0.10
start openocd with raspberry pi configurtaion:
pi@pihdmi:~/openocd-rpi2-stm32/imax_b6 $ openocd -f target_M0517_rpi.cfg -s /nuc/cheali-charger/utils/M0517_flash_tools/tcl/ -f M0517_flash.tcl -f M0517_unlock.tcl Open On-Chip Debugger 0.10.0+dev-01489-g06c7a53f1-dirty (2020-11-14-15:21) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html cortex_m reset_config sysresetreq FlashAprom EraseChip Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : BCM2835 GPIO JTAG/SWD bitbang driver Info : clock speed 1001 kHz Info : SWD DPIDR 0x0bb11477 Info : M0517.cpu: hardware has 4 breakpoints, 2 watchpoints Info : starting gdb server for M0517.cpu on 3333 Info : Listening on port 3333 for gdb connections Info : accepting 'telnet' connection on tcp/4444
connect and flash latest version
pi@pihdmi:~/openocd-rpi2-stm32/imax_b6 $ telnet localhost 4444 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > > FlashAprom /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210623_nuvoton-M0517.bin > FlashAprom /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210705_nuvoton-M0517.bin target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x00001000 msp: 0x20000ed0 target halted due to breakpoint, current mode: Thread xPSR: 0x41000000 pc: 0x20000048 msp: 0x20001000 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x200000a2 msp: 0x20000fec target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 > reset
output from openocd:
pi@pihdmi:~/openocd-rpi2-stm32/imax_b6 $ cat openocd.sh openocd -s /nuc/cheali-charger/utils/M0517_flash_tools/tcl -f target_M0517_rpi.cfg -f M0517_flash.tcl -f M0517_unlock.tcl pi@pihdmi:~/openocd-rpi2-stm32/imax_b6 $ ./openocd.sh Open On-Chip Debugger 0.10.0+dev-01489-g06c7a53f1-dirty (2020-11-14-15:21) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html cortex_m reset_config sysresetreq Flash EraseChip Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : BCM2835 GPIO JTAG/SWD bitbang driver Info : clock speed 1001 kHz Info : SWD DPIDR 0x0bb11477 Info : M0517.cpu: hardware has 4 breakpoints, 2 watchpoints Info : starting gdb server for M0517.cpu on 3333 Info : Listening on port 3333 for gdb connections Info : accepting 'telnet' connection on tcp/4444 Info : dropped 'telnet' connection Info : accepting 'telnet' connection on tcp/4444 Image: /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210705_nuvoton-M0517.bin, type: bin; Size=34660; Sectors:68; FlashProces:(34660;3584,9;2404,1) >>>> Load FlashPgm to SRAM: NU_M051x.bin => 0x20000000 target halted due to debug-request, current mode: Thread xPSR: 0xc1000000 pc: 0x00001144 msp: 0x20000fd8 >>>> FlashInit: target halted due to breakpoint, current mode: Thread xPSR: 0x41000000 pc: 0x20000048 msp: 0x20001000 >>>> FlashInit stop: time init: 1 sec >>>> EreaseFlash: start FLASH sector addr: 0x00000000 sectors to erease: 0x00000044 target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x200000a2 msp: 0x20000fec >>>> FlashErease: stop time erease: 1 sec >>>> FLASH image: /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210705_nuvoton-M0517.bin to 0x00000000 >> Flash Sector: 0-6 => 0x00000000 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 7-13 => 0x00000e00 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 14-20 => 0x00001c00 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 21-27 => 0x00002a00 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 28-34 => 0x00003800 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 35-41 => 0x00004600 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 42-48 => 0x00005400 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 49-55 => 0x00006200 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 56-62 => 0x00007000 (3584) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >> Flash Sector: 63-67 => 0x00007e00 (2404) target halted due to breakpoint, current mode: Thread xPSR: 0x61000000 pc: 0x2000010c msp: 0x20000ff4 >>>> FLASH image: stop >>>> Verify: verify_image /nuc/cheali-charger/src/hardware/nuvoton-M0517/targets/imaxB6-clone/cheali-charger-imaxB6-clone_2.01-e10.3.12-20210705_nuvoton-M0517.bin 0 time write: 1 sec time summary: 3 sec