RTV forum PL | NewsGroups PL

Jak zaimplementować printf z PSTR w IAR dla ARM, by teksty były w pamięci programu?

ARM iar printf

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować printf z PSTR w IAR dla ARM, by teksty były w pamięci programu?

Goto page 1, 2  Next

Janusz
Guest

Wed Jan 02, 2008 10:00 am   



Witam
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.

Jak to zrobić ?

Pozdrawiam
Janusz Brela

mk
Guest

Wed Jan 02, 2008 10:56 am   



Janusz pisze:
Quote:
Witam
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.

Jak to zrobić ?

A skąd wytrzasłeś coś takiego jak printf_P, bo w bibliotece standardowej
czegoś takiego nie ma. Co ta funkcja ma robić?

Po pamięci możesz pisać funkcją z biblioteki standardowej o nazwie sprintf.

pzdr
mk

Janusz
Guest

Wed Jan 02, 2008 12:05 pm   



Użytkownik "mk" <REVERSE_lp.pw@myzskm.REMOVE> napisał w wiadomości
news:flfn50$apo$1@news.wp.pl...
Quote:
Janusz pisze:
Witam
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.
Jak to zrobić ?
A skąd wytrzasłeś coś takiego jak printf_P, bo w bibliotece standardowej
czegoś takiego nie ma. Co ta funkcja ma robić?
Po pamięci możesz pisać funkcją z biblioteki standardowej o nazwie
sprintf. pzdr
mk

Chyba kolega nie przeczytał do końca.
Chodzi o funkcję wyświetlającą napis z pamięci programu.

--
--
JJJK

Górski Adam
Guest

Wed Jan 02, 2008 1:39 pm   



Janusz pisze:
Quote:
Witam
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.

Jak to zrobić ?

Pozdrawiam
Janusz Brela


a może:

char * const tekst = "Do kompilatora -> To ma byc w pamieci programu";
.....
printf("%s",tekst);

adam

Michał Baszyński
Guest

Wed Jan 02, 2008 2:58 pm   



Dnia 2008-01-02 12:05, Użytkownik Janusz napisał :

Quote:
Witam
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci
programu.
Chyba kolega nie przeczytał do końca.
Chodzi o funkcję wyświetlającą napis z pamięci programu.

pytanie tylko czy w ARM-ach takie rozróżnienie ma sens?
Przecież w nich te obszary nie są rozdzielone w sposób wymagający innego
rodzaju adresowania, tak jak to mam miejsce w AVR?

Pozdr.
Michał

Adam Dybkowski
Guest

Thu Jan 03, 2008 12:35 am   



Janusz pisze:

Quote:
Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.

Funkcja printf_P i makro PSTR to "wynalazki" specyficzne dla avr-gcc i w
ogóle platformy AVR, gdzie są rozdzielone obszary adresowe pamięci
programu i danych. I trzeba właśnie robić takie sztuczki aby wypisać
ciąg znaków z pamięci programu.

W platformie ARM (np. w kompilatorze arm-elf-gcc) piszesz normalnie:
printf ("ABCD");
i ciąg znaków zostanie umieszczony w sekcji stałych (.rodata). Gdzie tą
sekcję fizycznie wsadzisz to już twoja sprawa i zawartości pliku
sterującego linkowaniem. Jeżeli program wciśniesz np. w procesor z
pamięcią Flash (przykładowo AT91SAM7S256) to i ciąg znaków będzie tam
zawarty. Domyślnie sekcje .text i .rodata umieszcza się w pamięci
stałej, a sekcje .bss i .data w pamięci RAM.

Pewnie IAR ma podobnie, ale dlaczego boisz się użyć gcc (np. z pakietu
gnuarm)?

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Dybkowski
Guest

Thu Jan 03, 2008 12:36 am   



Górski Adam pisze:

Quote:
char * const tekst = "Do kompilatora -> To ma byc w pamieci programu";
....
printf("%s",tekst);

Napisanie ciągu znaków w cudzysłowach (tak jak powyżej "%s") już
wystarczy aby kompilator umieścił go w sekcji .rodata czyli w pamięci
niezmienianej podczas działania programu (np. Flash).

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Janusz
Guest

Thu Jan 03, 2008 8:18 am   



Quote:
W platformie ARM (np. w kompilatorze arm-elf-gcc) piszesz normalnie:
printf ("ABCD");
i ciąg znaków zostanie umieszczony w sekcji stałych (.rodata). Gdzie tą
sekcję fizycznie wsadzisz to już twoja sprawa i zawartości pliku
sterującego linkowaniem. Jeżeli program wciśniesz np. w procesor z
pamięcią Flash (przykładowo AT91SAM7S256) to i ciąg znaków będzie tam
zawarty. Domyślnie sekcje .text i .rodata umieszcza się w pamięci stałej,
a sekcje .bss i .data w pamięci RAM.

Pewnie IAR ma podobnie, ale dlaczego boisz się użyć gcc (np. z pakietu
gnuarm)?

