Jak wstawić asemblerową komendę NOP w kodzie AVR-GCC między odwołaniami do portu?

NOP w avr-gcc





Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: NOP w avr-gcc
Date: Mon, 30 Sep 2002 21:18:43 +0200


Jak w avr-gcc wstawić w kod krótką wstawkę asemblerową. Np. NOPa pomiędzy
odowłaniami do portu? W CodeVision mozna użyć d #asm("nop"). W gcc nie mogę
znaleźć niczego analogicznego.

--
Marek Dzwonnik mdz_at_nospam_message.pl
GG: #2061027 (zwykle jako 'dostępny-niewidoczny')




Poprzedni Następny
Wiadomość
Spis treści
From: Marcin E. Hamerla <mehamerla_at_nospam_pro.onet.pl>
Subject: Re: NOP w avr-gcc
Date: Mon, 30 Sep 2002 21:21:24 +0200


Marek Dzwonnik napisal(a):

Jak w avr-gcc wstawić w kod krótką wstawkę asemblerową. Np. NOPa pomiędzy
odowłaniami do portu? W CodeVision mozna użyć d #asm("nop"). W gcc nie mogę
znaleźć niczego analogicznego.

Jak znajdujesz tefo avr-gcc? Planuje sie z tym zapoznac, ale jakos
czasu nie ma.... Co jest w pakiecie? Asembler, C i liner(relokujacy)?
IDE trzeba sobie zestawic przy uzyciu zewnetrznego edytora?

--
Pozdrowienia, Marcin E. Hamerla

"Nienawidze turystow."

Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: NOP w avr-gcc
Date: Mon, 30 Sep 2002 22:05:35 +0200


Użytkownik "Marcin E. Hamerla" <mehamerla_at_nospam_pro.onet.pl> napisał w wiadomości
news:eu8hpu0qjm0aag5qpldi28t528ltk5rh58_at_nospam_4ax.com...

Co do NOPa to już znalazłem
( asm("operand"); )

Jak znajdujesz tefo avr-gcc? Planuje sie z tym zapoznac, ale jakos
czasu nie ma.... Co jest w pakiecie? Asembler, C i liner(relokujacy)?
IDE trzeba sobie zestawic przy uzyciu zewnetrznego edytora?

Ponieważ dopiero przesiadam się na AVR-ka, to mam okazję okiem laika dokonać
kilku porównań.
Swoje wprawki asemblerowe pominę milczeniem ;-). Bardzo ładnie czyta się to
co napisał ktoś inny, ale przy pisaniu własnych wypracowań czuję na razie,
że moja wyobraźnia pracuje inaczej.

Co do GCC: Potężne narzędzie ( http://gcc.gnu.org/onlinedocs/gcc-3.2 gcc )
zawierające wszystko co niezbędne, ale w filozofii typowo
unixowo-ascetycznej. Np. pełna lista parametrów wywołania avr-gcc liczy
sobie prawie... 600 pozycji ;-)) Natomiast wyraźnie czuje się, że jest to
przeniesienie uniwersalnego narzędzia z innego środowiska. Dotyczy to
zarówno sposobu realizacji niektórych działań (obsluga przerwań, dostęp do
portów itp.) jak i np. postaci listingów, map. itp. Zawierają masę
nadmiarowych informacji przez co, bez odpowiedniej wprawy, czyta się je z
trudem. Natomiast rolę IDE może pełnić AVR-Studio(3.53) ze wszystkimi
wadami i zaletami.

Naciąłem się na wersję demo CodeVision. Tzn. nigdzie nie napisano jawnie,
jakiemu ograniczeniu w wersji demo podlega wielkość kodu wynikowego.
Założyłem, że podobnie jak w narzędziach dla 51-ek będzie to 2K (czyli pełne
1000słów w 2313). Niestety już po napisaniu niewielkiego kawałka kodu
odbiłem się od limitu. Z postronnego źródła dowiedziałem się poniewczasie,
że limit wynosi MIN( ROMSIZE/2, 950_words). Biorąc pod uwagę, że startup +
konfiguracja podstawowydh peryferiów generuje ponad 200 słów kodu, to
CV_demo nadaje się wyłącznie do D..d....de..emonstracji.

W tej chwili ćwiczę przenoszenie tego kawałka kodu pod GCC. Nie powiem -
czynność pouczająca. Na razie drażni mni np. brak takiego drobiazgu jak
proste odwołanie do linii portu: PORTB.1 = 0.

Osobną sprawę przy GCC stanowi panowanie nad plikami "makefile". Do
avr-gcc są dostępne przykładowe makefile przystosowane (-> Volker Oth) do
środowiska avr-gcc/AVR-Studio. Niestety, nie potrafię na razie zapanować
przy ich użyciu nad projektem, który oprócz kilku plików *.c zawiera jeszcze
parę nagłówków *.h. A manual do make-a liczy sobie skromne 150 stron ;-)
Krótko mówiąc - narzędzie potężne, ale na początku przytłaczające. CV bierze
się do ręki i używa - niemal jak Bascoma ;-)) Nie da się tego powiedzieć o
GCC. Chyba, że ma się już wprawę wyniesioną np. ze środowiska unixowego.

MDz




Poprzedni Następny
Wiadomość
Spis treści
From: Marcin E. Hamerla <mehamerla_at_nospam_pro.onet.pl>
Subject: Re: NOP w avr-gcc
Date: Mon, 30 Sep 2002 22:33:14 +0200


Marek Dzwonnik napisal(a):

Co do NOPa to już znalazłem
( asm("operand"); )

Dosc typowo ;--).

Jak znajdujesz tefo avr-gcc? Planuje sie z tym zapoznac, ale jakos
czasu nie ma.... Co jest w pakiecie? Asembler, C i liner(relokujacy)?
IDE trzeba sobie zestawic przy uzyciu zewnetrznego edytora?

Ponieważ dopiero przesiadam się na AVR-ka, to mam okazję okiem laika dokonać
kilku porównań.
Swoje wprawki asemblerowe pominę milczeniem ;-). Bardzo ładnie czyta się to
co napisał ktoś inny, ale przy pisaniu własnych wypracowań czuję na razie,
że moja wyobraźnia pracuje inaczej.

Och, ja juz od dawna praktycznie nic w assemblerze nie napisalem, ale
jego znajomosc jest baaardzo przydatna.

Co do GCC: Potężne narzędzie ( http://gcc.gnu.org/onlinedocs/gcc-3.2 gcc )
zawierające wszystko co niezbędne, ale w filozofii typowo
unixowo-ascetycznej. Np. pełna lista parametrów wywołania avr-gcc liczy
sobie prawie... 600 pozycji ;-)) Natomiast wyraźnie czuje się, że jest to
przeniesienie uniwersalnego narzędzia z innego środowiska. Dotyczy to
zarówno sposobu realizacji niektórych działań (obsluga przerwań, dostęp do
portów itp.) jak i np. postaci listingów, map. itp. Zawierają masę
nadmiarowych informacji przez co, bez odpowiedniej wprawy, czyta się je z
trudem. Natomiast rolę IDE może pełnić AVR-Studio(3.53) ze wszystkimi
wadami i zaletami.

Naciąłem się na wersję demo CodeVision.

A to CodeVision co to jest? Mozesz...?

Tzn. nigdzie nie napisano jawnie,
jakiemu ograniczeniu w wersji demo podlega wielkość kodu wynikowego.
Założyłem, że podobnie jak w narzędziach dla 51-ek będzie to 2K (czyli pełne
1000słów w 2313). Niestety już po napisaniu niewielkiego kawałka kodu
odbiłem się od limitu. Z postronnego źródła dowiedziałem się poniewczasie,
że limit wynosi MIN( ROMSIZE/2, 950_words). Biorąc pod uwagę, że startup +
konfiguracja podstawowydh peryferiów generuje ponad 200 słów kodu, to
CV_demo nadaje się wyłącznie do D..d....de..emonstracji.

Nie mozna usunac startupu? W IAR i KEIL pod 51daje sie to bez problemu
zrobic. Pare rzeczy trzeba recznie zrobic, ale kodu mozna
zaoszczedzic.

W tej chwili ćwiczę przenoszenie tego kawałka kodu pod GCC. Nie powiem -
czynność pouczająca. Na razie drażni mni np. brak takiego drobiazgu jak
proste odwołanie do linii portu: PORTB.1 = 0.

Hmm, nie ma zadnych slow kluczowych specyficznych dla mikrokontrolerow
(typy pamici, itd). Bardzo to dziwne.

Osobną sprawę przy GCC stanowi panowanie nad plikami "makefile". Do
avr-gcc są dostępne przykładowe makefile przystosowane (-> Volker Oth) do
środowiska avr-gcc/AVR-Studio. Niestety, nie potrafię na razie zapanować
przy ich użyciu nad projektem, który oprócz kilku plików *.c zawiera jeszcze
parę nagłówków *.h. A manual do make-a liczy sobie skromne 150 stron ;-)
Krótko mówiąc - narzędzie potężne, ale na początku przytłaczające. CV bierze
się do ręki i używa - niemal jak Bascoma ;-)) Nie da się tego powiedzieć o
GCC. Chyba, że ma się już wprawę wyniesioną np. ze środowiska unixowego.

W razie czego moge sprobowac pomoc. Kiedys natworzylem sie sporo
makefili gdy pisalem oprogramowanie - uzywalem asm, c, linker bez
IDE. Aczkolwiek tworzenie rozbudowanego make to jets mordega. Moze sa
do tego jakies automaty?

--
Pozdrowienia, Marcin E. Hamerla

"Nienawidze turystow."

Poprzedni Następny
Wiadomość
Spis treści
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: NOP w avr-gcc
Date: Mon, 30 Sep 2002 22:59:58 +0200


Użytkownik "Marcin E. Hamerla" <mehamerla_at_nospam_pro.onet.pl> napisał w wiadomości
news:cqchpucf00mt8ls8jnd66s9bnj66p4rhme_at_nospam_4ax.com...
Co do NOPa to już znalazłem
( asm("operand"); )
Dosc typowo ;--).
Aczkolwiek chwilę wcześniej w CV miałem #asm. ZTCP w Keilu było to #pragma
asm. Co kraj to obyczaj :-)

Och, ja juz od dawna praktycznie nic w assemblerze nie napisalem, ale
jego znajomosc jest baaardzo przydatna.
Dlatego uczę się asm-a zerkając jak sobie poradził kopilator C :-)

A to CodeVision co to jest? Mozesz...?
www.hpinfotech.ro
Kompilator C z ładnym IDE, garścią bibliotek "sprzętowych" (1-Wire, ...) i
CodeWizardem na dzień dobry. Używa się go przyjemnie. Natomiast nie mnie
maluczkiemu oceniać jakość generowanego kodu. Aczkolwiek przy pobieżnym
oglądaniu ewidentnych głupot nie zauwazyłem. Liczą sobie 150USD za wersję
FULL, albo 90USD za wersję LITE (bez ATmega, fpslic-a i czegoś jeszcze).

Na AVR-Frykasach jest zamieszczony ładny artykuł "Which C compiler should I
choose?"
( http://www.avrfreaks.net/Freaks/Articles/AdamJohnson/intro.php )
Wynika z niego, że ImageCraft jest najlepszy dla programistów robiących coś
w sprzęcie. CodeVison dla sprzętowców, którzy muszą napisać jakiś program.
Natomiast GCC? - Dla ludzi z ograniczonym budżetem :-)) Przy czym odradza
się go osobom niewprawnym w ANSI-C i nie znajdującym szczęścia w pisaniu
makefile-i.

Nie mozna usunac startupu? W IAR i KEIL pod 51daje sie to bez problemu
zrobic. Pare rzeczy trzeba recznie zrobic, ale kodu mozna
zaoszczedzic.
Można napisać własny. Ale, żeby tak od razu przy pierwszym spotkaniu ;-))

Hmm, nie ma zadnych slow kluczowych specyficznych dla mikrokontrolerow
(typy pamici, itd). Bardzo to dziwne.
Jest i to wszystko czego trzeba. Ale nie znaczy to, że wygodne i oczywiste.
Zwłaszcza w pierwszym podejściu. Np. do stałych w pamięci programu
odwołujesz się w inny sposób niż do zmiennych (Przez jawne wywołanie funkcji
lpm). A przecież kompilator mógłby to ukryć.

W razie czego moge sprobowac pomoc. Kiedys natworzylem sie sporo
makefili gdy pisalem oprogramowanie - uzywalem asm, c, linker bez
IDE. Aczkolwiek tworzenie rozbudowanego make to jets mordega. Moze sa
do tego jakies automaty?

W razie czego się uśmiechnę. Zgłębianie make-a nie jest w tej chwili moim
marzeniem. Choć raz opanowany może się przydać. Kiedyś sporo pisałem w
Perlu - przez to "make" mnie ominął. ;-)

MDz