Arm cortex, how to?

Witam

Coś czuję, że życie zmusi mnie niedługo sięgnąć nieco wyżej niż 8 bitów.

W związku z tym mam pytanie o programator do procesorów CORTEX M0. Chodzi mi o możliwie prosty i tani programator tychże, taki odpowiednik USBasp od AVR.

Nie musi potrafić mieć cudów, tylko niech wpisze wynik kompilacji i linkowania do gołego procesora. No i żeby potrafił poustawiać jakieś bity czy co tam jest w tych procesorach do poustawiania.

Warunek konieczny: musi chodzić pod Linuksem, najlepiej z konsoli. Z pozostałymi rzeczami jak arm-gcc powinienem sobie poradzić (mam nadzieję).

Istnieje coś takiego? Ktoś ma jakieś doświadczenia? Zestawy evaluacyjne mnie niezbyt interesują.

Pozdrawiam

jp

Reply to
jacek pozniak
Loading thread data ...

W dniu 05.07.2017 o 15:48, jacek pozniak pisze:

Jak chcesz jedno narzędzie do wszystkich to chyba zostaje ci tylko open-ocd + jakiś interface SWD (np. J-link lub chiński klon)

Wydaje mi się, że prościej jednak jest kupić tanią płytkę testową od producenta uC i używać jej jako programatora/debugera:

np. do STM32 STM32L100C-DISCO:

formatting link
zdjęciu widać złącze podpisane SWD, wystarczy wyjąć jumpery.

Reply to
Zbych

Dzięki za odzew. Nie znam jeszcze terminologii świata ARM ale jeśli dobrze rozumiem:

Kupuję na Ali urządzenie 'j-link' (około $18), podłączam z jednej strony do komputera (usb) a z drugiej do pinów w mikroprocesorze. I tylko oprogramowanie jakieś mi potrzebne (muszę poszukać czy jest dla linuxa) i już mogę działać, tzn przesyłać binarkę do procesora?

Tak to wyglądać może?

jp

Reply to
jacek pozniak

W dniu 05.07.2017 o 19:57, jacek pozniak pisze:

Ceny się zaczynają od połowy tej kwoty, albo od 1/3, ale klony J-linka mogą być wykrywane przez oryginalne oprogramowanie seggera i nie będą działać. Chyba, że będzież korzystał tylko z Open-OCD, to wtedy nie powinno być z tym problemu.

Możesz też użyć programatora do STM32, załadować do niego soft zamieniający go w J-Linka. Wtedy masz w pełni legalny programator i możesz użyć oryginalnych narzędzi od seggera (ale tylko z STM32)

formatting link

Reply to
Zbych

Faktycznie są też tańsze :-)

Raczej z Open-OCD będę korzystał. Zacznę pomału kompletować sobie wszystko co potrzebne aby po wakacjach pomacać temat.

Wielkie dzięki za naprowadzenie!

jp

Reply to
jacek pozniak

Nie, kup ST-Link za $1.76 jesli zamierzasz zacząc od STM32. Te procesory poza JTAG wspierają rowniez protokół "dwudrutowy" ktory ładnie potrafi zrealizować ST-Link.

formatting link
, podłączam z jednej strony do

Tak. Oprogramowanie to OpenOCD. W powiązaniu z Eclipse pozwala na debugowanie w sposób "normalny" czyli breakpointy, wiązanie kodu ze stanem CPU itd.

Zasugerowalbym kupic płytki z serii Discovery, czasami wysypują sie na allegro i OLXie jak studenci kończą projekty i można wyszarpać poniżej

100zł.

Jesli lubisz minimalizstycznie to za $1.72 jest taka mini:

formatting link
Działa i można migac diodą.

Innymi słowy w 20zł z przesyłką z chin się zmieścisz.

Reply to
Sebastian Biały

W dniu 2017-07-05 o 15:48, jacek pozniak pisze

Ale zestawy STM32 nucleo czy discovery są już od 60pln. Mają na płytce moduł ST-Linka, który jak pamiętam można nawet oddzielić od płytki i używać osobno. M0 - to strasznie okrojony jest M3 - to sprawdzony rdzeń, jest już trochę na rynku, dużo przykładów etc.

Reply to
Jawi

Nie wiem jeszcze co to jest ST-Link, pewnie z czasem się dowiem. :) Cena jest ważna o tyle aby nie kosztowało, dajmy na to, 1000 zł. J-link (z Ali) wydaje mi się dobrym rozwiązaniem bo nie ma żadnego druciarstwa, płytek, jumperów, itp.; podłączam do gold pinów wyprowadzonych z procka i programuję; podobnie jak USBasp.

Ten M0 podałem dla przykładu bo jeszcze nie wiem co mi zapewni żądaną wydajność, Może M0 wystarczy. Poza tym ważny jest pobór mocy.

jp

Reply to
jacek pozniak

OK, mniej więcej już wiem :)

Reply to
jacek pozniak

No, dla przyjemności mignięcia diodą, można sie wykosztować:)

Czyli, że ten ST-Link lub j-link to w zasadzie równorzędne urządzenia, tylko j-link do większej ilości procesorów pasuje, dobrze rozumuję?

jp

Reply to
jacek pozniak

OK

Dzięki Waszym poradom zakupiłem:

formatting link
i

formatting link
Na początek mam nadzieję, że wystarczy.

Potem ewentualnie j-link

Może uda sie pobawić przed wakacjami :)

jp

Reply to
jacek pozniak

W dniu 05.07.2017 o 23:30, Jawi pisze:

Nie przesadzaj z tą strasznością. M0 jest też młodszym rdzeniem a to często oznacza, że na pokładzie z uC będziesz miał nowsze i bardziej elastyczne peryferia.

Reply to
Zbych

Bardziej jest tak:

a) J-Linka produkuje duza firma która stara się dawać dobrej jakości oprogramowanie (prywatnie uwazam że dziadowskie, ale ja jestem dziwny). Jest notorycznie kopiowana przez chińczyków i walczy z tym w taki sposob że soft wykrywa podrobki i uniemożliwia ich użycie. Kupując taniego J-Linka kupujesz podróbkę.

b) ciężko mi znaleźć zastosowanie J-Linka które nie dalo by się zastapić

*czymkolwiek* co jest interface do JTaga. Może nieco szybsze, ale nic poza tym funkcjonalnie.

c) W przypadku STM32 zastosowanie J-Linka było kłopotliwe bo nie obsługiwało protokołu SWD. Możliwe że już zmienili i obsluguje. Bez SWD nie zaprogramujesz wielu płytek.

d) ludzie używają JLinka bo ciagle im się wydaje ze łatwiej jest wyklikać niż napisać skrypt. Trudno, deewolucja.

e) ST-Link zrobi wszystko to co J-Link nie tylko dlatego że OpenOCD nie widzi między nimi róznicy, ale rownież dlatego że producent JLinka wypuscił upgrade softu do STLinka który emuluje JLinka dla stm32 ...

formatting link

Reply to
Sebastian Biały

Nie kupuj.

Reply to
Sebastian Biały

Acha, czyli OK.

Już dostałem info, że st-link wyruszył do 'mojego' paczkomatu wiec, kto wie, może w weekend coś tam się uda wpalić i zamigać tą diodą która niby jest na tej płytce co ma przyjść. :) Na razie staram się ogarnąć arm-none-eabi-gcc; kompiluje coś tam (prymitywne przykłady z /usr/share/doc/gcc-arm...), ale potrzebuję chyba nagłówki do poszczególnych procesorów, z definicjami peryferiów i takie tam. Sciąga się je skąś czy jak?

Po zainstalowaniu arm-gcc nie mam żadnych plików w rodzaju *stm*.h

jp

Reply to
jacek pozniak

Pobierz example do płytek Discovery jako dobry start na początek.

Problem z STM32 jest taki że ST promuje własne środowisko i zgodnie z tym konceptem powinieneś je w zasadzie zassać:

formatting link
Nagłówki z definicjami rejestrów i najwazniejsze - skryptem linkera, powinny być w komplecie. Nie używam i tu niewiele pomogę, ja składam firmware ręcznie, używając make i ukradzionych z jakiegos exampla nagłowkow.

Jak się upierasz ssać ręcznie, to tu masz punkt startowy do poszukiwań:

formatting link

Bo armów jest miliard i kazdy ma inny nagłowek pertyferiów. Ściąga się je od producenta.

Reply to
Sebastian Biały

W dniu 2017-07-06 o 19:25, jacek pozniak pisze:

Ja zaczynałem od tego:

formatting link
dole strony masz link do ćwiczeń. Powinny ci rozjaśnić co nieco.

Reply to
Andrzej

Też muszę skąś ukraść.

W zasadzie po przeczytaniu krótkiego readme.txt, który się zainstalował razem z kompilatorem, wygląda na to że w skrypcie dla linkera muszę podać zakresy ROM/RAM i właśnie wydaje mi się że kilkunastu kilobajtów z opisem/adresami rejestrów mi tylko brakuje.

Cytat z tego readme: "... The makefile is configured to build for Cortex-M0 by default. To build for M3 or M4, pass CORTEX_M=3/4 respectively: $ make CORTEX_M=3

  • Porting * These samples are written in a way that easily porting to variant Cortex-M boards. Usually there are only two files you need modify for your boards.

ldscripts/mem.ld defines address ranges for flash and RAM. Modify them to reflect start address and length of flash/RAM banks in your board, by following the embedded comments. ..."

OK, będę kopał aż znajdę.

Reply to
jacek pozniak

Potrzebujesz oddzielne pliki nalowkowe do procesora i byc moze bilioteki. Wiekszosc ludzi uzywa plikow naglowkowych i bibliotek dotarczanych przez STM (mozna sciagnac ze stron STM, choc ostatnio probuja wrzucic paczke zawierajaca IDE Windowsowe i reszte). Jesli interesujesz sie alternatywami to jedna z mozliwoci jest libopecm3. Pare przykladow dla znajdziesz pod:

formatting link
(wiekszosc jest dla F0). Uwaga: te przyklady wrzucaja kod do RAM. Potrzebna jest dosc oczywista modyfikacja jak chcesz kod we flashu.

A propo: wiekszosc prockow STM i wiele prockow innych producentow pozwala programowac flash przez port szeregowy, tak ze do programowania wystarcza interfejs USB-serial 3.3V.

Reply to
antispam

Ogarnąłem już trochę openOCD i st-link. Działa, tzn łaczę się z procesorem (via telnet).

Teraz przyszedł czas na jakiś wsad.

Pewnie powyciągam nagłówki z tego libopencm3 bo widzę, że w prostej formie są zapodane.

jp

Reply to
jacek pozniak

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.