C xc8 rozkald double na byty
Jan Waclawek
konfera na efton.sk
Úterý Květen 16 13:46:01 CEST 2017
>Chtel jsem tim rict pouze to, ze prekladac by mel umoznit pouzivat
>C-ckove definice pro urceni vsech struktur ve vsech pametech.
To umoznuje, na to staci puhy typedef - to staci na definicie vsetkych
datovych struktur; samozrejme to nestaci na ich spristupnenie, ale na to
aj v tom Vasom "normalnom" prekladaci je nutne pouzit specializovane
funkcie.
>To mi
>dovoli ulozit do EEPROM data ve formatu, kteremu prekladac rozumi, a
>nemusim resit jejich rozebrani na jednotlive byty.
O ano, to dovoli, ale len runtime. To je ten postup co som popisal -
napisat program co to napali do eeprom, a potom tu eeprom precitat v
programatore.
Vy tym vsak myslite to, ze by mal prekladac mat prostriedky na generovanie
inicializatora pre tie pamati vo forme binarneho suboru vhodneho pre
programovanie tych suborov. To je nieco ine ako moznost pouzivat Cckove
struktury.
"Prekladac" je pomerne siroky pojem, ktory zahrnuje celu suitu nastrojov;
to, ze pre bezne distribucie avr-gcc (lebo to je to co ste mali na mysli s
"normalnymi mikrokontrolermi, vsakze") mate moznost predpisat jednu
konkretnu section a "automaticky" sa Vam objavi inicializator vo forme
intelhex suboru, to je nasledok viacerych uprav, najma v linker scripte a
makefile. To, ze to je prave v tychto dvoch suboroch naznacuje, ze sa
vyuziva vseobecnejsi mechanizmus, ktory v tom gcc existuje, na jednu
konkretnu ulohu.
No a takyto mechanizmus je pravdepodobne pritomny aj u toho XC8, naznacuje
to kapitola 5.15.4 Changing and Linking the Allocated Section, ale nebudem
sa do toho ponarat. (Ako pan kolega Sukuba bol uviedol, ten XC8 vie aj
"dokonalejsiu" formu inicializovanej premennej v named address space
__eeprom; bohuzial nie pre konkretnu rodinu PIC18 ktoru myslim pan kolega
Draxal pouziva.
Mimochodom, "by mal" je skor uzivatelske zelanie nez nejaky predpis. Ja si
viac zelam plnohodnotne bitove premenne, napriklad... :-)
wek
PS.
Len tak cvicne, pozrel som do manualu ku gas a pise sa tam:
A number can be a flonum or bignum. In this case, you are warned that only
the low order 32 bits are used, and as pretends these 32 bits are an
integer.
Predpokladam, ze flonum je floating-point number.
Tak som si skusil v avr-as floating konstantu - neprelozilo mi to, takze
ten trik s makrom co prevedie konstanty na inline assembler, co je ten
__EEPROM_DATA() v XC8, tu nebude fungovat.
lds r24, 23.0 >> 1
dq.S:5: Error: garbage at end of line
Zaujimave pritom je, ze
0000 B841 .float 23.0
mi prelozilo..
>Dne 16.5.2017 12:02, Josef ©tengl napsal(a):
>> Pan Waclawek měl, podle mě, na mysli to, µe formu zápisu specifickou
>> pro GCC a kompatibilní kompilátory nazýváte normální. Hmmm. Normální.
>> S tím pojmem mám docela problém. Aha. To znamená µe povaµujete v±echny
>> aktivně pouµívané (ač ne vámi) za exotické, či dokonce defektní? :-)
>> Pojem normální je velmi o±emetné a nazval bych to v tomto kontextu aµ
>> arogantní označení, pro nás, kdo normálně (ve smyslu běµně) pouµívá i
>> jiné architektury :-D
>>
>> Mimochodem není to věc mikrokontroléru, ale překladače. Dost důleµitá
>> věc, pokud pouµíváte pro jedno mikro více překladačů (znáte to, ná±
>> zákazník, ná± pán).
>>
>> Ideově máte pravdu (to jest zápis do definované oblasti paměti ...
>> programu, pokud je jedná o von Neumann architekturu)
>>
>>
>> Dne 16.5.2017 v 11:31 Hynek Sladky napsal(a):
>>> IAR nepouzivam a neznam, tak nedokazu odpovedet.
>>>
>>> Hynek
>>>
>>>
>>> Dne 16.5.2017 11:14, Jan Waclawek napsal(a):
>>>> A toto Vam na tom istom "normalnom" mikrokontroleri funguje napr. aj
>>>> v IAR
>>>> prekladaci?
>>>>
>>>> wek
>>>>
>>>>
>>>> ----- Original Message ---------------
>>>>> Na "normalnich" mikrokontrolerech muzu definovat promennou nebo
>>>>> strukturu umistenou do EEPROM.
>>>>>
>>>>> double x __attribute__ ((section (".eeprom"))) = 520.25;
>>>>>
>>>>> Hynek
>>>>>
>>>>>
>>>>> Dne 16.5.2017 10:02, Miroslav Draxal napsal(a):
>>>>>> Re: C xc8 rozkald double na byty
>>>>>>
>>>>>> Jak vy se to třeba zapisovalo na jiných platformách -
>>>>>> mikrokontrolerech?
>>>>>>
>>>>
>
Daląí informace o konferenci Hw-list