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.

STM32l100rct6 - STM32l100rct6 + keil uVision MDK 5 - brak plików

Imekxus 11 Maj 2016 23:02 1335 18
  • #1 11 Maj 2016 23:02
    Imekxus
    Poziom 17  

    Dzień dobry
    Mam problem, ponieważ nie posiadam plików w projekcie (funkcje obsługi przerwań + pliki nagłówkowe modułu StdPeriph_Driver):
    stm32l1xx_it.c oraz stm32lxx_conf.h
    Używam STM32L100C-DISCO, możliwe, że po prostu tutaj nie mają występować w projekcie te pliki? Używam książki Mikrkokontrolery STM32 w praktyce oraz podpieram się internetem, np. tu:

    Cytat:

    I tam są wymienione pliki ale do innego mikrokontrolera (z zestawu ZL92ARM) - jeżeli w moim tych plików po prostu nie ma być to powiem, że trochę, A NAWET BARDZO to irytujące, że z uC na uC po prostu je wyrzucili, mam je sam pisać? Screen z drzewa projektu:
    STM32l100rct6 - STM32l100rct6 + keil uVision MDK 5 - brak plików

    0 18
  • Pomocny post
    #2 11 Maj 2016 23:04
    2675900
    Użytkownik usunął konto  
  • #3 11 Maj 2016 23:06
    Imekxus
    Poziom 17  

    Piotrus_999 napisał:
    Proponowałbym zapomnieć już o SPL-u . To jest juz martwe.

    Czyli książka, którą posiadam jest, jakby to powiedzieć, zdeprecjonowana? co innego mam używać zamiast standar peripheral libraries?

    @edit
    i jeszcze lepiej: na jaki kurs mam się przerzucić, żeby było dobrze :P?

    0
  • Pomocny post
    #4 11 Maj 2016 23:08
    tadzik85
    Poziom 38  

    Imekxus napisał:
    Czyli książka, którą posiadam jest, jakby to powiedzieć, zdeprecjonowana? co innego mam używać zamiast standar peripheral libraries?


    Proponuje poradnik kolegi szczywronka. Dostępny na forum. Proponuje przejrzeć tematy przyklejone.

    0
  • #5 11 Maj 2016 23:18
    Imekxus
    Poziom 17  

    a czy ten poradnik z forum będzie "kompatybilny" z stm32L100? plus chciałbym też poradnik, który działa na blibiotekach a nie tylko rejestrach, szybciej bym się nauczył cortexów m3 na bibliotekach ewentualnie później zgłębiając to, jak się używa rejestrów, a tam pewnie są same rejestry a nie chciałbym stanąć na 50 stronie z powodu zmęczenia materiału

    0
  • #6 11 Maj 2016 23:27
    2675900
    Użytkownik usunął konto  
  • #7 11 Maj 2016 23:33
    Imekxus
    Poziom 17  

    Piotrus_999 napisał:
    Imekxus napisał:
    szybciej bym się nauczył cortexów m3 na bibliotekach ewentualnie później zgłębiając to, jak się używa rejestrów


    W HAL-u cz SPL-u utkniesz na 2-giej strukturze - bo tego się spamiętać nie da na trzeźwo - żeby choć diodą zamigać.

    A może Pan popełnił błąd (w sensie, że się nie zrozumieliśmy)? nie wiem co to SPL chwilowo, wiem, że mam keila i w nim zamierzałem programować za pomocą bibliotek CMSIS (pan mówi, że to SPL) - w książkach DLA POCZĄTKUJĄCYCH (a właściwie jednej z 1 posta) używany jest właśnie CMSIS.
    Chciałbym jednak uzyskać odpowiedzi na pytania:
    - dlaczego nie mam tych plików o których wspomniałem w projekcie?
    - czy ten poradnik z przyklejonych tematów nada się do STM32L100?

    0
  • Pomocny post
    #8 11 Maj 2016 23:44
    2675900
    Użytkownik usunął konto  
  • #9 20 Maj 2016 08:33
    MichGX
    Poziom 11  

    SPL - standard perihperal library oznacza skrót nazwy bibliotek, które użyte zostały w Twojej książce. Są one dostarczone przez producenta STM32 i nie do końca są martwe. Wiele projektów i tutoriali nadal jest o nie oparte. CMSIS - Cortex™ Microcontroller Software Interface Standard jest zbiorem uniwersalnych funkcji dla wszystkich CORTEXów takich jak np. konfiguracja TIMERA systick, zestaw funkcji sterujących ustawieniami sygnałów taktujących poszczególne peryferia. Generalnie producent STM32 zaleca używanie jego najnowszej biblioteki HAL, dzięki której możesz sobie swobodnie przenosić kod pomiędzy dowolnymi mikrokontrolerami STM32 czy to F0 czy F4 czy F1. W SPL należy dokonać czasem dość dużych modyfikacji do tego, i natnkąć się na dziwne błędy wynikające ze zmian wersji biblioteki SPL pod konkretny uC. Niestety słyszałem, że biblioteka HAL ma ponoć pare błędów, ale jest bardzo często aktualizowana więc nie mam pewności czy nie zostały one już wyeliminowane. Dodatkowo pod najnowsze proce od STM32 takie jak F7 i niektóre F4 zostały już napisane tylko funkcje HAL, nie znajdziesz nic opartego o SPL. Ja osobiście używam narzędzia VS GDB jest to nakłada do programowania ARM-ów za pomocą Visual Studia, ma ono gotową generację plików których potrzebujesz.
    LINK:
    http://visualgdb.com/tutorials/arm/stm32/f4_discovery/

    nie wiem tylko czy wspiera konkretnie STM32L100 natomiast z F0/F4/F7/F1 działa bez zarzutu. Kiepsko współpracuje (debug ma problem z wyświetleniem hardware'owych rejestrów) tylko z ARMami od NXP takimi jak LPC1114 czy 1768. Z infineonami działa świetnie. Nie testowałem środowiska pod Freescale.

    Pozdrawiam serdecznie,
    MichGX

    0
  • #10 20 Maj 2016 09:14
    grko
    Poziom 33  

    HAL to w zasadzie to samo co SPL. Jest przykłdem złego designu oprogramowania pod wieloma względami. Oto próbka absurdu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Przenoszenie kodu pewnie jest równie idiotyczne bo wszystkim nagłówkom trzeba zmienić nazwę. Dodatkowo używają zawsze preprocesora zamiast funkcji inline. No i jeszcze niedorzeczne typy danych:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Doczepię się jeszcze do API, które jest kompletnie niezrozumiałe. Weźmy za przykład USART:
    Link

    API składające się z 25 funkcji oraz 10 makr jest po prostu nieczytelne/nieintuicyjne/głupie itd

    0
  • #11 20 Maj 2016 09:21
    Freddie Chopin
    Specjalista - Mikrokontrolery

    GrzegorzKostka napisał:
    Oto próbka absurdu:

    Czy ja dobrze widzę, że tam wesoło robią "null dereference"? (;

    GrzegorzKostka napisał:
    No i jeszcze niedorzeczne typy danych:

    O tak, w swoim projekcie RTOSa już zastanawiam się, czy by nie pododawać choć nazw do struktur z typów takich jak USART_TypeDef żeby móc robić "forward declarations" w kodzie zamiast dołączać te gigantyczne nagłówki wszędzie...

    0
  • #12 08 Paź 2016 18:33
    Imekxus
    Poziom 17  

    Jestem jak widać kilka miesięcy po pierwszym poście, szczerze mówiąc zrezygnowałem wtedy z stm ze względu na ten cały miszmasz, którego nikt to końca chyba nie potrafi wyjaśnić...

    Teraz zabieram się ponownie, zgodnie z poradą używam poradnika z elektrody, niestety gość nie opisał jak skonfigurować toolchain za to zdążył pochwalić się, że konfiguracja jemu samemu zajęła 5 dni (WTF?).

    Mam problem, chcę sprawdzić czy w ogóle to całe openocd czy działa, niestety mam takie coś w konsoli:
    STM32l100rct6 - STM32l100rct6 + keil uVision MDK 5 - brak plików
    Google niezbyt pomaga (gościę przeinstalowują sterownik, ja mam stm32l1rtc discovery z stlinkv2 instalowanym wczoraj), ktoś ma pomysł co zrobić, żeby się połączyło?

    Próbowałem wszystkie pliki z folderu target zaczynające się na stm32l1

    0
  • Pomocny post
    #13 08 Paź 2016 18:50
    2675900
    Użytkownik usunął konto  
  • #14 08 Paź 2016 18:56
    Imekxus
    Poziom 17  

    Ok tak zrobię i jak się uda to zamykam ten temat już.

    0
  • #15 08 Paź 2016 19:03
    2675900
    Użytkownik usunął konto  
  • Pomocny post
    #16 08 Paź 2016 19:24
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Imekxus napisał:
    Mam problem, chcę sprawdzić czy w ogóle to całe openocd czy działa, niestety mam takie coś w konsoli:

    Google niezbyt pomaga (gościę przeinstalowują sterownik, ja mam stm32l1rtc discovery z stlinkv2 instalowanym wczoraj), ktoś ma pomysł co zrobić, żeby się połączyło?

    Próbowałem wszystkie pliki z folderu target zaczynające się na stm32l1

    Nie ma to jak działać totalnie na ślepo... Nie zastanowiło Cię to, że OpenOCD cały czas nie może znaleźć "Amontec JTAGkey", którego zapewne Ty w swoim domu też nie byłbyś w stanie znaleźć? Skoro wiec nie masz czegoś takiego, to czemu dziwisz się, że OpenOCD nie chce się z połączyć?

    openocd -f board/stm32ldiscovery.cfg

    Powyższa komenda to absolutnie wszystko co musisz zrobić z OpenOCD aby zadziałał. Jeśli nie zadziała, to masz zły sterownik, zainstaluj sobie wtedy WinUSB przy pomocy programu zadig - http://zadig.akeo.ie/

    0
  • #17 08 Paź 2016 19:44
    Imekxus
    Poziom 17  

    Dobra tylko na stronie http://www.freddiechopin.info/pl/artykuly/35-arm/59-arm-toolchain-tutorial?start=4 w pewnym kroku w eclipse miałem dopisać parametry:
    openocd -f interface/ftdi/jtagkey.cfg target/<tutaj_moj_procek>.cfg (bez openocd)
    Więc skąd miałem domyślić się komendy, którą napisałeś? tym bardziej, że w folderze target nie mam stm32ldiscovery.cfg.
    Jak rozumiem teraz miało by to wyglądać tak w eclipsie:
    openocd -f interface/ftdi/jtagkey.cfg board/stm32ldiscovery.cfg

    0
  • Pomocny post
    #18 08 Paź 2016 20:07
    Freddie Chopin
    Specjalista - Mikrokontrolery

    Imekxus napisał:
    Więc skąd miałem domyślić się komendy, którą napisałeś?

    Zapewne z tego co zostało tam napisane kilka słów wcześniej: "W moim przypadku (JTAG-lock-pick + makieta z LPC2103) ...".

    Imekxus napisał:
    Jak rozumiem teraz miało by to wyglądać tak w eclipsie:
    openocd -f interface/ftdi/jtagkey.cfg board/stm32ldiscovery.cfg

    Już zaczynasz kombinować. Napisałem Ci przecież powyżej, że "Powyższa komenda to absolutnie wszystko co musisz zrobić z OpenOCD aby zadziałał.", a Ty dalej dopisujesz komendy których w ogóle nie rozumiesz.

    Zrozum, że OpenOCD _NIGDY_ nie zadziała jak będziesz tam wpisywał "-f interface/ftdi/jtagkey.cfg", ponieważ po prostu NIE MASZ TAKIEGO INTERFEJSU. Fizycznie go nie posiadasz, nie jest podłączony do komputera, więc OpenOCD nigdy się z nim nie połączy. Masz inny interfejs - ST-Link - wchodzący w skład płytki Discovery. Więc albo nie kombinuj i wpisz dokładnie takie argumenty jak Ci podałem, albo faktycznie skorzystaj z powyższej porady użycia gotowego środowiska.

    0
  • #19 08 Paź 2016 20:33
    Imekxus
    Poziom 17  

    Ok teraz rozumiem (wcześniej ze względu na natłok skrótów nie zwracałem w ogóle uwagi na interface, myślałem, że coś jest nie tak z cfg targeta).

    0