LINUX.ORG.RU

Как мне содрать прошивку с MS51FB9AE при помоши openocd

 , ,


0

1

добрый день форумчане, вопрос простой но на практике окозалось очень сложным

мне нужно понять как правильно прошивать или дампить прошивку с этой микросхемы аи и интернет не дал мне никакой информации по этому поводу
даташит: https://www.alldatasheet.com/datasheet-pdf/view/1133601/NUVOTON/MS51FB9AE.html
прогер: ftdi232h
подключен через swd

https://github.com/OpenNuvoton/OpenOCD-Nuvoton-8051
есть конкретно для него но у меня он не собираться через исходники
вопрос банален как мне бекапнуть с него прошивка желатьльно по шагам step by step спасибо!!!

★★

Последнее исправление: dataman (всего исправлений: 1)

есть конкретно для него но у меня он не собираться через исходники

step by step

Как собирали пошагово? Какие ошибки были?

как мне бекапнуть с него прошивка желатьльно по шагам step by step спасибо!!!

Для такого, к сожалению, нужен человек, у которого есть точно такая же железка.

Jullyfish ★★
()
Ответ на: комментарий от Jullyfish

сначала запустил config потом make

ulink.c:1524:50: note: earlier argument should specify number of elements, later size of each element
cc1: all warnings being treated as errors
make[7]: *** [Makefile:927: libocdjtagdrivers_la-ulink.lo] Ошибка 1
make[7]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag/drivers»
make[6]: *** [Makefile:1102: all-recursive] Ошибка 1
make[6]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag/drivers»
make[5]: *** [Makefile:551: all-recursive] Ошибка 1
make[5]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag»
make[4]: *** [Makefile:424: all] Ошибка 2
make[4]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag»
make[3]: *** [Makefile:628: all-recursive] Ошибка 1
make[3]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src»
make[2]: *** [Makefile:466: all] Ошибка 2
make[2]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src»
make[1]: *** [Makefile:522: all-recursive] Ошибка 1
make[1]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051»
make: *** [Makefile:430: all] Ошибка 2
SPRATAY ★★
() автор топика
Ответ на: комментарий от yars068

Как собрать, указано в этом файле. Пошаговая инструкция внутри. а я как собираю интересно?, он собираеться буквально одной командой по инструкции

SPRATAY ★★
() автор топика
Ответ на: комментарий от SPRATAY

Локализация в выводе терминала вызывает очень сильный дискомфорт.

Попробовал собрать. Вывод вы дали, а самые важные строчки, которые чуть выше, не показали:

ulink.c: In function 'ulink_queue_scan':
ulink.c:1524:50: error: 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args]
 1524 |                 tdo_buffer_start = calloc(sizeof(uint8_t), scan_size_bytes);
      |                                                  ^~~~~~~
ulink.c:1524:50: note: earlier argument should specify number of elements, later size of each element

Ну ладно, поворчал и хватит. В общем, тут это решается запуском:

./configure --disable-werror

Но, к сожалению, сильно дальше там ошибка выскакивает. Файл src/flash/nor/numicro.c. Я закомментировал строчку 137:

#if 0                                                                           
extern m_nulink_usb_handle;                                                     
#endif

После этого всё скомпилировалось. Насколько программа живая, я вам не скажу, это только вы можете проверить.

Jullyfish ★★
()
Ответ на: комментарий от Jullyfish

Да, посмотрел. Проект допиливать надо. Если пытаться собрать с -Wno-error-*, последовательно переводя ошибки в некритические, то там будет такое:

arm920t.c:255:9: error: 'arm9tdmi_write_core_regs' accessing 64 bytes in a region of size 8 [-Werror=stringop-overflow=]
  255 |         arm9tdmi_write_core_regs(target, 0x2, regs);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arm920t.c:255:9: note: referencing argument 3 of type 'uint32_t[16]' {aka 'unsigned int[16]'}

К чему это может привести, тут многие знают лучше меня.

Я закомментировал

Просто ./configure --enable-ulink=no. Необязательно собирать, включая поддержку всех типов программаторов – достаточно оставить нужный.
К тому же, там ещё надо права на выполнение некоторым файлам дать и пакет jimtcl поставить.

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 8)
Ответ на: комментарий от yars068

Да, посмотрел. Проект допиливать надо.

Или, если я правильно понимаю, трясти с вендора нормальные исходники. Не исключено, что было выложено, чтобы кто-то отстал. А может действительно всё так криво сделали.

К тому же, там ещё надо права на выполнение некоторым файлам дать

Раз ТС смог запустить ./configure, значит он всё это успешно проделал.

Jullyfish ★★
()
Ответ на: комментарий от Jullyfish

полный вывод ./configure
полный вывод make

После этого всё скомпилировалось. Насколько программа живая, я вам не скажу, это только вы можете проверить.

