From b927246cbb47f81dfc3f190e956976fdd27ac3b2 Mon Sep 17 00:00:00 2001 From: niffin-lv <106824388+niffin-lv@users.noreply.github.com> Date: Wed, 5 Mar 2025 17:16:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20CH347?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена смена значения reset_config на trst_only при использовании CH347; - Добавлено переопределение функции сброса init_reset при использовании CH347. При использовании CH347 сброс ядра и периферии осуществляется с помощью встроенного блока TCB; - Добавлена возможность сброса ядра и периферии через блок TCB с помощью функции reset_with_tcb; - Удалена неиспользуемая функция my_init_proc. --- openocd-scripts/target/mik32.cfg | 57 ++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/openocd-scripts/target/mik32.cfg b/openocd-scripts/target/mik32.cfg index e3de59e..3fded9f 100644 --- a/openocd-scripts/target/mik32.cfg +++ b/openocd-scripts/target/mik32.cfg @@ -1,10 +1,56 @@ +set adapterName [adapter name] -proc my_init_proc { } { echo "Disabling watchdog..." } +proc shift_dr_tcb {value} { + set revers_instr 0 + for { set i 0} {$i < 37} {incr i} { + set bit [expr "($value>>(36-$i)) & 1"] + set revers_instr [expr "$revers_instr + ($bit<<$i)"] + } + irscan riscv.sys 5 + set instruction_31_0 [expr "$revers_instr & 0xFFFFFFFF"] + set instruction_36_32 [expr "($revers_instr >> 32) & 0xFFFFFFFF"] + set dr [drscan riscv.sys 32 $instruction_31_0 5 $instruction_36_32] + return $dr +} + +proc reset_with_tcb { } { + puts "System reset using TCB" + # Сброс ОЗУ, контроллера EEPROM, контроллера SPIFI, сброс домена периферийных устройств, + # сброс контроллера DMA, сброс процессора cpu_rst_n, сброс процессора rst_n. + # При этом не будут сброшены блоки: + # - EPIC; + # - OTP_CONTROLLER; + # - PAD_CONTROL; + # - POWER_MANAGER; + # - PVD_CONTROL_REG; + # - TIMER32_0; + # - WDT_BUS. + set instruction [expr "(7 << 32) + (1 << 6) + (1 << 7) + (1 << 9) + (1 << 10) + (1 << 11)"] + shift_dr_tcb $instruction + shift_dr_tcb $instruction +} + +if {$adapterName == "ch347"} { + proc init_reset {mode} { + global adapterName + + puts "Adapter: $adapterName" + puts "Using reset without srst" + + adapter assert trst + #sleep 1 + adapter deassert trst + runtest 50 + jtag arp_init + + reset_with_tcb + } +} proc init_targets {} { - - reset_config trst_and_srst + global adapterName + if {$adapterName == "ch347"} {reset_config trst_only} else {reset_config trst_and_srst} set _CHIPNAME riscv set _CPUTAPID 0xdeb11001 @@ -16,13 +62,10 @@ proc init_targets {} { set _TARGETNAME $_CHIPNAME.cpu target create $_TARGETNAME riscv -endian little -chain-position $_TARGETNAME -coreid 0 - - riscv.cpu configure -event reset-init my_init_proc } poll_period 200 init riscv.cpu arm semihosting enable -puts "init done" - +puts "init done" \ No newline at end of file