Skocz do zawartości

Pomocna odpowiedź

Napisano

Witam,

Ostatnio zauważyłem problem podczas wgrywania programu dla mikrokontrolera STM32F429. Problem objawia się następująco:

-Tworzę nowy projekt -> zapisuje, builduje, (nie ma błędów) -> wgrywam program poprzez Utility (wybierając plik z rozszerzeniem HEX) -> działa.

- Biorę ten sam projekt i wprowadzam pewne modyfikacje (np. zmieniam częstotliwość w CUBE, wybieram inny pin itp, generalnie drobne zmiany) -> zapisuje, builduje (nie ma błędów) -> wgrywam, i niestety bez powodzenia. Załączam screena z Utility po nieudanej próbie wgrania kodu.

Doszedłem do tego, że raczej wina leży po stronie Workbencha i niepoprawnie utworzonego pliku z rozszerzeniem HEX (plik ten jest praktycznie pusty, sprawdziałem go notatnikiem), ponieważ gdy chcę wgrać inny projekt wówczas wszystko działa poprawnie.

Próbowałem odinstalować oprogramowanie i zainstalować od nowa. Nie pomogło.

Czy ktoś spotkał się z czymś takim?

blad.png

(edytowany)

Zastanawiam się skąd bierzesz plik hex i po co go używasz.

W domyślnych ustawieniach System Workbench nie ma możliwości generowania pliku w tym formacie.

Używasz jakiegoś dodatkowego pluginu, czy jeszcze jakoś inaczej go generujesz?

W SW jest przecież przycisk "Run", który z poziomu Eclipse wgrywa plik elf do procesora, nie ma potrzeby używania ST link utility.

Na początku jest trudność z takim sposobem, ale w projekcie należy zmodyfikować opcje debuggera i bez problemu z każdego projektu można wgrywać  wsady do mikrokontrolera.

Wszystko wskazuje, że używamy tej samej wersji SW.

 

Edytowano przez Zealota
jeszcze coś dopiszę

@slon dzięki za podzielenie się Twoim rozwiązaniem 🙂 

Zrobiliśmy u siebie testy kilka dni temu i doszliśmy do wniosku, że to musi być jednak błąd w aktualizacjach CubeMX/SW, ponieważ takie same problemy pojawiały się nawet przy dokładnym odtwarzaniu instrukcji zamieszczonych na stronach ST. Zobaczymy czy u innych zadziała Twoje rozwiązanie 😉

  • 1 miesiąc później...

Aktualnie borykam się z takim samym problemem. Doszedłem do tego, że wina jest po stronie STM32CubeMx. Zrobiłem 2 kopie działających projektów, a następnie próbowałem "zepsuć" jeden z nich. Kod pozostawiłem ten sam, tylko generowałem projekt na różne sposoby w STM32CubeMx. Po uzyskaniu spodziewanego efektu, podmieniałem pliki z tego złego do tego dobrego i testowałem patrząc po zawartości pliku hex/elf. Wyniki jakie uzyskałem:

zepsuta wersja projektu wygenerowana w CubeMx zawsze miała pusty plik w lokalizacji: ....\<nazwa_projektu>\SW4STM32\<nazwa_projektu>\<plik_z_rozszerzeniem_ld> w moim przypadku było to "STM32F429ZITx_FLASH.ld". Po podmianie jedynie zawartości tego pliku z projektu działającego, do tego "złego" wszystko działało. Jest on odpowiedzialny, tak z grubsza, za organizację pamięci w uC. Plik zmienia się tylko wtedy, gdy generuje się nowy projekt w STM32CubeMx. Oczywiście po usunięciu tego pliku z projektu, kompilacja się zatrzymuje.

Macie jakieś pomysły jak to naprawić?

Załączam także ten plik - https://pastebin.com/6fHHZHp5

  • Lubię! 1
  • Pomogłeś! 1

@gregoor witam na forum 🙂

Tak, masz rację - to błąd w oprogramowaniu. Kontaktowałem się z ST i ten problem został potwierdzony. Ma być naprawiony w aktualizacji, a do tej pory najlepiej ręcznie kopiować wspomniany przez Ciebie plik.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...