slawek7
Guest
Wed Jan 04, 2012 8:50 pm
Cześć.
Z góry przepraszam za glupie pytanie, ale zastanowilo mnie to i nie
moge doszukac sie odpowiedzi i moze pomozecie mi.
W uC ARM np STM32 lub LPC11xx kompilator dolacza i kompiluje plik
tzw. startowy. Ale dlaczego i po co?
Dlaczego robi sie taki wybieg? uC z serii AVR tego nie maja a tez na
poczatku nalezy ustawic jego uklady peryferyjne, ustawia sie stos i
inne.
Czy kompilator niebylby w stanie sobie z tym poradzic bez plikow
startowych?
Michoo
Guest
Wed Jan 04, 2012 8:50 pm
W dniu 04.01.2012 19:50, slawek7 pisze:
Quote:
W uC ARM np STM32 lub LPC11xx kompilator dolacza i kompiluje plik
tzw. startowy. Ale dlaczego i po co?
Dlatego, że ustawia się tam "środowisko uruchomieniowe":
- mapę pamięci
- stos
- stertę
- inicjalizację sekcji leżących w RAM
- często też częstotliwość pracy i peryferia
Quote:
Dlaczego robi sie taki wybieg?
To jest normalne podejście dla każdego procesora.
Quote:
uC z serii AVR tego nie maja
Oczywiście, że mają, tylko ponieważ jest procesory różnią się między
sobą w niewielkim stopniu (a do tego programiści AVR niestety często do
najsprawniejszych nie należą) twórcy avr-gcc to ukryli i wystarczy podać
-mmcu, żeby kompilator/linker wykonał resztę roboty.
Quote:
a tez na
poczatku nalezy ustawic jego uklady peryferyjne, ustawia sie stos i
inne.
Ustawiasz stos inaczej niż definiując którąś ze stałych?
Quote:
Czy kompilator niebylby w stanie sobie z tym poradzic bez plikow
startowych?
Kompilator sobie radzi.
--
Pozdrawiam
Michoo
Zbych
Guest
Wed Jan 04, 2012 8:50 pm
On 04.01.2012 19:50, slawek7 wrote:
Quote:
Cześć.
Z góry przepraszam za glupie pytanie, ale zastanowilo mnie to i nie
moge doszukac sie odpowiedzi i moze pomozecie mi.
W uC ARM np STM32 lub LPC11xx kompilator dolacza i kompiluje plik
tzw. startowy. Ale dlaczego i po co?
Bo między startem procesora a wywołaniem funkcji main jest trochę roboty
do zrobienia (choćby inicjalizacja zmiennych globalnych, statycznych)
Quote:
Dlaczego robi sie taki wybieg? uC z serii AVR tego nie maja
Mają.
Quote:
Czy kompilator niebylby w stanie sobie z tym poradzic bez plikow
startowych?
Kompilator sobie poradzi. Gorzej może być z twoim programem.
Można oczywiście kazać kompilatorowi olać pliki startowe, wtedy sam
będziesz musiał stworzyć tablicę wektorów przerwań, ustalić położenie
stosu, zainicjalizować zmienne. Jest to dosyć proste.
slawek7
Guest
Thu Jan 05, 2012 9:21 pm
Macie racje. Doczyałem że taki wybieg jest dlatego ze ARMow jest duzo
i ciezko to upchnac w kompilatorze samym.