Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32L151] - zczytanie zawartości FLASH, RAM, systemowa poprzez SWD

jaco777 23 Kwi 2017 18:07 1509 2
  • #1 23 Kwi 2017 18:07
    jaco777
    Poziom 24  

    Witam. Dawno, dawno temu programowałem na własne potrzeby układy Atmega, ale minęło sporo czasu, baaardzo dawno tego nie robiłem i teraz potrzebuję Waszego wsparcia z innym, nowym nieznanym mi układem.

    Mam urządzenie oparte na układzie z rodziny STM32 a dokładniej STM32L151. Chciałem zrobić kopię bezpieczeństwa obecnego oprogramowanie tego układu – czyli flash, systemowa i ewentualnie RAM.

    Urządzenie posiada złącze do aktualizacji oprogramowania z następującymi ośmioma bezpośrednimi wyprowadzeniami z układu STM32L151:
    - pin 47 VSS_2 S - VSS_2 - - czyli masa,
    - pin 48 VDD_2 S - VDD_2 - - czyli zasilanie +3.3VDC,
    - pin 7 NRST I/O RST NRST - - czyli RESET,
    - pin 46 PA13 I/O FT JTMSSWDIO JTMS-SWDIO – czyli SWDIO,
    - pin 49 PA14 I/O FT JTCKSWCLK JTCK-SWCLK – czyli SWDCLK,
    - pin 50 PA15 I/O FT JTDI TIM2_CH1_ETR/ SPI1_NSS/ SPI3_NSS/I2S3_WS/ LCD_SEG17/JTDI – czyli ???,
    - pin 54 PD2 I/O FT PD2 TIM3_ETR/LCD_SEG31 /LCD_SEG43/ LCD_COM7 – czyli ???,
    - pin 55 PB3 I/O FT JTDO TIM2_CH2/SPI1_SCK/ SPI3_SCK/I2S3_CK/ LCD_SEG7/JTDO COMP2_INM – czyli dioda sygnalizacyjna ???
    - pin 56 PB4 I/O FT NJTRST TIM3_CH1/SPI1_MISO/ SPI3_MISO/LCD_SEG8 /NJTRST COMP2_INP - czyli dioda sygnalizacyjna ???
    Piny 50 PA15 i 54 PD2 są ze sobą zwarte i wyprowadzone do złącza aktualizacji softu.
    Pin 60 Boot0 jest podłączony przez rezystor 10 kΩ do masy.
    [STM32L151] - zczytanie zawartości FLASH, RAM, systemowa poprzez SWD

    Oczywiście trochę posiedziałem, poszukałem i poczytałem o tym jak się programuje te układy. Obecnie wiem, a raczej domyślam się, że muszę skorzystać z tego typu złącza SWD do programowania:
    [STM32L151] - zczytanie zawartości FLASH, RAM, systemowa poprzez SWD

    Dodatkowo muszę wykonać zespół resetowania, taki jak tu. Boot0 już jest zmasowany na stałe ale przez rezystor 10 kOhm nie 0 Ohm, jak na schemacie poniżej:
    [STM32L151] - zczytanie zawartości FLASH, RAM, systemowa poprzez SWD





    Pozostają jeszcze piny PB3 i PB4, które zapewne służą do sygnalizacji postępu programowania jak tutaj:
    [STM32L151] - zczytanie zawartości FLASH, RAM, systemowa poprzez SWD

    I na koniec pin 50 PA15 i pin 54 PD2, które to są ze sobą połączone i wyprowadzone do złącza programowania. Nie wiem jaką to ma spełniać rolę.

    Następnie potrzebuję programu do flash’owania ze strony producenta, ale:
    - „Flash Loader Demonstrator”chyba nie obsługuje SWD,
    - potrzebuję chyba "ST Visual Programmer" ?

    I na koniec programator, czyli np:
    - https://botland.com.pl/programatory/4481-prog...bugger-stm8stm32-zgodny-z-st-linkv2-mini.html
    - https://kamami.pl/programatory-stm32/559992-z...-debugger-swd-dla-mikrokontrolerow-stm32.html

    Czy moje powyższe rozumowanie jest prawidłowe ?
    Jaki polecacie programator, abym później mógł w pełni obsługiwać ten układ, np. modyfikować wgrany soft?
    Czy po zgraniu wsadu z układu (zapewne w BIN lub HEX), jest możliwa jego dekompilacja celem kosmetycznych poprawek, typu spolszczenie komunikatów ?

    Producent urządzenia przewidział aktualizację tylko w formie wysyłkowej, a jak wiadomo, nowszy soft nie zawsze jest lepszy. Dodatkowo ponowna konfiguracja urządzenia jest mozolna i czasochłonna, dosłownie kilkaset kliknięć w micro switch. I dlatego wolę wykonać kopię obecnego oprogramowania oraz ustawień.

    0 2
  • Pomocny post
    #2 23 Kwi 2017 20:51
    polprzewodnikowy
    Poziom 26  

    Żeby programować STMy potrzebujesz najtańszego ST-Linka, np. takiego jak w pierwszym linku i programu ST-Link Utility. Obsługa tego programu jest intuicyjna i nie powinna sprawiać kłopotu. Do programatora podłączasz tylko SWDIO, SWDCLK i masę. Twoim największym problemem może być zablokowany odczyt danych z uC co jest bardzo prawdopodobne skoro jest to urządzenie komercyjne.

    0
  • #3 27 Kwi 2017 23:40
    jaco777
    Poziom 24  

    Dzięki za porady.

    Zakupiłem "kabel" ST-Link. Podłączyłem SWDIO, SWDCLK, GND i +3.3VDC. Po kliknięciu w "Connect" mam:

    Code:
    23:28:48 : Device ID:0x427 
    
    23:28:48 : Device flash Size : 256KBytes
    23:28:48 : Device family :STM32L1xx medium density plus
    23:28:48 : Can not read memory!
    Disable Read Out Protection and retry.

    Na próbę podłączyłem też RESET. Dalej takie same komunikaty. W "Option Bytes" mam "Read Out Protection: Level 1".

    Czyli producent zablokował możliwość odczytu i nic sensownego nie da się już zrobić ?
    Jedynie jakieś super firmy, odzyskujące za tysiące dolarów ?

    0