AT91SAM7/9 i Linux

Jakiś czas temu, przy okazji zakupów w TME albo AVT kupiłem kilka sztuk mikrkontrolerów Atmela z rodzin SAM7 i SAM9. Lata ich popularności już minęły, ja skupiłem się głównie na PIC32 i STM32. Niemniej nie wykluczam możliwości, że kiedyś je do czegoś wykorzystam.

Z tego względu rozglądam się za narzędziami, które pozwoliłyby mi przygotować i skompilować kod na MCU z tych rodzin. Jednak z tego co widzę, to:

1) Atmel Studio nie obsługuje w ogóle tych mikrokontrolerów. To znaczy nie obsługiwało, gdy sprawdzałem ostatnio, jakieś dwa lata temu. Kreator nowego projektu pozwalał wybrać z listy tylko nowsze układy z rodziny AT91SAM3. Potem Atmel został przejęty przez Microchipa. Ja zresztą ostatecznie przeniosłem się na Linuksa i przestałem korzystać z tego programu. Nowy MPLABX potrafi ponoć obsługiwać AVR-y (na razie funkcja w wersji beta) jednak nie sądzę, żeby dodali stare ARM-y. 2) Na stronie Microchipa znajduje się co prawda ARM 8-bit [sic!] Toolchain 6.3.1, jednak z tego co widzę jest to sam kompilator (arm-none-eabi). Nie widzę tam żadnych plików nagłówkowych, które definiowałyby poszczególne modele mikrokontrolerów.

Czy ktoś mógłby mnie odesłać do jakiejś sprawdzonej instrukcji i narzędzi, pozwalających przygotować projekt dla tych MCU? Na dobrą sprawę nie potrzebuję jakiegoś rozbudowanego IDE. Wystarczy zestaw narzędzi, pozwalających obsłużyć to z poziomu Make. Byle tylko był to kompletny zestaw...

Reply to
Atlantis
Loading thread data ...

W dniu 21.08.2018 o 08:29, Atlantis pisze:

Może to?

formatting link

Reply to
Jakub Rakus

W przypadku SAM7 w minimalistycznej formie potrzebujesz:

a) gcc dla ARMa b) skrypt linkera pod konkretny procesor c) startup pod konkretny procesor d) OpenOCD + jakiś programator JTAG

i można zaczynać. Jeśli potrzebujesz exampla typu "miganie diodami" to takowy mogę podesłać, to jest bare metal, żadnych środowisk tylko wołanie gcc i linkera.

Ogóle w przypadku rodziny SAM7 natkniesz się na kilka pułapek:

a) Atmel miał gdzieś jakość, wszystkie pliki typu inkludy czy startup w kazdym examplu sa inne, inaczej poprzerabiane, z błedami i wylewającym się dziadostwem, zawsze inaczej przerobione. Warto wiedzieć że np. jakiś kretyn wyciął ze skryptu linkera sekcję odpowiadającą za tablice wirtualne obiektów czym uczynił moje debugowanie ciekawszym... Oczekuj więc sciągania ze śmietnika o nazwie internet kolejnych z trudem działajacych definicji rejestrów w ktorych zawsze czegoś brakuje i startupów które zawsze zapominają czegoś zainicjować i makefiles których nikt nie rozumie wliczając autora, ale wszedzie są podpisy Atmela.

b) SAM7 szybciej wykonuje kod z ram niż z flash. Czasem trzeba funkcje przepisać do ramu.

c) GPIO jest bardzo wolne jak na te częstotliwości taktowania, byle AVR jest szybszy.

d) procesor jest dośc delikatny, przynajmniej sprawia wrażenie resetującego się z byle powodu.

e) ceny SAM7 w pewnym momencie osiągnęły przebieg piły. Efektem czego nikt ich nie uzywa bo troche niefajnie zastać nastepnego dnia ten sam procesor co wczoraj tylko 5x droższy.

Zrobilem dośc przywoity system uC na SAM7, napisalem częściowo wlasne GUI, filesystem, makefiles itd itp. Jak już masz skrypty linkera i jesteś w stanie pisać abstrakcyjnie kod to nie ma znaczenia czy to sam7 czy stm32 czy target PC.

Natomiast SAM9 nie dotykałem za dużo. To już pamięc wirtualna i procesor bardzo skomplikowany. Nie warto, atemala wszak już nie ma a SAM9 na rynku nie jest chyba nawet szumem.

