PY32F002A (и другие от PUYA)- чудо микроконтроллер

Пришел программатор для PUYA! Ни капли не сомневался, что PY32CubeProgrammer его не увидит.
Контроллер затерт лазером и нанесено новое обозначение, наивные какие, когда это нас останавливало
узнать что там за чип, 10 минут и, имеем полный расклад:

DP DPIDR 0x0bc11477 (v1 MINDP rev0) designer 0x43b partno 0xbc
AP   0: IDR=04770031 CFG=00000000 BASE=e00ff000 CSW=e3000040 (AHB3-AP var3 rev0)
Halt via DHCSR(01030003): success after 1ms
ROM Table: BASE=0xe00ff000 SYSMEM=1, Manufacturer 43b Partno 4c0 (PIDR = 0x04000bb4c0)
0 0x0e000e000: Generic IP component - Cortex-M0 SCS (System Control Space) (PIDR = 0x04000bb008 DEVTYPE = 0x00 ARCHID = 0x0000)
-> cortexm_probe
CPUID 0x410cc601 (M0+ var 0 rev 1)
1 0x0e0001000: Generic IP component - Cortex-M0 DWT (Data Watchpoint and Trace) (PIDR = 0x04000bb00a DEVTYPE = 0x00 ARCHID = 0x0000)
2 0x0e0002000: Generic IP component - Cortex-M0 BPU (Breakpoint Unit) (PIDR = 0x04000bb00b DEVTYPE = 0x00 ARCHID = 0x0000)
ROM Table: END
***  1   PY32Fxxx M0+
RAM   Start: 0x20000000 length = 0x2000
Flash Start: 0x08000000 length = 0x10000 blocksize 0x80

Прошивка защищена от чтения…и когда это нас останавливало:

Сильно. А люди то десятки тысяч дохлых енотов тратили на это. Теперь “богатеем станете”(с)

не, не стану, я жеж бегаю кому чего ещё отдать )))

Итого: что за программатор(ссылка), есть ли смысл в приобретении(по поводу “порчи байтов” и взаимодействия с приложениями)

Смысла нет никакого, это для производственного процесса, через утилиту (которую я не нашел) в программатор заливается прошивка, сохраняется в той 8-ми ногой флэшке, подключаешь девайс для программирования, нажимаешь кнопку и устройство заливает прошивку.
Одним словом “Этот гвоздь не в ту стену”…
PS они сами его сдёрнули, находил предложение аналогичного прибора под разные контроллеры, по цене начиналось от 5000 где-то, дисплей правда повернут на 90 градусов, каждый программатор под свою марку производителя контроллеров, а начиналось с прибора ссылку на который привёл
Больше информации тут

Если кто-то задумает сделать себе blackmagic probe из bluepill - обращайтесь, в прошивке пины замаплены на стандартный SWD

Подумалось, дешевле будет сделать из ST-Link V2, при его цене в 70 рублей, сделал, работает и, даже светодиодиками моргает

 Black Magic Probe (ST-Link/v2) 
Found AUX Serial at COM38
prefix: 6&2504d66e&0
Using BMP at COM37
Running in Test Mode
Target voltage: 3.31V
Speed set to 6.000MHz for SWD
Switching from JTAG to dormant
Switching out of dormant state into SWD
DP DPIDR 0x0bc11477 (v1 MINDP rev0) designer 0x43b partno 0xbc
AP   0: IDR=04770031 CFG=00000000 BASE=e00ff000 CSW=e3000040 (AHB3-AP var3 rev0)
Halt via DHCSR(00030003): success after 2ms
ROM Table: BASE=0xe00ff000 SYSMEM=1, Manufacturer 43b Partno 4c0 (PIDR = 0x04000bb4c0)
0 0x0e000e000: Generic IP component - Cortex-M0 SCS (System Control Space) (PIDR = 0x04000bb008 DEVTYPE = 0x00 ARCHID = 0x0000)
-> cortexm_probe
CPUID 0x410cc601 (M0+ var 0 rev 1)
1 0x0e0001000: Generic IP component - Cortex-M0 DWT (Data Watchpoint and Trace) (PIDR = 0x04000bb00a DEVTYPE = 0x00 ARCHID = 0x0000)
2 0x0e0002000: Generic IP component - Cortex-M0 BPU (Breakpoint Unit) (PIDR = 0x04000bb00b DEVTYPE = 0x00 ARCHID = 0x0000)
ROM Table: END
***  1   PY32Fxxx M0+
RAM   Start: 0x20000000 length = 0x2000
Flash Start: 0x08000000 length = 0x10000 blocksize 0x80

ST-Link V2 с STM или копии? Опять же перемаркировку никто не отменял.

чип затерт, но обновлялся, а что еще может стоить 70 рублей, только свисток…
и таки да, вот что на плате:

DP DPIDR 0x1ba01477 (v1 rev1) designer 0x43b partno 0xba
AP   0: IDR=14770011 CFG=00000000 BASE=e00ff000 CSW=e3000040 (AHB3-AP var1 rev1)
Halt via DHCSR(00030003): success after 4ms
ROM Table: BASE=0xe00ff000 SYSMEM=1, Manufacturer 80e Partno 410 (PIDR = 0x080008e410)
0 0x0e000e000: Generic IP component - Cortex-M3 SCS (System Control Space) (PIDR = 0x04001bb000 DEVTYPE = 0x00 ARCHID = 0x0000)
-> cortexm_probe
CPUID 0x411fc231 (M3 var 1 rev 1)
Please report unknown device with Designer 0x80e Part ID 0x410
1 0x0e0001000: Generic IP component - Cortex-M3 DWT (Data Watchpoint and Trace) (PIDR = 0x04001bb002 DEVTYPE = 0x00 ARCHID = 0x0000)
2 0x0e0002000: Generic IP component - Cortex-M3 FBP (Flash Patch and Breakpoint) (PIDR = 0x04000bb003 DEVTYPE = 0x00 ARCHID = 0x0000)
3 0x0e0000000: Generic IP component - Cortex-M3 ITM (Instrumentation Trace Module) (PIDR = 0x04001bb001 DEVTYPE = 0x00 ARCHID = 0x0000)
4 0x0e0040000: Debug component - Cortex-M3 TPIU (Trace Port Interface Unit) (PIDR = 0x04001bb923 DEVTYPE = 0x11 ARCHID = 0x0000)
5 0x0e0041000: Debug component - Cortex-M3 ETM (Embedded Trace) (PIDR = 0x04101bb924 DEVTYPE = 0x13 ARCHID = 0x0000)
ROM Table: END
***  1   Unknown ARM Cortex-M Designer 0x80e Part ID 0x410 M3

Вы бы хоть расшифровку сразу давали. Типа это F103VET6? Так там корпус сразу отличается.
Опять же вы писали, что родной софт читает прошитое, а не реальное. Я к тому, что для переделки/обновления надо флеш минимум на 128кб?

это ST-Link V2 с али, за 70 рублей, флэша 128, но у моего продавана уже нет
тут же на слово не верят…

кстати, в комментариях - Актуальный дешевый МК для РФ это CH32V003. Лоты с ним есть и на али, и локально представлен, в моем случае 14р в рознице в ближайшем магазине здесь и сейчас.

Это если покупать, а если не покупать, а просто, чтобы насыпали тех, что выбрасывают, и это всё таки Кортекс, вопрос куда применить, помогаю сейчас в изготовлении трёхфазного регулятора мощности на attiny85, может вместо него?

Если придётся использовать PYOCD во вложении помощь:

****************************	
*	pyocd --help-options   *
****************************


adi.v5.max_invalid_ap_count (int) 
	If this number of invalid APs is found in a row, then AP scanning will stop. 
	The 'scan_all_aps' option takes precedence over this option if set.
		*******
	Если задано указанное количество недействительных точек доступа, сканирование
	точек доступа будет остановлено.
	Параметр «scan_all_aps» имеет приоритет над этим параметром, если он установлен.
	
allow_no_cores (bool) 
	Prevents raising an error if no cores were found after CoreSight discovery.
		*******
	Предотвращает возникновение ошибки, если после обнаружения CoreSight не было найдено ни одного ядра.
	
auto_unlock (bool) 
	Whether to unlock secured target by erasing.
		*******
	Разблокировать ли защищенную цель путем стирания.
		
cache.enable_memory (bool) 
	Enable the memory read cache. 
	Default is enabled.
		*******
	Включить кэширование чтения памяти. 
	По умолчанию включено.
		
cache.enable_register (bool) 
	Enable the core register cache. Default is enabled.
		*******
	Включить кэширование основных регистров. По умолчанию включено.
		
cache.read_code_from_elf (bool) 
	Controls whether reads of code sections will be taken from an attached ELF 
	file instead of the target memory.
		*******
	Управляет тем, будут ли считываться фрагменты кода из прикреплённого ELF-файла, а не из целевой памяти.
		
chip_erase (str) 
	Whether to perform a chip erase or sector erases when programming flash. 
	The value must be one of "auto", "sector", or "chip".
		*******
	Необходимо ли выполнять стирание чипа или стирание секторов при программировании флэш-памяти.
	Значение должно быть «auto», «sector» или «chip».
		
cmsis_dap.deferred_transfers (bool) 
	Whether the CMSIS-DAP probe backend will use deferred transfers for improved performance.
		*******
	Будет ли бэкэнд зонда CMSIS-DAP использовать отложенные передачи для повышения производительности.
		
cmsis_dap.limit_packets (bool) 
	Restrict CMSIS-DAP backend to using a single in-flight command at a time.
		*******
	Ограничить использование на сервере CMSIS-DAP только одной исполняемой команды за раз.
		
cmsis_dap.prefer_v1 (bool) 
	If a device provides both CMSIS-DAP v1 and v2 interfaces, use the v1 interface in preference of v2.
	Normal behaviour is to prefer the v2 interface. This option is primarily intended for testing.
		*******
	Если устройство поддерживает интерфейсы CMSIS-DAP v1 и v2, используйте интерфейс v1 вместо v2.
	Обычно предпочтение отдаётся интерфейсу v2. 
	Этот вариант в первую очередь предназначен для тестирования.
		
commander.history_length (int) 
	Number of entries in the pyOCD Commander command history. 
	Set to -1 for unlimited. 
	Default is 1000.
		*******
	Количество записей в истории команд pyOCD Commander.
	Установите значение -1, чтобы не ограничивать количество записей.
	По умолчанию — 1000.
		
config_file (str) 
	Path to custom config file.
		*******
	Путь к пользовательскому файлу конфигурации.
		
connect_mode (str) 
	One of 'halt', 'pre-reset', 'under-reset', 'attach'. Default is 'halt'.
		*******
	Один из вариантов: «halt», «pre-reset», «under-reset», «attach». 
	Значение по умолчанию — «halt».
		
cpu.step.instruction.timeout (float) 
	Timeout in seconds for instruction step operations. Defaults to 0, or no timeout.
		*******
	Тайм-аут в секундах для операций по шагам инструкции. По умолчанию 0 или без тайм-аута.
		
dap_protocol (str) 
	Wire protocol, either 'swd', 'jtag', or 'default'.
		*******
	Протокол связи: «swd», «jtag» или «default».
		
dap_swj_enable (bool) 
	Send SWJ transition sequence to switch between SWD and JTAG.
		*******
	Отправьте последовательность перехода SWJ для переключения между SWD и JTAG.
		
dap_swj_use_dormant (bool) 
	When switching between SWD and JTAG, 
	use the SWJ sequence from ADIv5.2 that utilizes a new dormant state.
		*******
	При переключении между SWD и JTAG
	используйте последовательность SWJ из ADIv5.2, которая использует новое состояние покоя.
		
debug.log_flm_info (bool) 
	Log details of loaded .FLM flash algos.
		*******
	Подробная информация о загруженных алгоритмах флэш-памяти .FLM.
		
debug.status_fault_retry_timeout (float) 
	Duration in seconds that a failed target status check will be retried before an error is raised.
	Only applies while the target is running after a resume operation in the debugger
	and pyOCD is waiting for it to halt again.
		*******
	Длительность (в секундах) повторной проверки состояния целевого объекта, в которой произошла ошибка,
	прежде чем будет выдана ошибка.
	Применяется только в том случае, если целевой объект запущен после возобновления операции в отладчике,
	и pyOCD ожидает его повторной остановки.
		
