RTV forum PL | NewsGroups PL

Narzędzia i instrukcje do kompilacji kodu dla mikrokontrolerów AT91SAM7/SAM9 na Linuxie

AT91SAM7/9 i Linux

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Narzędzia i instrukcje do kompilacji kodu dla mikrokontrolerów AT91SAM7/SAM9 na Linuxie

Atlantis
Guest

Tue Aug 21, 2018 6:29 am   



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...

Jakub Rakus
Guest

Tue Aug 21, 2018 5:11 pm   



W dniu 21.08.2018 o 08:29, Atlantis pisze:

Quote:
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...


Może to? https://www.triplespark.net/elec/pdev/arm/at91sam7.html

--
Pozdrawiam
Jakub Rakus

Sebastian Biały
Guest

Tue Aug 21, 2018 8:01 pm   



On 8/21/2018 8:29 AM, Atlantis wrote:
Quote:
Czy ktoś mógłby mnie odesłać do jakiejś sprawdzonej instrukcji i
narzędzi, pozwalających przygotować projekt dla tych MCU?

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.

Atlantis
Guest

Wed Aug 22, 2018 5:48 am   



On 21.08.2018 19:11, Jakub Rakus wrote:

Quote:

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? Wink

Atlantis
Guest

Wed Aug 22, 2018 6:08 am   



On 21.08.2018 22:01, Sebastian Biały wrote:

Quote:
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

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...

Quote:
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.

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.


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

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".


Quote:
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.

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

Atlantis
Guest

Wed Aug 22, 2018 11:59 am   



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?

wujekSamoZło
Guest

Wed Aug 22, 2018 2:56 pm   



On Wednesday, August 22, 2018 at 1:59:55 PM UTC+2, Atlantis wrote:
Quote:
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?
Advanced Software Framework (ASF)

http://www.microchip.com/mplab/avr-support/advanced-software-framework

wujekSamoZło
Guest

Wed Aug 22, 2018 3:05 pm   



On Wednesday, August 22, 2018 at 8:08:38 AM UTC+2, Atlantis wrote:
Quote:
On 21.08.2018 22:01, Sebastian Biały wrote:

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.

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

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

Jakub Rakus
Guest

Wed Aug 22, 2018 8:02 pm   



W dniu 22.08.2018 o 07:48, Atlantis pisze:

Quote:

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? ;)


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 ;)

--
Pozdrawiam
Jakub Rakus

Sebastian Biały
Guest

Wed Aug 22, 2018 8:22 pm   



On 8/22/2018 3:05 PM, wujekSamoZło wrote:
Quote:
IMHO pora wybrać jakiś RTOS i jego się trzymać.

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

Atlantis
Guest

Thu Aug 23, 2018 5:53 am   



On 22.08.2018 22:02, Jakub Rakus wrote:

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

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. Wink 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.

elektroda NewsGroups Forum Index - Elektronika Polska - Narzędzia i instrukcje do kompilacji kodu dla mikrokontrolerów AT91SAM7/SAM9 na Linuxie

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map