avr-gcc je dnes uz peklo, do ktoreho svojim dielom prispel aj MCHP; was: jak se prelozi

Jan Waclawek konfera na efton.sk
Čtvrtek Duben 25 17:53:27 CEST 2024


Zaujalo ma to _PROTECTED_WRITE(). Tak som hladal. A je to teda peklo.

Zacal som hladanim v headeroch [avrlibc]/include/avr/ioXXX.h. Tam to
skutocne je, ale len pre nejake Tiny, a potom v xmega.h. Aha, tak to
AVR64DD32 bude asi pribuzny xmega, ale kde ma ten ioXXX.h?

Esteze som vcera cital to wiki,
https://gcc.gnu.org/wiki/avr-gcc#Supporting_.22unsupported.22_Devices ,
pod "Using .atpack Device Pack Files from Atmel / Microchip". Tak tam.

Ako okej, ale mohol by mat MCHP aspon tolko chochmesu a prispiet touto
mudrostou do avr-libc dokumentacie. Napokon, dostali cely avr-gcc aj
avr-libc na striebornej tacke, a naspat neprispeli viacmenej nic. Ak tomu
dobre rozumiem, aj to wiki pise/spravuje G.J.Lay, t.j. neplateny amater.

Tolko teda o motivacii open source hnutia.

Ale ani to este nebolo vitazstvo resp. zdroj pochopenia. Lebo stiahol som
si z daneho linku Microchip.AVR-Dx_DFP.2.4.286.atpack a hladam v nom
_PROTECTED_WRITE a nic. Header tam pritom je, include\avr\ioavr64dd32.h .
Tak kde?

No pointa je (uplne neviem lebo nemam chut kopat tak hlboko) v onom
mechanizme pre specs popisovanom v tom wiki,
gcc\dev\avr64dd32\device-specs\specs-avr64dd32 , ktore, ak tomu dobre
rozumiem, prida -mmcu=avrxmega2, co obratom niekde v utrobach kompilatora
vyvola generovanie symbolu __AVR_ARCH__ s hodnotou 102. No a potom sa
pozrieme spat do avr-libc/include/avr/io.h, a tam, uplne na konci, najdeme

#if __AVR_ARCH__ >= 100
#  include <avr/xmega.h>
#endif 

Aha!

Take lahke.

wek



----- Original Message ---------------
>Zkusil jsem AVR64DD32, to bude podobný. Zrecykloval jsem předchozí pokus:
>--------------------
>#include <avr/io.h> // AVR64DD32
>#include <math.h>
>
>int main(void) {
>     //_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL_CLKSEL_EXTCLK_gc); // 
>ext clk nebo HF xtal
>     _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL_CLKSEL_OSCHF_gc);    // 
>int osc
>     _PROTECTED_WRITE(CLKCTRL.MCLKCTRLB, 0);     // nedelit - bude 24 MHz
>     //_PROTECTED_WRITE(CLKCTRL.XOSCHFCTRLA, CLKCTRL_CSUTHF_4K_gc + 
>CLKCTRL_FRQRANGE_24M_gc + CLKCTRL_ENABLE_bm); // Xosc 24MHz
>     _PROTECTED_WRITE(CLKCTRL.OSCHFCTRLA, CLKCTRL_RUNSTBY_bm + 
>CLKCTRL_FRQSEL_24M_gc); // int osc 24MHz



Další informace o konferenci Hw-list