Mam pytanie: jak podpiac printf do seriala w GCC? Potrafie wyslac na seriala dowolny string za pomoca swojej funkcji _print(&COM,"ALA ma kota");. Lecz nie umiem przekierowac printf na serrial .Wiem ze to robi sie to chyba fdevopen(uart_putchar, NULL, 0); Lecz niestety nie dziala.
Prosze o wskazówki.
Pozdrawiam Mster
Didn't find your answer? Ask the community — no account required.
I
invalid unparseable
Zainicjowales UART?? Predkosc, z przerwaniami lub bez, ile bitow transmisji???
tak zawsze robi³em pod winavr i zawsze by³o ok. Teraz robiê w czystym GCC pod 68k i mam komunikat o niezdefiniowanej referencji do fdevopen. :(
Pozdrawiam Mister
J
Jurek Szczesiul
Wed, 28 Jul 2004 15:39:23 +0200, na pl.misc.elektronika, Mister napisał(a):
Czy przypadkiem fdevopen to nie jest 'wynalazek' specjalnie pod avr ?
[..] The standard streams stdin, stdout, and stderr are provided, but contrary to the C standard, since avr-libc has no knowledge about applicable devices, these streams are not already pre-initialized at application startup. Also, since there is no notion of "file" whatsoever to avr-libc, there is no function fopen() that could be used to associate a stream to some device. (See note 1.) Instead, the function fdevopen() is provided to associate a stream to a device, where the device needs to provide a function to send a character, to receive a character, or both. [..]
M
Mister
Dlatego pozostaje nadal pytanie otwarte:
Jak skojarzyæ printf i uarta tak aby dane sz³y na uarta? -:)
Mister
M
Marcin E. Hamerla
Mister napisal(a):
Ja tam bym sie nie chrzanil, tylko uzyl sprintfa ;--).
G
Grzegorz Domagala
Mister <wojpie@wywal_to.poczta.onet.pl> napisał:
To czego szukasz nazywa sie freopen - cytat z mana: Funkcja freopen otwiera plik, którego nazwę wskazuje path i związuje z nim strumień wskazywany przez stream. Strumień ten jest zamykany (jeśli istnieje). Atrybut mode ma takie samo znaczenie jak w przypadku funkcji fopen. Głównym zastosowaniem funkcji freopen jest zamiana pliku związanego ze standartowymi strumieniem tekstowym (stderr, stdin lub stdout). GRG
M
Mister
Mo¿esz co¶ wiêcej na ten temat napisaæ? Albo wskazaæ linka na ca³ego manuala?
:)))) "man freopen" jesli masz linuksa :). Lub google "freopen" - na pewno cos znajdzie. Na przyszlosc - man nazwa_funkcji bedzie pomocne przypadku 99% funkcji z biblioteki standardowej. GRG
K
Krzysztof Rudnik
Mozesz powiedziec jaka sciezka (path) wskazuje na port szeregowy?
Krzysiek Rudnik
I
invalid unparseable
ekhm sorry - albo mi sie zdaje albo mowa o jakims uP 68k nie wiem czy kolega uzywa GCC z biblioteka przeznaczona do tego procesora, czy zwyklego linuxowego portu dla 68k
jesli to pierwsze, to mozliwe ze w libc jest zdefiniowane cos takiego jak fdevopem z avr-gcc w libc dla avrow jest przerobiony caly stdio jesli uzywa zwyklego GCC, to wszystkie f-ki do niczego sie nie nadaja, bo sa stworzone do wspolpracy z systemem operacyjnym
ja bym proponowal nadpisac w programie standardowa funkcje putc wlasna ktora wysyla na UARTa znaki, a potem uzywac printf - tylko nie daje glowy czy printf nie korzysta z fputc i czy gcc w ogole pozwoli na cos takiego i nie bedzie warczal... nigdy tego nie robilem na uP, bo procedury pokroju printf zajmuja ladnych kilka KB ;]
J
Jan Dubiec
A jakiej używasz bibliteki standartowej? Newlib? Jeśli tak, to chyba musisz zaimplementować funkcję outbyte (oraz ewentualnie inbyte - do czytania) i zlinkować ją z Twoim softem. AFAIR w źródłach newlib są przykładawe implementacje dla jakiejś kości z rodziny m68k.
BTW. To nie jest problem kompilatora tylko biblioteki standartowej - wbrew pozorom to są dwie różne rzeczy.
Regards, /J.D.
M
Mister
próbowa³em z putc, outbyte ale bez efektu...
chyba zostanê przy sprintf.
Pozdrawiam Mister
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.