Dobrica Pavlinušić's random unstructured stuff
IMAX B6: Revision 33
RC-Power_BC6_Charger.pdf
MCUNuvoton M0517LBN ARM Cortex M0
Nuvoton don’t guarantee the deviation of HIRC(22.1184MHz) for M0517. Open source firmware
Flashinghttps://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 Updatedpavlin@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 Serial port
1 2 3 1 - +5V 2 - TTL TX serial / Vout of LM35 3 - GND LogViewtsvgrep '$1' cheali.log | sed 's/;/\t/g' | xclip -selection clipboard -i temperature sensorcheali-charger version 1.99:
The "Hard way" (any temp probe):
The "easy way" (LM35, LM35DZ): backup calibrationmemory mapTable 6.13-1 Memory Address Map
backup> 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 serial tx and rx on chip pins
openocd upstream support for nuvotonpi@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 |