-
X-Received: by 10.49.15.74 with SMTP id v10mr226501qec.16.1372343735098; Thu, 27 Jun
2013 07:35:35 -0700 (PDT)
X-Received: by 10.49.15.74 with SMTP id v10mr226501qec.16.1372343735098; Thu, 27 Jun
2013 07:35:35 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!ko2no44247792pbb.0!
news-out.google.com!b2ni38703pby.1!nntp.google.com!j2no2802835qak.0!postnews.go
ogle.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.misc.elektronika
Date: Thu, 27 Jun 2013 07:35:34 -0700 (PDT)
In-Reply-To: <7...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=217.153.153.214;
posting-account=tNTseAoAAACUAJsreMhMEWnq57DyXy4L
NNTP-Posting-Host: 217.153.153.214
References: <kq05t1$s7h$1@news.task.gda.pl> <kq1rj7$ro$1@news.dialog.net.pl>
<kq1v7d$7j4$1@news.task.gda.pl>
<9...@g...com>
<c...@g...com>
<a...@g...com>
<4...@g...com>
<7...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a...@g...com>
Subject: Re: Decyzja zapadła...(mikrokontrolery ST)
From: brak <c...@g...com>
Injection-Date: Thu, 27 Jun 2013 14:35:35 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.misc.elektronika:649161
[ ukryj nagłówki ]On Tuesday, June 25, 2013 6:20:29 PM UTC+2, shg wrote:
> W dniu wtorek, 25 czerwca 2013 16:13:49 UTC+2 użytkownik brak napisał:
<snip>
> Podłubałem trochę. eCos używa newlib jako standardowej biblioteki, ona jest częścią
środowiska, nie samego systemu.
System RTOS eCos sklada sie z : kernela + driverow + stosow sieciowych oraz roznych
biblitek w tym bibliteki standatowej C oraz przeportowanej bibliteki standartowej C++
(uSTL). System eCos moze dzialac bez kernela jak i bez bibliteki standartowej C.
>Na upartego można skompilować z inną (tekst wyżej o kompatybilności), ale trzeba by
gmerać w skryptach.
Trzeba by bibliteke "opisac" w jezyku CDL ->
http://ecos.sourceware.org/docs-latest/cdl-guide/cdl
-guide.html
aby stala sie komponentem systemu.
>Nigdzie w nich nie znalazłem kompilacji newlib z innymi flagami niż domyślne.
Domyślne flagi newlib generują kod taki, jak pisałem wcześniej.
Kazdy komponet w systemie eCos jest opisany i konfigurowalny przez skrypty
CDL. Jedna z opcji kazdego komponetu jest zmiana flag kompilatora:
cdl_option CYGPKG_LIBC_STRING_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the C library. These flags are used in addition
to the set of global flags."
}
cdl_option CYGPKG_LIBC_STRING_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the C library. These flags are removed from
the set of global flags if present."
}
>Żeby uzyskać pożądany efekt, musiałbym ustawić odpowiednie flagi
Dodatkowo w biblitece C eCos jest opcja, ktora rozwiazuje Twoj problem :
cdl_option CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST {
display "Optimize string functions for code size"
flavor bool
default_value 0
description "
This option tries to reduce string function
code size at the expense of execution speed. The
same effect can be produced if the code is
compiled with the -Os option to the compiler."
}
>do kompilacji newlib przy budowaniu eCosa, a właściwie toolchaina, a to bez sensu,
bo równie dobrze mogę sobie zrobić samą newlib.
Trzeba rozroznic budowania toolchaina od budowania systemu. Mieszajac te dwa
zadania doszedles do bednego wniosku iz uzywajac newliba do budowania toolchaina
uzyjesz go tez do budowania systemu.
>
> Na wszelki wypadek przedstawię to na obrazku:
>
> http://wstaw.org/m/2013/06/25/strcpy.png
>
> Po lewej domyślne flagi, po prawej -Os bez dodatkowych "optymalizacji" i tu leży
istota mojego problemu.
Funkcja strcpy z eCosa (opcja CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST
odnosi sie m.in. do to pliku), w ktorej rozwiazany jest Twoj problem !!!
<sciezka do eCosa>/packages/language/c/libc/string/current/src/s
trcpy.cxx :
externC char *
strcpy( char *s1, const char *s2 ) CYGBLD_ATTRIB_WEAK_ALIAS(__strcpy);
// FUNCTIONS
char *
__strcpy( char *s1, const char *s2 )
{
CYG_REPORT_FUNCNAMETYPE( "__strcpy", "returning addr %08x" );
CYG_REPORT_FUNCARG2( "s1=%08x, s2=%08x", s1, s2 );
CYG_CHECK_DATA_PTR( s1, "s1 is not a valid pointer!" );
CYG_CHECK_DATA_PTR( s2, "s2 is not a valid pointer!" );
#if defined(CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST) || defined(__OPTIMIZE_SIZE__)
char *s = s1;
while ((*s1++ = *s2++) != '\0')
;
CYG_REPORT_RETVAL( s );
return s;
#else
char *dst = s1;
const char *src = s2;
CYG_WORD *aligned_dst;
const CYG_WORD *aligned_src;
// If SRC or DEST is unaligned, then copy bytes.
if (CYG_LIBC_STR_UNALIGNED2 (src, dst))
{
while ((*dst++ = *src++) != '\0')
;
CYG_REPORT_RETVAL( s1 );
return s1;
}
aligned_dst = (CYG_WORD *)dst;
aligned_src = (const CYG_WORD *)src;
// SRC and DEST are both "CYG_WORD" aligned, try to do "CYG_WORD"
// sized copies.
while (!CYG_LIBC_STR_DETECTNULL(*aligned_src))
{
*aligned_dst++ = *aligned_src++;
}
dst = (char*)aligned_dst;
src = (char*)aligned_src;
while ((*dst++ = *src++) != '\0')
;
CYG_REPORT_RETVAL( s1 );
return s1;
#endif // not defined(CYGIMP_LIBC_STRING_PREFER_SMALL_TO_FAST) ||
// defined(__OPTIMIZE_SIZE__)
} // __strcpy()
// EOF strcpy.cxx
dla porownania wersja z newliba:
newlib-1.18.0/newlib/libc/string/strcpy.c :
char*
_DEFUN (strcpy, (dst0, src0),
char *dst0 _AND
_CONST char *src0)
{
#if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
char *s = dst0;
while (*dst0++ = *src0++)
;
return s;
#else
char *dst = dst0;
_CONST char *src = src0;
long *aligned_dst;
_CONST long *aligned_src;
/* If SRC or DEST is unaligned, then copy bytes. */
if (!UNALIGNED (src, dst))
{
aligned_dst = (long*)dst;
aligned_src = (long*)src;
/* SRC and DEST are both "long int" aligned, try to do "long int"
sized copies. */
while (!DETECTNULL(*aligned_src))
{
*aligned_dst++ = *aligned_src++;
}
dst = (char*)aligned_dst;
src = (char*)aligned_src;
}
while ((*dst++ = *src++))
;
return dst0;
Podobne?
Spojrz na adresy URL :
http://sourceware.org/newlib/ i http://ecos.sourceware.org/
Wyjasnienie :
http://en.wikipedia.org/wiki/Cygnus_Support
Cygnus was also the original developer of Cygwin and of eCos, an embedded real-time
operating system.
http://en.wikipedia.org/wiki/Newlib
It was created by Cygnus Support as part of building the first GNU cross-development
toolchains.
> OS do niczego mi nie potrzebny.
Tobie nie, ale innym moze istotnie ulatwic wiele spraw a przy okazji moze nauczyc ,
np. "porzadnego" programowania - trzeba sie dostosowac do standartow kodowania
obowiazujacych w danym systemie.
Najnowsze wątki z tej grupy
- Czy cos fi przechodzi przez trafo separujące?
- śrubka masy
- Ciekawostka na dziś lock bity
- [OT] napisy w YT
- Było 83V
- Stare komputery
- Odbiornik ADS-B i wzmacniacze
- Thunderbird i dysk...
- opornosc falowa
- Bateria 9V 6F22, alkaliczna v cynkowa, samorozładowanie, bateria wysokiej trwałości do miernika
- Tani zakup z ali?
- w czasach LED komary mają ciężko
- walizka z kodami
- Rejestrator temperatur - termopara, siec
- Router LTE z możliwością zmian MTU
Najnowsze wątki
- 2025-08-06 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-08-06 Białystok => Inżynier oprogramowania .Net <=
- 2025-08-06 "[...] sejmowe wystąpienie posłanki Klaudii Jachiry, która zakończyła je słowami ,,Sława Ukrainie"."
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Panuje się 181 159,42 zł./mies. na posła w 2026r.
- 2025-08-05 "Chiny przekraczają w wydobyciu 4 mld ton węgla, Indie i USA ponad 1 mld, a Rosja 500 mln ton [...]"
- 2025-08-05 Czy cos fi przechodzi przez trafo separujące?
- 2025-08-05 kajaki i promile
- 2025-08-05 Re: Tesla jest bezpieczna, wczoraj spaliła się doszczętnie na Ursynowie i nikomu się nic nie stało
- 2025-08-05 Gdynia => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-08-05 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-05 B2B i książka przychodów i rozchodów
- 2025-08-04 Re: Atak na lekarza w Oławie. Policja zatrzymała sprawcę na lotnisku Polska Agencja Prasowa 4 sierpnia 2025, 12:16 FACEBOOK X E-MAIL KOPIUJ LINK W szpitalu w Oławie 37-letni pacjent zaatakował lekarza, po tym, jak ten odmówił mu wypisania długoterminowego
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- 2025-08-04 Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML