Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[STM32F103RBT6][OpenOCD]Programowanie flasha działało i przestało...

bartek_T 03 Jun 2012 00:32 2735 10
Computer Controls
  • #1
    bartek_T
    Level 10  
    Witam, a więc działam sobie na płytce ZL31 z kamami, w wersji z odłączonym st-linkiem, za programator i debugger służy mi jtag-arm z andtechu, jest to urządzenie na bazie ft2232. Soft to toolchain skonfigurowany podług tutka freddiego chopina.
    Wszystko ładnie działało jak trzeba do dzisiaj, gdy w którymś momencie zauważyłem, że skompilowany program przestał się wgrywać do flasha, nie przypominam sobie, żebym zmieniał cokolwiek w konfiguracji, ot działało, i nie działa...
    Oto co wypluwa z siebie OpenOCD przy próbie wgrania wsadu:
    Open On-Chip Debugger 0.5.0 (2011-08-09-23:26)
    Licensed under GNU GPL v2
    For bug reports, read
    	http://openocd.berlios.de/doc/doxygen/bugs.html
    Info : only one transport option; autoselect 'jtag'
    1000 kHz
    adapter_nsrst_delay: 100
    jtag_ntrst_delay: 100
    cortex_m3 reset_config sysresetreq
    1000 kHz
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Info : clock speed 1000 kHz
    Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
    Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
    Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints
    Info : accepting 'gdb' connection from 3333
    Info : device id = 0x20036410
    Info : flash size = 128kbytes
    Warn : acknowledgment received, but no packet pending
    undefined debug reason 6 - target needs reset
    Error: address + size wrapped(0xffffffff, 0x00000004)
    Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
    Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
    target state: halted
    target halted due to debug-request, current mode: Handler HardFault
    xPSR: 0x01000003 pc: 0xfffffffe msp: 0xffffffdc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Warn : Block read error address 0x201f2dc8
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
    Warn : Block read error address 0xfffffff8
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xffffffc4
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xffffffc4
    Warn : Block read error address 0xffffffc0
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Warn : Block read error address 0x201f2dc8
    Error: stm32.cpu -- clearing lockup after double fault
    Polling target failed, GDB will be halted. Polling again in 100ms
    Error: address + size wrapped(0xffffffff, 0x00000004)
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xfffffffc
    Warn : Block read error address 0xfffffff8
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xffffffc4
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xffffffc4
    Warn : Block read error address 0xffffffc0
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x201f2dcc
    Warn : Block read error address 0x201f2dc8
    Polling succeeded again
    Error: address + size wrapped(0xffffffff, 0x00000054)
    Error: address + size wrapped(0xffffffff, 0x00000054)
    Error: address + size wrapped(0xffffffff, 0x00000054)
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR 0xffffffac
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR 0xffffffab
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR 0xffffffac
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR 0xffffffab
    Error: address + size wrapped(0xfffffffd, 0x00000020)
    Error: address + size wrapped(0xfffffffd, 0x00000020)
    Error: address + size wrapped(0xfffffffd, 0x00000020)
    Error: address + size wrapped(0xfffffffe, 0x00000020)
    Error: address + size wrapped(0xfffffffe, 0x00000020)
    Error: address + size wrapped(0xfffffffe, 0x00000020)
    Info : dropped 'gdb' connection


    Nie mam już zielonego pojęcia co się dzieje, w temacie mikrokontrolerów dopiero zaczynam...
  • Computer Controls
  • #2
    Freddie Chopin
    MCUs specialist
    Dorzuć do wywołania OpenOCD coś takiego:

    openocd -f ... -f ... -c "reset_config trst_and_srst"

    Może pomoże. Jak nie, to może jakimś sposobem zablokował Ci się flash - jak masz wyprowadzony UART i piny BOOT to podłącz się przez ST Flash Loader i zobacz.

    4\/3!!
  • Computer Controls
  • #3
    bartek_T
    Level 10  
    No więc dodałem, ale w eclipse nie pomogło...

    Natomiast wgrywając przez OpenOCD:
    
    >flash write_image "C:\\stm32_blink_led.elf" 0x00 elf
    auto erase enabled
    wrote 2048 bytes from file C:\stm32_blink_led.elf in 0.501007s (3.992 KiB/s)


    Po tym radośnie miga diodką. Da się też debugować z poziomu eclipse.

    Natomiast(po wcześniejszym wyczyszczeniu flasha):
    >load_image "C:\\stm32_blink_led.elf" 0x00 elf
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x8000004
    Error: JTAG-DP STICKY ERROR
    Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0x8000004
    Warn : Block write error address 0x8000000, wcount 0x12e
    in procedure 'load_image'
    


    No i po tym już nie działa. Więc chyba problem leży gdzieś po stronie eclipse...
  • #5
    bartek_T
    Level 10  
    Nie bardzo rozumiem, chodzi Ci o komunikat:
     Warn : Block write error address 0x8000000, wcount 0x12e?

    Przecież 0x8000000 to chyba początek pamięci flash? Po za tym to ta sama binarka, która ładnie się ładuje do flasha(chodzi mi o pierwszą komendę której listing pokazałem).

    Problemem tutaj jest, to, że eclipse przestał poprawnie ładować do flasha program. Nie jestem pewien, ale wydaje mi się, że wtyczka gdb używa do ładowania polecenia load_image, która widać szwankuje z jakiegoś powodu.

    Gdzie mogę znaleźć wyjaśnienie kodów tych błędów wypluwanych przez OpenOCD?
  • #7
    bartek_T
    Level 10  
    No dobrze. A co powinienem z tym teraz zrobić? Bo tak jak napisałem wcześniej, eclipse do pewnego momentu ładowało poprawnie do flasha odpowiedni obraz, teraz już nie chce. Nie wiem teraz gdzie może leżeć problem... OpenOCD sprawia wrażenie, że po jego stronie wszystko działa poprawnie, zakładam, że coś nie tak jest z eclipse, czyżby generowało nie taką binarkę jak trzeba? Czy może próbuje załadować ją nie tam gdzie trzeba?
  • #10
    gaskoin
    Level 38  
    Symbole też ładuje się z elfa a nie z listingu assemblerowego.
  • #11
    bartek_T
    Level 10  
    Dzięki! W tej chwili udało mi się doprowadzić do poprawnego działania eclipse. Zamiast korzystać z opcji w ramce "Load Image and Symbols" dodałem do "Initialization commands" polecenie "load". Jak na razie działa.