debug.traceback (bool) 
	Print tracebacks for exceptions.
		*******
	Распечатать трассировки для исключений.
		
enable_multicore_debug (bool) 
	Whether to put pyOCD into multicore debug mode. 
	Doing so changes the default software reset type of secondary cores to VECTRESET, 
	or emulated reset if that is not supported (i.e., non-v7-M cores).
		*******
	Переводить ли pyOCD в режим многоядерной отладки.
	Это изменяет тип программного сброса по умолчанию для вторичных ядер на VECTRESET,
	или эмулируемый сброс, если он не поддерживается (например, для ядер, отличных от v7-M).
		
enable_semihosting (bool) 
	Set to True to handle semihosting requests.
		*******
	Установите значение True для обработки запросов на полухостинг.
		
enable_swv (bool) 
	Whether to enable SWV printf output over the semihosting console. 
	Requires the swv_system_clock option to be set. 
	The SWO baud rate can be controlled with the swv_clock option.
		*******
	Включать ли вывод SWV printf через консоль полухостинга.
	Требуется установка параметра swv_system_clock.
	Скорость передачи SWO можно контролировать с помощью параметра swv_clock.
		
fast_program (bool) 
	Setting this option to True will use CRC checks of existing flash sector contents
	to determine whether pages need to be programmed.
		*******
	Если этот параметр установлен в значение True, будут использоваться проверки CRC
	содержимого существующих секторов флэш-памяти,чтобы определить, 
	нужно ли программировать страницы.
		
flash.timeout.analyzer (float) 
	Flash algorithm CRC analyzer timeout in seconds.
		*******
	Тайм-аут анализатора CRC алгоритма Flash в секундах.
		
flash.timeout.erase_all (float) 
	Flash algorithm erase all timeout in seconds.
		*******
	Алгоритм Flash очищает все тайм-ауты в секундах.
		
flash.timeout.erase_sector (float) 
	Flash algorithm sector erase timeout in seconds.
		*******
	Тайм-аут стирания сектора алгоритма Flash в секундах.
		
flash.timeout.init (float) 
	Flash algorithm init and uninit timeout in seconds.
		*******
	Время ожидания init и uninit алгоритма Flash в секундах.
		
flash.timeout.program (float) 
	Flash algorithm programming timeout in seconds.
		*******
	Тайм-аут программирования алгоритма Flash в секундах.
		
frequency (int) 
	SWD/JTAG frequency in Hertz.
		*******
	Частота SWD/JTAG в Герцах.
		
gdbserver_port (int) 
	Base TCP port for the gdbserver.
		*******
	Базовый TCP-порт для gdbserver.
		
hide_programming_progress (bool) 
	Disables flash programming progress bar.
		*******
	Отключает индикатор выполнения флэш-программирования.
		
jlink.device (str) 
	If this option is set to a supported J-Link device name, 
	then the J-Link will be asked connect using this name. 
	Otherwise, the J-Link is configured for only the low-level CoreSight operations required by pyOCD.
	Ordinarily, it does not need to be set.
		*******
	Если для этого параметра задано поддерживаемое имя устройства J-Link,
	то J-Link будет предложено подключиться, используя это имя.
	В противном случае J-Link настроен только для низкоуровневых операций CoreSight, необходимых для pyOCD.
	Обычно его не требуется настраивать.
		
jlink.non_interactive (bool) 
	Controls whether the J-Link DLL is allowed to present UI dialog boxes and its control panel. 
	Note that dialog boxes will actually still be visible, but the default option will be chosen 
	automatically after 5 seconds. 
	Default is True.
		*******
	Определяет, разрешено ли J-Link DLL отображать диалоговые окна пользовательского интерфейса и его панель управления.
	Обратите внимание, что диалоговые окна фактически будут видны, но будет выбран вариант по умолчанию
	автоматически через 5 секунд.
	Значение по умолчанию — True.
		