Мне на самом деле плевать как и каким образом сдампить прошивку, к сожелению это единственный софт который в теории может помочь в этом не легком деле

Или, если я правильно понимаю, трясти с вендора нормальные исходники. Не исключено, что было выложено, чтобы кто-то отстал. А может действительно всё так криво сделали.

это бесполезно это же китайцы им вообще тупо пофиг

SPRATAY ★★
() автор топика
Ответ на: комментарий от Jullyfish

я это сделал, всеравно make дохнет

nulink_usb.c:1167:12: error: 'nulink_usb_write_mem8' defined but not used [-Werror=unused-function]
 1167 | static int nulink_usb_write_mem8(void *handle, uint32_t addr, uint16_t len,
      |            ^~~~~~~~~~~~~~~~~~~~~
nulink_usb.c:1088:12: error: 'nulink_usb_read_mem8' defined but not used [-Werror=unused-function]
 1088 | static int nulink_usb_read_mem8(void *handle, uint32_t addr, uint16_t len,
      |            ^~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[7]: *** [Makefile:1018: libocdjtagdrivers_la-nulink_usb.lo] Ошибка 1
make[7]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag/drivers»
make[6]: *** [Makefile:1102: all-recursive] Ошибка 1
make[6]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag/drivers»
make[5]: *** [Makefile:551: all-recursive] Ошибка 1
make[5]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag»
make[4]: *** [Makefile:424: all] Ошибка 2
make[4]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src/jtag»
make[3]: *** [Makefile:628: all-recursive] Ошибка 1
make[3]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src»
make[2]: *** [Makefile:466: all] Ошибка 2
make[2]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051/src»
make[1]: *** [Makefile:522: all-recursive] Ошибка 1
make[1]: выход из каталога «/mnt/disk2/tools/micro/OpenOCD-Nuvoton-8051»
make: *** [Makefile:430: all] Ошибка 2

так же я использовал ./configure –enable-ulink=no –enable-nulink=no

OpenOCD configuration summary
--------------------------------------------------
MPSSE mode of FTDI based devices        yes (auto)
Segger J-Link JTAG Programmer           yes (auto)
ST-Link JTAG Programmer                 yes (auto)
TI ICDI JTAG Programmer                 yes (auto)
Nu-Link Programmer                      no
Keil ULINK JTAG Programmer              no
Altera USB-Blaster II Compatible        yes (auto)
Versaloon-Link JTAG Programmer          yes (auto)
OSBDM (JTAG only) Programmer            yes (auto)
eStick/opendous JTAG Programmer         yes (auto)
Andes JTAG Programmer                   yes (auto)
USBProg JTAG Programmer                 no
Raisonance RLink JTAG Programmer        no
Olimex ARM-JTAG-EW Programmer           no
CMSIS-DAP Compliant Debugger            yes (auto)

можно конечно все отключить кроме ftdi

SPRATAY ★★
() автор топика
Chip lock enable
1 = Chip is unlocked. Flash Memory is not locked. Their contents can be read out through a 
parallel Writer/ICP programmer.
0 = Chip is locked. Whole Flash Memory is locked. 
Their contents read through a parallel 
Writer or ICP programmer will be all blank (FFH). Programming to Flash Memory is invalid.
Note that CONFIG bytes are always unlocked and can be read. Hence, once the chip is 
locked, the CONFIG bytes cannot be erased or programmed individually. The only way to 
disable chip lock is execute “whole chip erase”. However, all data within the Flash Memory 
and CONFIG bits will be erased when this procedure is executed.
If the chip is locked, it does not alter the IAP function

читай регистр CONFIG0 и смотри второй младший бит (Lock) для начала

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 1)
Ответ на: комментарий от SPRATAY

Отличный развернутый ответ спасибо)))

Да, единственно верный в вашем случае.

Вы не описали проблему, чтобы в ней можно было разобраться и чем-то вам помочь её решить. Вы пришли и сказали: «у меня не получается, мне нужна пошаговая инструкция».

Вы из тех людей, кто под словом «помощь» имеет в виду «сделайте работу за меня». В русском языке это называется работой, для этого есть раздел Job.

ValdikSS ★★★★★
()

Я бы посоветовал поперебирать древние убунты и попробовать собрать на них, а не патчить исходники. Скорей всего китайцы собирали на них.

Альтернативно пошарься у них на сайте. Там есть какой-то эклипс. 100% что найдешь уже собранный openocd где-нибудь в дебрях.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от futurama

@all

короче я бомбанул и переписал конфиг вроде теперь пытаеться подключиться но к сожелению падает на ошибке

penocd -f interface/ftdi/ft232h-module-swd.cfg -f nu.cfg
Open On-Chip Debugger 0.12.0
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
Info : FTDI SWD mode enabled
swd
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : clock speed 400 kHz
Error: Error connecting DP: cannot read IDR