ja się nie boje nawet bardzo mi sie podobał (WinAvr) ale nasi "górowie" od
programowania w pracy wolą IAR bo "lepszy".

dziękuje za odpowiedź

Pozdrawiam
Janusz Brela

mk
Guest

Thu Jan 03, 2008 10:43 pm   



Górski Adam pisze:
Quote:
a może:
char * const tekst = "Do kompilatora -> To ma byc w pamieci programu";
.....
printf("%s",tekst);

Chyba miał być wskaźnik na stały char, a nie stały wskaźnik na char...

pzdr
mk

mk
Guest

Thu Jan 03, 2008 10:50 pm   



Janusz pisze:
Quote:
ja się nie boje nawet bardzo mi sie podobał (WinAvr) ale nasi "górowie" od
programowania w pracy wolą IAR bo "lepszy".

W takim razie poproszę o rozwinięcie tematu:
ARM IAR jest gorszy od arm-gcc ponieważ...
Proszę pominąć wątek pt. "koszty zakupu", albo przynajmniej rozpatrywać
go w kontekście całkowitych kosztów użytkowania.

pzdr
mk

Raven
Guest

Thu Jan 03, 2008 11:45 pm   



mk pisze:
Quote:
Janusz pisze:
ja się nie boje nawet bardzo mi sie podobał (WinAvr) ale nasi
"górowie" od
programowania w pracy wolą IAR bo "lepszy".

W takim razie poproszę o rozwinięcie tematu:
ARM IAR jest gorszy od arm-gcc ponieważ...

jedyne co mi przychodzi tak na szybkiego do glowy to
... obsluguje "bez kombinacji alpejskiej" rdzenie Cortex

Quote:
Proszę pominąć wątek pt. "koszty zakupu", albo przynajmniej rozpatrywać
go w kontekście całkowitych kosztów użytkowania.

pzdr
mk


Górski Adam
Guest

Fri Jan 04, 2008 12:50 pm   



Adam Dybkowski pisze:
Quote:
Janusz pisze:

Czy jest coś w stylu printf_P(PSTR("hello")) w IAR dla ARMów?
printf mi działa dobrze ale chciałbym alby texty były w pamięci programu.

Funkcja printf_P i makro PSTR to "wynalazki" specyficzne dla avr-gcc i w
ogóle platformy AVR, gdzie są rozdzielone obszary adresowe pamięci
programu i danych. I trzeba właśnie robić takie sztuczki aby wypisać
ciąg znaków z pamięci programu.

W platformie ARM (np. w kompilatorze arm-elf-gcc) piszesz normalnie:
printf ("ABCD");
i ciąg znaków zostanie umieszczony w sekcji stałych (.rodata). Gdzie tą
sekcję fizycznie wsadzisz to już twoja sprawa i zawartości pliku
sterującego linkowaniem. Jeżeli program wciśniesz np. w procesor z
pamięcią Flash (przykładowo AT91SAM7S256) to i ciąg znaków będzie tam
zawarty. Domyślnie sekcje .text i .rodata umieszcza się w pamięci
stałej, a sekcje .bss i .data w pamięci RAM.

Pewnie IAR ma podobnie, ale dlaczego boisz się użyć gcc (np. z pakietu
gnuarm)?


Ja używałem zarówno GCC+Eclipse oraz IAR. Może to nie do końca to samo
bo to dla MSP430, ale moge porownac jakosc kodu z GCC i IAR.

IAR wypada dużo lepiej pod względem optymalizacji kodu. Ten sam kod
zajmuje dużo mniej miejsca ( optymalizacja na rozmiar ).

Adam

Górski Adam
Guest

Fri Jan 04, 2008 12:55 pm   



mk pisze:
Quote:
Górski Adam pisze:
a może:
char * const tekst = "Do kompilatora -> To ma byc w pamieci programu";
.....
printf("%s",tekst);

Chyba miał być wskaźnik na stały char, a nie stały wskaźnik na char...

pzdr
mk

Racja powinno byc:
char * const tekst const = "Do kompilatora -> To ma byc w pamieci programu";

Czyli stały wskaznik do stalej

Adam

mk
Guest

Sun Jan 06, 2008 12:52 am   



Górski Adam pisze:

Quote:
Racja powinno byc:
char * const tekst const = "Do kompilatora -> To ma byc w pamieci
programu";

Czyli stały wskaznik do stalej

Coś tu jest nie tak ;-)

pzdr
mk

Górski Adam
Guest

Mon Jan 07, 2008 4:06 pm   



mk pisze:
Quote:
Górski Adam pisze:

Racja powinno byc:
char * const tekst const = "Do kompilatora -> To ma byc w pamieci
programu";

Czyli stały wskaznik do stalej

Coś tu jest nie tak ;-)

pzdr
mk

Tak ?
a co ?
Jeśli łaska oczywiście.

Adam

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zaimplementować printf z PSTR w IAR dla ARM, by teksty były w pamięci programu?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map