jlink.power (bool) 
	Enable target power when connecting via a JLink probe, and disable power when disconnecting. 
	Default is True.
		*******
	Включать питание целевой модели при подключении через датчик JLink и отключать питание при отключении.
	Значение по умолчанию — True.
		
keep_unwritten (bool) 
	Whether to preserve existing flash content for ranges of sectors that will be erased
	but not written with new data. 
	Default is False.
		*******
	Сохранять ли существующее содержимое флэш-памяти для диапазонов секторов, 
	которые будут стерты, но не будут записаны новыми данными.
	Значение по умолчанию — False.
		
logging (str, dict) 
	Logging configuration dictionary, or path to YAML file containing logging configuration.
		*******
	Словарь конфигурации ведения журнала или путь к файлу YAML, содержащему конфигурацию ведения журнала.
		
no_config (bool) 
	Do not use default config file.
		*******
	Не используйте файл конфигурации по умолчанию.
		
pack (str, list) 
	Path or list of paths to CMSIS Device Family Packs. 
	Devices defined in the pack(s) are added to the list of available targets.
		*******
	Путь или список путей к пакетам семейств устройств CMSIS.
	Устройства, определённые в пакете(ах), добавляются в список доступных целевых устройств.
	
pack.debug_sequences.debugvars (str) 
	Variable definition statements to change configurable debug sequence variables.
		*******
	Операторы определения переменных для изменения настраиваемых переменных последовательности отладки.
		
pack.debug_sequences.disabled_sequences (str, list) 
	Comma-separated list of names of debug sequences to disable for a CMSIS-Pack based target. 
	Disabled sequences can be restricted to a given core by appending a colon and processor name
	to the sequence's name. 
	Only top-level debug sequences can be disabled. Ignored for builtin targets.
		*******
	Список имён отладочных последовательностей, разделённых запятыми, для отключения 
	для целевой платформы на базе CMSIS-Pack.
	Отключённые последовательности можно ограничить определённым ядром, 
	добавив двоеточие и имя процессора к имени последовательности.
	Можно отключить только отладочные последовательности верхнего уровня. 
	Игнорируется для встроенных целевых платформ.
	
pack.debug_sequences.enable (bool) 
	Global enable for debug sequences for CMSIS-Pack based targets. 
	Ignored for builtin targets.
		*******
	Глобальное включение отладочных последовательностей для целей на базе CMSIS-Pack.
	Игнорируется для встроенных целей.
		
persist (bool) 
	If True, the GDB server will not exit after GDB disconnects.
		*******
	Если True, сервер GDB не завершит работу после отключения GDB.
		
picoprobe.safeswd (bool) 
	Use safe but slower SWD transfer functions with Picoprobe.
		*******
	Используйте безопасные, но более медленные функции передачи SWD с Picoprobe.
		
primary_core (int) 
	Core number for the primary/boot core of an asymmetric multicore target. 
	This is the core that will control system reset when 'enable_multicore' is set.
		*******
	Номер ядра для основного/загрузочного ядра асимметричной многоядерной целевой системы.
	Это ядро ​​будет управлять сбросом системы при установке параметра «enable_multicore».
		
probeserver.port (int) 
	TCP port for the debug probe server.
		*******
	TCP-порт для сервера отладочных зондов.
		
project_dir (str) 
	Path to the session's project directory. 
	Defaults to the working directory when the pyocd tool was executed.
		*******
	Путь к каталогу проекта сеанса.
	По умолчанию это рабочий каталог на момент запуска инструмента pyocd.
		
report_core_number (bool) 
	Whether gdb server should report core number as part of the per-thread information.
		*******
	Должен ли сервер GDB сообщать номер ядра как часть информации о потоке.
		
reset.core_recover.timeout (float) 
	Timeout for waiting for a core to be accessible after reset. 
	A warning is printed if the timeout lapses. 
	Set to 0 to disable the core accessibility test. 
	Default is 2.0 s.
		*******
	Тайм-аут ожидания доступности ядра после сброса.
	По истечении тайм-аута выводится предупреждение.
	Установите значение 0, чтобы отключить проверку доступности ядра.
	Значение по умолчанию — 2,0 с.
		
reset.dap_recover.timeout (float) 
	Timeout for waiting for the DAP to be accessible after reset. 
	If the timeout lapses, an attempt will be made to reconnect the DP and retry. 
	Default is 2.0 s.
		*******
	Истекло время ожидания доступности точки доступа после сброса.
	По истечении времени ожидания будет предпринята попытка переподключить точку
	доступа и повторить попытку.
	Значение по умолчанию — 2,0 с.
		
reset.halt_timeout (float) 
	Timeout for waiting for the core to halt after a reset and halt. 
	Default is 2.0 s.
		*******
	Тайм-аут ожидания остановки ядра после сброса и остановки.
	Значение по умолчанию — 2,0 с.
		
reset.hold_time (float) 
	Number of seconds to hold hardware reset asserted. 
	Default is 0.1 s (100 ms).
		*******
	Количество секунд, в течение которых ожидается подтверждение аппаратного сброса.
	Значение по умолчанию — 0,1 с (100 мс).
		
reset.post_delay (float) 
	Number of seconds to delay after a reset is issued. 
	Default is 0.1 s (100 ms).
		*******
	Количество секунд задержки после сброса.
	Значение по умолчанию — 0,1 с (100 мс).
		
reset_type (str) 
	Which type of reset to use by default 
	('default', 'hw', 'sw', 'sw_system', 'sw_core', 'sw_sysresetreq', 'sw_vectreset',
	'sw_emulated', 'system', 'core', 'sysresetreq', 'vectreset', 'emulated'). 
	The default is 'sw', which itself defaults to 'sw_system'.
		*******
	Какой тип сброса использовать по умолчанию?
	('default', 'hw', 'sw', 'sw_system', 'sw_core', 'sw_sysresetreq', 'sw_vectreset',
	'sw_emulated', 'system', 'core', 'sysresetreq', 'vectreset', 'emulated').
	По умолчанию используется 'sw', что, в свою очередь, соответствует 'sw_system'.
		
resume_on_disconnect (bool) 
	Whether to run target on disconnect.
		*******
	Запускать ли цель при отключении.
	
rtos.enable (bool) 
	Overall enable flag for RTOS aware debugging. 
	By default it's enabled but can be switched off if necessary.
		*******
	Флаг общего включения отладки с учётом RTOS.
	По умолчанию он включён, но при необходимости его можно отключить.
		
rtos.name (str) 
	Name of the RTOS plugin to use. 
	If not set, all RTOS plugins are given a chance to load.
		*******
	Имя используемого плагина RTOS.
		
scan_all_aps (bool) 
	Controls whether all 256 ADIv5 AP addresses will be probed. 
	Default is False.
		*******
	Управляет проверкой всех 256 адресов точек доступа ADIv5.
	Значение по умолчанию — False.
		
semihost.commandline (str) 
	Program command line string, used for the SYS_GET_CMDLINE semihosting request.
		*******
	Строка командной строки программы, используемая для запроса полухостинга SYS_GET_CMDLINE.
		
semihost_console_type (str) 
	If set to "telnet" then the semihosting telnet server will be started, 
	otherwise semihosting will print to the console.
		*******
	Если установлено значение «telnet», будет запущен Telnet-сервер Semihosting.
	В противном случае Semihosting выведет данные на консоль.
		
semihost_use_syscalls (bool) 
	Whether to use GDB syscalls for semihosting file access operations.
		*******
	Использовать ли системные вызовы GDB для полухостинговых операций доступа к файлам
		
serve_local_only (bool) 
	When this option is True, the GDB server, probe server, and semihosting telnet, 
	and raw SWV server are only served on localhost. 
	Set to False to enable remote connections.
		*******
	Если этот параметр установлен на True, сервер GDB, сервер зондов, полухостинговый Telnet 
	и сервер Raw SWV обслуживаются только на локальном хосте.
	Установите значение False, чтобы разрешить удалённые подключения.
		
smart_flash (bool) 
	If set to True, the flash loader will attempt to not program pages whose contents
	are not going to change by scanning target flash memory. 
	A value of False will force all pages to be erased and programmed. 
	Default is True.
		*******
	Если установлено значение True, загрузчик флеш-памяти попытается не программировать страницы,
	содержимое которых не будет изменяться при сканировании целевой флеш-памяти.
	Значение False приведёт к принудительному очистке и программированию всех страниц.
	Значение по умолчанию — True.
		