переписанный конфиг

# script for Nuvoton MuMicro Cortex-M0 Series

# Adapt based on what transport is active.
if [catch {transport select}] {
  echo "Error: unable to select a session transport. Can't continue."
  shutdown
}

proc swj_newdap {chip tag args} {
 if [using_hla] {
     eval hla newtap $chip $tag $args
 } elseif [using_jtag] {
     eval jtag newtap $chip $tag $args
 } elseif [using_swd] {
     eval swd newdap $chip $tag $args
 }
}

# Set Chipname
if { [info exists CHIPNAME] } {
	set _CHIPNAME $CHIPNAME
} else {
	set _CHIPNAME NuMicro
}

# SWD DP-ID Nuvoton NuMicro Cortex-M0 has SWD Transport only.
if { [info exists CPUDAPID] } {
	set _CPUDAPID $CPUDAPID
} else {
	set _CPUDAPID 0x0BB11477
}

# Work-area is a space in RAM used for flash programming
# By default use 2kB
if { [info exists WORKAREASIZE] } {
   set _WORKAREASIZE $WORKAREASIZE
} else {
   set _WORKAREASIZE 0x800
}


# Debug Adapter Target Settings
swj_newdap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUDAPID
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m -dap $_CHIPNAME.dap

$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0

# flash bank <name> numicro <base> <size(autodetect,set to 0)> 0 0 <target#>
#set _FLASHNAME $_CHIPNAME.flash
#flash bank $_FLASHNAME numicro 0 $_FLASHSIZE 0 0 $_TARGETNAME
# flash size will be probed
set _FLASHNAME $_CHIPNAME.flash_aprom
flash bank $_FLASHNAME numicro 0x00000000 0 0 0 $_TARGETNAME
set _FLASHNAME $_CHIPNAME.flash_data
flash bank $_FLASHNAME numicro 0x0001F000 0 0 0 $_TARGETNAME
set _FLASHNAME $_CHIPNAME.flash_ldrom
flash bank $_FLASHNAME numicro 0x00100000 0 0 0 $_TARGETNAME
set _FLASHNAME $_CHIPNAME.flash_sprom
flash bank $_FLASHNAME numicro 0x00200000 0 0 0 $_TARGETNAME
set _FLASHNAME $_CHIPNAME.flash_config
flash bank $_FLASHNAME numicro 0x00300000 0 0 0 $_TARGETNAME

# set default SWCLK frequency
adapter speed 400

# set default srst setting "none"
reset_config none

# HLA doesn't have cortex_m commands
if {![using_hla]} {
   # if srst is not fitted use SYSRESETREQ to
   # perform a soft reset
   cortex_m reset_config sysresetreq
}

proc exitDebugging {} {
   hla_close
   shutdown
}

$_TARGETNAME configure -event gdb-detach { exitDebugging }
╭─ /mnt/disk2/tools/micro/openocd-nuvoton ▓▒░··············

flashbank пока не трогал так как мне бы для начала установить связь с микро
подключенно у меня так

8 ножка микроконтролера sda к сдвоеной ножке ftdi с резистором swdio
18 ножка микроконтролера scl к ножке ftdi swdclk
7 vss к gnd ftdi
9 vdd к 5v ftdi

вот сама схема от openocd

# Adafruit      FT232H    JTAG       SWD
# Name  Pin     Name      Func       Func
#  D0   J1-3    ADBUS0    TCK        SWDCLK
#  D1   J1-4    ADBUS1    TDO/DI     SWDIO
#  D2   J1-5    ADBUS2    TDI/DO     SWDIO
#  D3   J1-6    ADBUS3    TMS        N/A
#  D4   J1-7    ADBUS4    (GPIOL0)   /nSRST  optional module reset
#  D5   J1-8    ADBUS5    (GPIOL1)   /nTRST  optional target reset
#  D6   J1-9    ADBUS6    (GPIOL2)
#  D7   J1-10   ADBUS7    (GPIOL3)
#  C0   J2-1    ACBUS0    (GPIOH0)
#  C1   J2-2    ACBUS1    (GPIOH1)
#  C2   J2-3    ACBUS2    (GPIOH2)
#  C3   J2-4    ACBUS3    (GPIOH3)
#  C4   J2-5    ACBUS4    (GPIOH4)
#  C5   J2-6    ACBUS5    (GPIOH5)
#  C6   J2-7    ACBUS6    (GPIOH6)
#  C7   J2-8    ACBUS7    (GPIOH7)
#  C8   J2-9    ACBUS8
#  C9   J2-10   ACBUS9
SPRATAY ★★
() автор топика
Ответ на: комментарий от futurama

Если этот МК прошивают при помощи ch341a, то и дамп снимать возможно им же.

к сожелению это фэк

SPRATAY ★★
() автор топика
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария