77_80.PDF
(
201 KB
)
Pobierz
AVR-GCC - środowisko programistyczne dla mikrokontrolerów AVR
P R O G R A M Y
Środowisko programistyczne
dla mikrokontrolerów AVR
Wracamy do tematu úrodowiska
AVR Studio z†bezp³atnym
kompilatorem C†dla
mikrokontrolerÛw AVR - GCC-
AVR. W†artykule przedstawimy
instalacjÍ i†konfiguracjÍ tego
oprogramowania do pisania,
kompilacji i†uruchamiania
programÛw w†C†pod system
Windows.
Z†pewnoúci¹ wiÍkszoúÊ elektroni-
kÛw zauwaøy³a, øe ostatnio nasta³a
moda na stosowanie mikrokontrole-
rÛw jednouk³adowych nawet w†bar-
dzo prostych uk³adach. SzczegÛlnym
zainteresowaniem cieszy siÍ rodzina
AVR firmy Atmel. S¹ to doúÊ nowo-
czesne, szybkie i†bogato wyposaøone
mikrokontrolery. Aby u³atwiÊ uøyt-
kownikowi uruchamianie uk³adÛw,
producent wprowadzi³ moøliwoúÊ
programowania uk³adÛw juø po za-
montowaniu w†systemie docelowym.
Bardzo interesuj¹ce cechy tych mik-
rokontrolerÛw s¹ zwi¹zane z†ich ar-
chitektur¹ i†list¹ rozkazÛw stworzon¹
z†myúl¹ o†stosowaniu kompilatorÛw
jÍzyka C.
Nie chcÍ w†tym miejscu wywo³ywaÊ
polemiki miÍdzy osobami uznaj¹cymi
za jedynie ìs³usznyî jÍzyk asembler
i†ich przeciwnikami. Jak zwykle praw-
da leøy poúrodku. Asembler pozwala
úciúle kontrolowaÊ zasoby i†przebieg
programu, a†jÍzyki wysokiego poziomu
- skrÛciÊ czas przygotowywania pro-
gramu, ktÛry jednoczeúnie moøe byÊ
bardziej czytelny.
Atmel udostÍpnia nieodp³atnie zin-
tegrowane úrodowisko programistycz-
ne dla AVR-Ûw - oprogramowanie
AVR Studio. Posiada ono edytor
(z†rozpoznawaniem sk³adni), asemb-
ler, symulator umoøliwiaj¹cy úledze-
nie wykonywania programÛw z†pod-
gl¹dem wszystkich wbudowanych
w†mikrokontroler uk³adÛw. Da siÍ
rÛwnieø tworzyÊ, kompilowaÊ i†uru-
chamiaÊ programy napisane w†jÍzyku
C. Ta ostatnia cecha daje duøe moø-
liwoúci, ale rÛwnieø sprawia najwiÍ-
cej k³opotÛw w†poprawnym skonfigu-
rowaniu úrodowiska i†dopasowaniu
do niego kompilatora.
Dobrym uzupe³nieniem dla AVR
Studio jest bezp³atny kompilator jÍzy-
ka C†- AVR-GCC. Pierwotnie powsta³
on z†myúl¹ o†systemach typu Unix,
ale po pewnym czasie przeniesiono
go rÛwnieø na platformÍ Windows.
GCC to skrÛt od
GNU Compiler
Collection
, a†GNU to skrÛt od
GNU's
Not Unix
. WiÍcej informacji o†GCC
i†projekcie GNU moøna znaleüÊ na
stronie g³Ûwnej GCC (
http://
gcc.gnu.org/
).
AVR Studio rÛwnieø instaluje siÍ
bardzo ³atwo, przy czym domyúlnym
katalogiem jest
c:\Program Files\At-
mel\AVR Studio
. W†podkatalogu
ap-
pnotes
znajduj¹ siÍ przyk³adowe pro-
gramy napisane w†asemblerze i†pliki
definicyjne (
.inc
).
Konfiguracja i†tworzenie
projektu
Opis konfiguracji przedstawiÍ na
przyk³adzie krÛtkiego programu. Po
uruchomieniu AVR Studio, z†menu
Project
wybieramy polecenie
New...
.
Pojawi siÍ okno
Select new project
(
rys. 1
). W†polu
Project name
wpisu-
jemy nazwÍ projektu
led
. Pole
Loca-
tion
okreúla úcieøkÍ dostÍpu do tego
projektu, przyjmijmy, øe bÍdzie to ka-
talog
c:\avr\pierwszy
. Na koniec
waøne jest, aby podúwietliÊ w†polu
Project type
pozycjÍ
Generic 3rd Par-
ty C Compiler
.
Podczas klikniÍcia prawym klawi-
szem myszy w†oknie projektu otwie-
ra siÍ menu podrÍczne, z†ktÛrego
wybieramy
Create New File...
(
rys.
2
). W†wywo³anym oknie wpisujemy
nazwÍ tworzonego pliku -
led.c
i†úcieøkÍ dostÍpu do katalogu,
w†ktÛrym utworzyliúmy projekt. Aby
zachowaÊ porz¹dek, przeci¹gamy
w†oknie projektu ikonÍ z†nazw¹ no-
wego pliku do folderu
Source Files
.
W†otwartym oknie zatytu³owanym
led.c
wpisujemy krÛtki program
w†jÍzyku C (
list. 1
).
Spowoduje on, øe mikrokontroler
bÍdzie wystawia³ na wyjúciach portu
B na zmianÍ poziomy wysokie i†nis-
kie. Waøna uwaga: ostatnia linia kaø-
dego pliku przetwarzanego przez
kompilator powinna byÊ zakoÒczona
znakiem koÒca linii!
Instalacja kompilatora
Przed instalacj¹ naleøy zaopatrzyÊ
siÍ w†pakiet instalacyjny AVR-GCC
w†wersji 3.2 (opatrzonej dat¹ 2002-06-
25) dostÍpny w postaci jednego pliku
do úci¹gniÍcia ze strony AVR Freaks
(
http://www.avrfreaks.net
) i†AVR Stu-
dio (aktualnie wersja 3.55) udostÍp-
nione przez Atmela na stronie inter-
netowej firmy.
Instalacja AVR-GCC sprowadza siÍ
do uruchomienia instalatora i†postÍ-
powania wed³ug wskazÛwek. Naleøy
pozwoliÊ programowi instalacyjnemu
za³oøyÊ domyúlny katalog. Podczas
instalacji nie powinny siÍ pojawiÊ
øadne b³Ídy. Na koniec zostaniemy
poinformowani o†poprawnym zakoÒ-
czeniu instalacji.
Utworzony zostaje katalog
c:\avr-
gcc
, a†w†nim kilka podkatalogÛw.
Najwaøniejsze z†nich to:
-
avr\include
- zawieraj¹cy pliki na-
g³Ûwkowe (.h),
-
avrfreaks
z†plikiem
avr_make
(glo-
balna czÍúÊ
makefile
),
makefile
(dla
projektu) oraz plikiem wsadowym
uruchamiaj¹cym kompilacjÍ
gcc_cmp.bat
,
-
bin
- w†ktÛrym s¹ zawarte progra-
my wykonywalne pakietu.
Rys. 1
Elektronika Praktyczna 12/2002
77
P R O G R A M Y
Rys. 2
Rys. 3
Maj¹c juø gotowy program, musimy
go skompilowaÊ przy uøyciu AVR-GCC.
Pakiet kompilatora po naszej instalacji
jest juø w†zasadzie przygotowany. Trze-
ba jedynie utworzyÊ plik
makefile
w†katalogu projektu. Jest to plik teks-
towy okreúlaj¹cy przebieg przetwarza-
nia, kompilacji i†konsolidacji. Dla u³at-
wienia, w†pakiecie przygotowanym
przez AVR Freaks plik ten zawiera pa-
rametry konfiguracyjne, ktÛre naleøy
zmodyfikowaÊ dla konkretnego projek-
tu. W†koÒcowych liniach sterowanie
jest przekazywane plikowi
avr_make
znajduj¹cemu siÍ w†katalogu
c:\avr-
gcc\avrfreaks
, ktÛry zawiera wspÛlne
dla wszystkich projektÛw polecenia
i†nie jest potrzebna jego modyfikacja.
Przyk³adowy plik
makefile
znajdzie-
my w†wyøej wymienionym katalogu.
Naleøy go skopiowaÊ do katalogu
z†projektem - w†naszym przypadku
do
c:\avr\pierwszy
. Na
list. 2
przed-
stawiam go w wersji w†jÍzyku
polskim, przystosowanej do prezento-
wanego przyk³adu.
Najproúciej jest go modyfikowaÊ po-
przez dodanie do projektu w†AVR
Studio. W†tym celu klikamy prawym
klawiszem w†oknie projektu, z†menu
wybieramy
Add File
(
rys. 3
) i†otwie-
ramy plik
makefile
. Przeci¹gnijmy go
myszk¹ do folderu
Other Files
. Naj-
waøniejsze parametry, jakie musimy
przede wszystkim okreúliÊ to:
- MCU, czyli typ mikrokontrolera,
- TRG - nazwa pliku wynikowego,
przy czym musi to byÊ ta sama na-
zwa jak nazwa projektu i†programu
g³Ûwnego,
- SRC - lista plikÛw ürÛd³owych do
kompilacji,
- zaleønoúci obiektÛw wynikowych
od innych plikÛw (tutaj
led.o
jest
zaleøny od
led.c
)
Zapis
$(TRG)
oznacza wywo³anie
zmiennej (makra) okreúlonej wczeú-
niej poprzez przyporz¹dkowanie
TRG=
.
Teraz trzeba poinstruowaÊ AVR
Studio, jak ma wspÛ³pracowaÊ z†kom-
pilatorem GCC.
Upewnijmy siÍ, øe w†oknie projek-
tu jest wybrana zak³adka
Target-De-
bug
. Wskazuj¹c myszk¹ na rdzeÒ
drzewa
Target-Debug
, klikamy pra-
wym klawiszem i†z†menu wybieramy
pozycjÍ
Settings...
Pojawi siÍ okno,
ktÛre naleøy wype³niÊ tak, jak to po-
kazano na
rys. 4
. Ustawienia te po-
woduj¹ podjÍcie odpowiednich akcji
przy kompilowaniu i†debuggowaniu
programu. AVR Studio uruchamia
program wsadowy (
gcc_cmp.bat
) prze-
prowadzaj¹cy kompilacjÍ, a†nastÍpnie,
jeúli nie zasygnalizowano øadnych
b³ÍdÛw, ³aduje plik debuggera o†na-
zwie takiej, jak nazwa projektu z†roz-
szerzeniem .
cof
.
Przy okazji warto utworzyÊ dodat-
kow¹ zak³adkÍ
Clean
, ktÛra bÍdzie
s³uøy³a do usuwania plikÛw tworzo-
nych przez kompilator. W†tym celu
klikamy prawym klawiszem na oknie
projektu i†wybieramy
Targets>Add
.
W†polu
Name
wpisujemy
Clean
, a†po-
niøej wybieramy
Copy settings
from>Debug
. Wybieramy zak³adkÍ
Target-Clean
i†podobnie jak wyøej
modyfikujemy ustawienia. Linia pole-
cenia ma mieÊ postaÊ
c:\avrgcc\avr-
freaks\gcc_cmp.bat clean
, co oznacza,
øe program bÍdzie wywo³ywany z†pa-
rametrem
clean
. Oba okienka z†grupy
Run Stage Settings
pozostawiamy
puste.
W†systemie Windows 2000 trzeba
wywo³ywaÊ program wsadowy z†pod-
katalogu
win2000
, czyli
c:\avrgcc\av-
rfreaks\win2000\gcc_cmp.bat
. Jeúli
w†oknie wyjúciowym AVR Studio po-
jawia siÍ komunikat b³Ídu, informuj¹-
cy o†k³opocie z†odnalezieniem pliku
c:\tmpout.txt
, naleøy w†pliku
gcc_cmp.bat
podaÊ pe³n¹ úcieøkÍ
dostÍpu do pliku
gcc_cmp2.bat
(
@start
List. 2.
# Simple Makefile Volker Oth (c) 1999
# edited by AVRfreaks.net nov.2001
# tłumaczenie: Michał Lankosz sierpień 2002
###### zmień poniższe parametry dla swojego projektu ##########
#wpisz typ mikrokontrolera (np. at90s8535, attiny22, atmega128 itd.)
MCU = at90s2313
#wpisz nazwę pliku docelowego (bez rozszerzenia!)
TRG = led
#wpisz nazwy plików źródłowych w C rozdzielając spacją
SRC = $(TRG).c
#wpisz dodatkowe pliki źródłowe w asemblerze
ASRC =
#dodatkowe biblioteki i pliki obiektowe do dołączenia (zlinkowania)
LIB =
#dodatkowe pliki include do kompilacji
INC =
#flagi dla asemblera
ASFLAGS = -Wa, -gstabs
#flagi dla kompilatora
CPFLAGS = -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)
#flagi dla linkera
LDFLAGS = -Wl,-Map=$(TRG).map,-cref
########### tej linijki nie powinieneś modyfikować #############
include $(AVR)/avrfreaks/avr_make
# zależności
$(TRG).o: $(TRG).c
List. 1.
#include <io.h>
#include <io2313.h>
int main(void)
{
outp(0xff,DDRB);
while(1)
{
outp(0xff,PORTB);
outp(0x00,PORTB);
}
}
78
Elektronika Praktyczna 12/2002
P R O G R A M Y
/MIN /wait cmd /c c:\avrgcc\avr-
freaks\win2000\gcc_cmp2.bat %1
).
Na tym etapie mamy juø wszystko
ustawione. W†oknie projektu wybiera-
my zak³adkÍ
Target-Debug
i†naciska-
my klawisz F7 (menu
Project>Build
),
aby skompilowaÊ program. Komunika-
ty kompilatora s¹ wyúwietlane w†ok-
nie zatytu³owanym
Project Output
.
W†katalogu projektu wygenerowany
zostanie miÍdzy innymi plik
led.hex
.
Jest to gotowy plik w†formacie Intel
Hex, ktÛrym programuje siÍ mikro-
kontroler, na przyk³ad za pomoc¹
programatora YAAP (EP7/2002) lub
Ponyprog (
www.lancos.com
). Ten dru-
gi szczegÛlnie polecam ze wzglÍdu na
duø¹ liczbÍ obs³ugiwanych uk³adÛw.
Ca³y projekt ze wszystkimi zmody-
fikowanymi plikami najproúciej jest
zapisaÊ poleceniem
Save All
(ikona
z†kilkoma dyskietkami).
dzia³aj¹ pu³apki (
breakpointy
). Doty-
czy to szczegÛlnie bardziej z³oøonych
programÛw. Z†tego wzglÍdu dobrze
jest, w†celu analizy danego fragmen-
tu programu, utworzyÊ pomocniczy
projekt zawieraj¹cy tylko istotne dla
jego dzia³ania instrukcje.
Przeúledzimy teraz skompilowany
program
led
. Zauwaømy, øe po pier-
wszej kompilacji sta³y siÍ aktywne
niektÛre przyciski na gÛrnej listwie
AVR Studio zawieraj¹cej zestaw po-
leceÒ do sterowania przebiegiem pro-
gramu. Oznacza to, øe zosta³ odnale-
ziony plik dla symulacji
led.cof
. Au-
tomatycznie rÛwnieø otworzy³o siÍ
okno
Simulator Options
(
rys. 5
),
w†ktÛrym moøna wybraÊ typ mikro-
kontrolera i†czÍstotliwoúÊ jego takto-
wania. Opcje te s¹ dostÍpne z†menu
Options>Simulator Options
.
SymulacjÍ rozpoczynamy klawiszem
F5 (Run) lub wybieraj¹c ikonÍ 9.
W†oknie z†programem ürÛd³owym po-
jawia siÍ øÛ³ta strza³ka wskazuj¹ca li-
niÍ kodu, ktÛra zostanie wykonana
w†kolejnym kroku. Aby wykonaÊ linij-
kÍ wskazywan¹ strza³k¹, przyciskamy
klawisz F11 (
Trace Into
, ikona 11).
To dopiero pocz¹tek moøliwoúci sy-
mulatora. Moøemy bowiem ìzoba-
czyÊî poziom, jaki wystÍpuje na wy-
prowadzeniach portu B. W†tym celu
klikamy na ikonÍ 6 (lub przyciskamy
klawisze Alt+5) i†rozwijamy ga³¹ü
PORTB. Wykonuj¹c kolejne kroki, ob-
serwujemy zawartoúÊ rejestru portu
wyjúciowego (
rys. 6
).
OtwÛrzmy teraz okno procesora
kombinacj¹ klawiszy Alt+3 (lub iko-
n¹ 4). Znajduj¹ siÍ w nim przynaj-
mniej dwie przydatne funkcje: stoper
i†licznik cykli zegarowych. DziÍki
nim moøemy ³atwo zmierzyÊ czas
wykonania danego fragmentu progra-
mu. W†pÍtli
while
programu moøna
na przyk³ad zauwaøyÊ, øe na wyjúciu
portu B poziom wy-
soki bÍdzie siÍ utrzy-
mywa³ przez jeden
Rys. 5
cykl zegara, a†niski przez trzy. Nie-
symetria wynika z†budowy pÍtli. Przy
tej okazji warto siÍ rÛwnieø zapoznaÊ
z†moøliwoúci¹ podgl¹du kodu maszy-
nowego úledzonego programu.
Klikaj¹c na ikonce 21 (Ctrl+F11),
otworzymy okno zawieraj¹ce linijki
tekstu w rodzaju:
+0000002C: BA18 OUT 0x18,R1
Powyøsza linia zawiera informacjÍ,
øe pod adresem 2Ch znajduje siÍ in-
strukcja o†kodzie BA18h, ktÛrej odpo-
wiada zapis asemblerowy OUT
0x18,R1.
Uruchomienie pracy krokowej
w†tym trybie powoduje wykonywanie
pojedynczych instrukcji asemblera.
Aby powrÛciÊ do analizy kodu w†C,
ponownie uøywamy ikony 21.
Za pomoc¹ ikony 19 (Shift+F5) ze-
ruje siÍ symulowany mikrokontroler,
czyli doprowadza do jego stanu wyj-
úciowego, jaki jest tuø po ìresecieî
w†rzeczywistym uk³adzie.
Uruchamianie i†debugging
programu
DoúÊ waøne podczas uruchamiania
nowego kodu jest analizowanie dzia-
³ania niektÛrych jego fragmentÛw.
W†szczegÛlnoúci przydatna jest praca
krokowa i†wgl¹d w†zawartoúÊ poszcze-
gÛlnych zmiennych. årodowisko AVR
Studio jest przygotowane do úledzenia
dzia³ania zarÛwno programÛw napisa-
nych w†asemblerze, jak i†w†jÍzyku C.
Konieczne by³o jednak odpowiednie
przystosowanie kompilatora. G³Ûwnym
problemem jest to, øe kompilator GCC
normalnie generuje plik debuggera
w†formacie ELF, ktÛrego nie akceptuje
AVR Studio. Najnowszy pakiet kompi-
latora zawiera juø zewnÍtrzny program
konwersji formatu ELF na COFF (
elf-
cof.exe
), ktÛry jest automatycznie uru-
chamiany wed³ug polecenia zawartego
w†pliku
avr_make
.
Z†doúwiadczenia wiem, øe konwer-
sja formatÛw jest b³Ídna lub AVR
Studio zawiera b³Ídy. Objawiaj¹ siÍ
one tym, øe nie da siÍ podgl¹daÊ nie-
ktÛrych zmiennych i†czasami nie
Podgl¹d zmiennych
OprÛcz wewnÍtrznych rejestrÛw
i†pamiÍci procesora moøemy rÛwnieø
podgl¹daÊ zmienne uøywane w†pro-
gramie. Dla przyk³adu zmodyfikujmy
nasz program
led.c
do postaci poka-
zanej na
list. 3
.
Musimy jeszcze usun¹Ê niepotrzeb-
ne pliki z†poprzedniej kompilacji,
zmieniaj¹c zak³adkÍ w†projekcie na
Target-Clean
i†wciskaj¹c klawisz F7.
Wracamy do
Target-Debug
, kompilu-
jemy i†uruchamiamy kombinacj¹ kla-
Rys. 4
Rys. 6
Elektronika Praktyczna 12/2002
79
P R O G R A M Y
Opis ikon menu AVR Studio
Ikony podglądu (
Views
):
Ikony sterowania programem (
Debug
):
1. Wartości zmiennych
2. Rejestrów
3. Pamięci
4. Istotnych parametrów
pracy procesora
5. Informacji
6. Urządzeń wejścia/wyjścia
7. Dodanie zmiennej do
podglądu
8. Usunięcie zmiennej
z podglądu
9. Uruchomienie symulacji
10. Przerwanie symulacji
11. Krok z wejściem do
funkcji
12. Krok z przeskokiem
funkcji
13. Wyskoczenie z funkcji
14. Uruchomienie i zatrzy−
manie w miejscu kursora
15. Wykonanie n kroków
16. Wykonanie n kroków
17. Ustawienie lub usunięcie
pułapki
18. Usunięcie wszystkich
pułapek
19. Wyzerowanie procesora
Pozostałe
20. Kompilacja
i uruchomienie
programu
21. Przełącznik widoku
źródła
wiszy Ctrl+F7. Klikamy na ikonÍ
7†(okularki) i†podajemy nazwÍ intere-
suj¹cej nas zmiennej, czyli
x
. Rozpo-
czynamy pracÍ krokow¹. Instrukcja
w†pÍtli while powinna powodowaÊ
przesuwanie o†jeden bit w†lewo bi-
tÛw zmiennej
x
i†zapisywanie tego
bajtu do rejestru wyjúciowego portu
B. Rzeczywiúcie, widzimy efekt ìwÍ-
øaî na bitach portu, podgl¹daj¹c sta-
ny jego wyjúÊ w†oknie IO. Jednak
zmienna
x
ma przez ca³y czas war-
toúÊ 0xFF. Taki stan rzeczy spowo-
dowa³ kompilator, ktÛry zoptymalizo-
wa³ kod. Kompilator ìstwierdzi³î, øe
nie ma potrzeby specjalnie czytaÊ
i†zapisywaÊ zmiennej
x
do pamiÍci
RAM. Wystarczy operowaÊ na jed-
nym z†rejestrÛw, co skrÛci kod i†jed-
noczeúnie przyspieszy dzia³anie pro-
gramu.
Dla celÛw uruchomieniowych moø-
na zmieniÊ parametry kompilacji tak,
aby kod nie by³ optymalizowany. Wy-
starczy w†pliku
makefile
w†linii za-
czynaj¹cej siÍ od wyrazu CPFLAGS=
zamiast -O3 wpisaÊ -O0. Po usuniÍ-
ciu plikÛw poprzedniej kompilacji,
ponownej kompilacji i†uruchomieniu
pracy krokowej, zmienna
x
jest juø
obserwowalna. RÛønice moøna do-
strzec, analizuj¹c kod asemblerowy
tego fragmentu programu.
Gdy program jest z³oøony z†kilku
plikÛw ürÛd³owych i†nag³Ûwkowych,
dodajemy ich nazwy do odpowied-
nich folderÛw w†oknie projektu.
W†ten sposÛb mamy do nich szybki
i†³atwy dostÍp. Naleøy pamiÍtaÊ, aby
w†pliku
makefile
znalaz³a siÍ lista
plikÛw do kompilacji i†odpowiednie
zaleønoúci.
Po przebrniÍciu przez przedstawio-
ny opis i†uruchomieniu pierwszego
programu, proponujÍ odwiedziÊ stro-
nÍ AVR Freaks zawieraj¹c¹ mnÛstwo
przyk³adÛw, projektÛw i†dokumentÛw
pomocniczych.
Mam nadziejÍ, øe niniejszy opis po-
zwoli pokonaÊ trudy zwi¹zane z†przy-
gotowaniem wspÛ³pracy AVR Studio
z†kompilatorem AVR-GCC i†zachÍci
CzytelnikÛw zainteresowanych progra-
mowaniem mikrokontrolerÛw do
w³asnych eksperymentÛw.
Micha³ Lankosz
sq9fqq@sq9fqq.prv.pl
http://sq9fqq.prv.pl
List. 3.
#include <io.h>
#include <io2313.h>
char x;
int main(void)
{
outp(0xff,DDRB);
x = 0xff;
while(1)
outp(x <<= 1,PORTB);
}
80
Elektronika Praktyczna 12/2002
Plik z chomika:
IZOPROPYL
Inne pliki z tego folderu:
Wentylatory.pdf
(1666 KB)
Star Wars. Katalizator. Wprowad - James Luceno.pdf
(1665 KB)
Gordon R. Dickson - Smoczy rycerz T2.pdf
(1663 KB)
LOKOMOTYWA TOWAROWA EMD JT42CWRM(Class66).pdf
(1662 KB)
Greer Luanshya - Kto sieje wiatr 02 - Po burzy spokój.pdf
(1660 KB)
Inne foldery tego chomika:
- - 2025--FULL---
- - 2024 FILMY NOWE
- WIN DROID IOS - HASŁO ARHIWÓW I FOLD - 1111
█ DUŻY MIX █
12.000 FILMÓW
Zgłoś jeśli
naruszono regulamin