soft_bkpt_as_hard (bool) 
	Replace software breakpoints with hardware breakpoints.
		*******
	Замените программные точки останова аппаратными.
		
step_into_interrupt (bool) 
	Enable interrupts when performing step operations.
		*******
	Включить прерывания при выполнении пошаговых операций.
		
stlink.v3_prescaler (int) 
	Sets the HCLK prescaler of an STLinkV3, changing performance versus power tradeoff. 
	The value must be one of 1=high performance (default), 2=normal, or 4=low power.
		*******
	Устанавливает предделитель частоты HCLK STLinkV3, изменяя соотношение производительности
	и энергопотребления.
	Значение должно быть одним из следующих: 1 = высокая производительность (по умолчанию),
	2 = нормальная или 4 = низкое энергопотребление.
		
swv_clock (int) 
	Frequency in Hertz of the SWO baud rate. 
	Default is 1 MHz.
		*******
	Частота передачи данных SWO в герцах.
	Значение по умолчанию — 1 МГц.
		
swv_raw_enable (bool) 
	Enable flag for the raw SWV stream server.
		*******
	Включить флаг для сервера необработанного потока SWV.
		
swv_raw_port (int) 
	TCP port number for the raw SWV stream server.
		*******
	Номер порта TCP для сервера потока raw SWV.
		
swv_system_clock (int) 
	Frequency in Hertz of the target's system clock. 
	Used to compute the SWO baud rate divider. 
	No default.
		*******
	Частота в герцах системного тактового генератора.
	Используется для вычисления делителя скорости передачи SWO.
	Значение по умолчанию отсутствует.
		
target_override (str) 
	Name of target to use instead of default.
		*******
	Имя цели, которое следует использовать вместо значения по умолчанию.
		
telnet_port (int) 
	Base TCP port number for the semihosting telnet server.
		*******
	Базовый номер порта TCP для полухостингового сервера Telnet.
		
test_binary (str) 
	Name of test firmware binary.
		*******
	Имя двоичного файла тестовой прошивки.
		
user_script (str) 
	Path of the user script file.
		*******
	Путь к файлу пользовательского скрипта.
		
vector_catch (str) 
	Enable vector catch sources.
		*******
	Включить источники улавливания векторов.
		
warning.cortex_m_default (bool) 
	Whether to show the warning about use of the cortex_m target type. 
	Default is True.
		*******
	Показывать ли предупреждение об использовании целевого типа cortex_m.
	Значение по умолчанию — True.
		
xpsr_control_fields (bool) 
	When set to True, XPSR and CONTROL registers will have their respective bitfields defined
	for presentation in gdb.
		*******
	Если установлено значение True, регистры XPSR и CONTROL будут иметь соответствующие битовые поля,
	определенные для представления в GDB.	
		

Автономный загрузчик весьма вероятно содран с этого, есть ссылки для скачивания ПО, но очень уж как-то мудрёно!

Наткнулся, что NRST для оных нужен, как я и говорил выше.

Набрел на этот проект управляемого преобразователя DC-DC на STM32, подумалось, что 8-ноговая PY32F003L18 прекрасно там справится, при 5-ти то вольтах питания да ей конкуренции нет.
Ну что @толстый , тема то твоя, или я один тут отдуваться буду )))
PS я подскажу куда подойти чтобы тебе жменю насыпали

Скачать программу для программирования через ISP можно на сайте:
там же есть и загрузчик, X-MODEM, для размещения в конце флэша, занимает 1kb

Система команд контроллера:

Ну вот почему вместо PUYA я всё время читаю ПЫНЯ? И плююсь при этом. Ужос.)

Мож “характер такий”(с)?

Устану идти :slightly_smiling_face:

Думаю не в характере дело. В людях.
Говно - оно и Африке говно!

ладно, я сейчас на attiny моделирую, как доделаю и если ещё не пропадёт желание перетяну и на puya
ЗЫ чтобы не говорил, что отмазываюсь