Reply to
Sebastian Biały

Dzięki. Wygląda na to, że przykład kompiluje się po podmienieniu w Makefile nazw narzędzi na te z paczki ściągniętej ze strony Microchipa. Czyli dobrze rozumiem, że Atmel w tamtym okresie nie rozpowszechniał żadnego zintegrowanego środowiska, a ten toolchain to tak naprawdę tylko kompilator? Nie ma w nim żadnych plików nagłówkowych z definicjami portów/peryferiów procesora i trzeba je sobie ręcznie dodać do projektu, tak samo jak plik crt0.s?

Mam nadzieję, że znajduje się tam przynajmniej standardowa biblioteka C? ;)

Reply to
Atlantis

GCC udało mi się ściągnąć ze strony Microchipa. Programator JTAG posiadam. Pozostałe zasoby można gdzieś jeszcze znaleźć w Sieci? Najlepiej cały zbiór, żeby mieć pod ręką kompletny zestaw, dla wszystkich przedstawicieli tej rodziny mikrokontrolerów...

Link do takiego przykładu podesłał już przedmówca. Kompiluje się po podmienieniu nazw narzędzi, najwyraźniej konwencja zmieniła się w ostatnich wersjach, wydanych przez Atmela jeszcze przed przejęciem przez Microchipa.

Tak naprawdę nie mam zamiaru robić na tym jakichś poważnych projektów. Mam od tego PIC32 i STM32. Niemniej nie wykluczam, ze pewnego dnia najdzie mnie ochota, żeby złożyć na tym jakąś prostą płytkę i poeksperymentować, tworząc jakiś projekt. Tak samo jak kiedyś zabrałem się za eksperymenty z 8051, a obecnie z 6502 - w celu tylko i wyłącznie edukacyjnym.

Chciałbym jednak zgromadzić potrzebne narzędzia, zanim okaże się, że zniknęły z Sieci, a nikt nie ma kopii zapasowej, bo przecież "wszystko jest w Internecie".

No i właśnie dzięki eksperymentom z bardziej "egzotycznymi" architekturami powoli dochodzę do tego etapu. ;)

Reply to
Atlantis

Jeszcze jedno pytanie przyszło mi do głowy. Mianowicie jak wygląda kwestia obsługi bardziej skomplikowanych peryferiów? Taki UART czy SPI można obsłużyć dysponując podstawowymi definicjami rejestrów. Ale co z USB? Tutaj potrzebny jest jakiś sterownik/stos. Atmel opublikował odpowiednie biblioteki?

Reply to
Atlantis

Advanced Software Framework (ASF)

formatting link

Reply to
wujekSamoZło

IMHO pora wybrać jakiś RTOS i jego się trzymać. Przeciętny RTOS zapewnia i dirvery i warstwę abstrakcji tzw. HAL-a.

Reply to
wujekSamoZło

W dniu 22.08.2018 o 07:48, Atlantis pisze:

Tak jak inni Ci już zdążyli odpowiedzieć wsparcie producenta dla tych procków było (i jest) właściwie żadne. To takie były pierwsze (a może raczej ostatnie?) podrygi Atmela z 32-bitowymi ARMami. Do czego to doprowadziło to wszyscy widzimy.

PS: Czasem lepiej sprawdzić najpierw dostępność narzędzi niż kupować co wydaje się tanie ;)

Reply to
Jakub Rakus

Na sam7 popedzalem FreeRTOSa. Miał nawet port więc niewiele trzeba robić.

Reply to
Sebastian Biały

Kupiłem raczej jako "wypełnienie paczki". Nie tylko były tanie, to chyba nawet sklep je wyprzedawał po mocno obniżonej cenie, czyszcząc magazyny. Dołożyłem je więc do zamówienia z czystej ciekawości. ;) To były jeszcze czasy, kiedy na dobrą sprawę wszystko robiłem jeszcze na AVR-ach, powoli rozglądając się za jakąś 32bitową alternatywą. Ostatecznie trafiło na PIC32, od jakiegoś czas eksperymentuję z STM32. Nie wykluczam jednak, że do czegoś wykorzystam te ARM-y od Atmela. Jeśli już, to w jakimś małym, hobbystycznym projekcie - stąd właśnie pytanie o narzędzia.

Reply to
Atlantis

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.