logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Stm32 - Kompatybilność PMSM FOC LIBv3.4_WEB z GCC i problem z PWMC_Init

Smashing 22 Maj 2014 18:48 1959 8
REKLAMA
  • #1 13625543
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam

    Wczoraj z z nudów znalazłem bibliotekę STM32 PMSM FOC LIBv3.4_WEB i program
    do konfiguracji ST Motor Control WorkBench SDK34.
    Wszystko ładnie wygląda ale....
    Nie wie ktoś czy te biblioteki np MC_Library_STM32F4xx_single_drive.a
    działają pod GCC czy one są tylko pod EWARM.
    Bo po godzinie walki udało mi się to skompilować pod Eclipse dodając MC_Library_STM32F4xx_single_drive.a ale program się wiesza na
    Kod: text
    Zaloguj się, aby zobaczyć kod

    w pliku MCTasks.c
    Tak że nie wiem czy coś złe poustawiałem że ten lib nie jest pod GCC

    Z tego co widzę lib jest na pewno pod IAR czyli guuuzki z tego...

    Pozdrawiam
  • REKLAMA
  • #2 13625813
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Generalnie pliki takie powinny być niezależne od platformy - ważne tylko abyś tak samo skonfigurował kompilator, np. jeśli w bibliotece używane są liczby zmiennoprzecinkowe, to musisz wybrać ten sam tryb zmiennego przecinka (soft, softfp, hard).

    Co do tego wywołania, to nie powinieneś przekazywać adresów zamiast wartości?

    4\/3!!
  • REKLAMA
  • #3 13625900
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam
    ogólnie wywołanie takie jest oryginalnie i go nie zmieniam. (PWMC_Init jest ich libie)
    Program się mi na początku nie skompilował bo nie było funkcji :
    Kod: text
    Zaloguj się, aby zobaczyć kod
    . Dodałem ją (typu void na początek)ale program nawet nie zdąży jej wykonać.

    ST ma jeszcze STemWin (wiem to inny temat)w nim daje 3 liby osobne dla GCC osobne dla IAR i KEIL
    Jak zamiast STemWin522_CM4_OS_GCC.a dałem STemWin522_CM4_OS_IAR.a
    program się mi nie chce skompilować bo brakuje:
    __aeabi_memcpy
    __aeabi_memclr4
    __aeabi_memcpy4
    __aeabi_memclr
    __aeabi_memset
    __aeabi_memmove

    Na testy dałem je typy void, program zaczynał w nie skakać i po chwili HardFault.
    Nie wiem czy mogę zastosować zwykłe memcp i memset zamiast tych __aeabi i zobaczyć czy pojawi mi się coś na wyświetlaczu to by znaczyło że lib z IAR działa z GCC
    i problem mam w złej konfiguracji PMSM FOC LIBv3.4_WEB
    Tylko konfiguracje robi się przez program graficzny i jak by coś było źle to plki .h się nie chcą wygenerować (te 4 pliki dodaje potem to projektu i kompiluje z MC_Library_STM32F4xx_single_drive.a )

    Pozdrawiam
  • REKLAMA
  • #4 13625947
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Smashing napisał:
    Na testy dałem je typy void, program zaczynał w nie skakać i po chwili HardFault.
    Nie wiem czy mogę zastosować zwykłe memcp i memset zamiast tych __aeabi i zobaczyć czy pojawi mi się coś na wyświetlaczu to by znaczyło że lib z IAR działa z GCC

    Myślę, że spokojnie możesz je zastąpić standardowymi funkcjami - na pewno będzie lepiej niż teraz, może akurat problem zniknie.

    4\/3!!
  • REKLAMA
  • #5 13626516
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam
    Masz rację, STemWin działa z STemWin522_CM4_OS_IAR.a na GCC z:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    czyli moja teoria legła w gruzach, po zmianach na "soft" jest błąd kompilacji
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Na softfp i hard procek się wiesza.
    Popatrzę może coś w tej konfiguracji przeoczyłem

    Pozdrawiam
  • #6 13626768
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Smashing napisał:
    Popatrzę może coś w tej konfiguracji przeoczyłem

    Możesz poszukać też informacji o tych magicznych funkcjach z IARa, bo może któraś ma parametry w innej kolejności i w tym jest teraz problem? Albo może w którejś parametry trzeba lekko zmodyfikować (podzielić/pomnożyć)?

    4\/3!!
  • #7 13627168
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam
    Generalnie sprawdziłem też stm32F1 i jest to samo,
    dochodzę zawsze do tego samego momentu:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Po skoku do R3LM1_Init
    Jak jestem na 08007034: stmdb sp!, {r4, r5, r6, r7, r8, lr} // tu jestem to jest ok
    robię jeden step i Fault

    Pozdrawiam
  • #8 13627196
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Może po prostu stos się przepełnia?

    W każdym razie te parametry "oCurrSensor[0], oFOC[0]" są na 100% traktowane jako wskaźniki - nie byłby to pewnie pierwszy głupi błąd w kodach od ST...

    0800605d: ldr r2, [r0, #80] ; 0x50 <- odczyt spod adresu równego (pierwszy argument + 80)

    4\/3!!
  • #9 13628017
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam
    Znalazłem takie coś na stronie stm32 ale nikt nie odpowiedział na tego posta:

    I figured out some troubles during the migration of the FOC-library to the arm-none-eabi toolchain:
    The toolchain uses 32-bit wchar_t, but the library is compiled with 16-bit wchar_t. I'm not shure if this is the reason for a HardFault in PWMC_Init. It also seems that there are conflicts in the platform configuration.
    Is it possible to provide a library compiled with 32-bit wchar_t?
    Regards, Clemens
    PS: Please let me know if I have a chance to get the source code


    Czyli pewnie guzik z tego....

    Jednak ktoś odpowiedział:
    Hello Clemens,
    you can contact your nearest ST office or ask your distributor to do it to get source code.
    Best Regards,
    Billino


    Na IAR działa, na F1 program ma 27kb, czyli mieści się w limicie 32kb

    Pozdrawiam

Podsumowanie tematu

✨ Użytkownik zadał pytanie dotyczące kompatybilności biblioteki STM32 PMSM FOC LIBv3.4_WEB z kompilatorem GCC oraz problemu z funkcją PWMC_Init. Po próbie kompilacji w Eclipse, program zawieszał się na wywołaniu PWMC_Init, co sugerowało problemy z konfiguracją lub niekompatybilnością biblioteki. Użytkownicy zasugerowali, aby sprawdzić konfigurację kompilatora oraz zastąpić funkcje __aeabi_memcpy i __aeabi_memclr standardowymi funkcjami, co mogłoby rozwiązać problem. Dodatkowo, zauważono, że mogą występować konflikty w konfiguracji platformy oraz różnice w typach danych (16-bitowe vs 32-bitowe wchar_t), co również mogło przyczynić się do błędów. Użytkownik potwierdził, że na IAR biblioteka działa poprawnie, a problem może leżeć w złej konfiguracji lub niekompatybilności z GCC.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA