Arduino - 32 bitu promenna ze 4 byte

Pavel Hudeček edizon na seznam.cz
Pátek Prosinec 20 10:31:36 CET 2024


Asi si v Microchipu myslej, že se to do malých MCU nehodí. Ostatně tam 
ani neni v nastavení žádný přepínátko verze C++, musí se dopsat 
patřičnej parametr překladače do kolonky miscelanous.

Přitom ale právě Microchip začal AVRka modernizovat a teď maj často 64k 
a víc flashky.

S těma oddělenejma adresníma prostorama je podle mě opačnej problém, že 
je chyba, že se je autoři kompilátorů nenaučili používat. V PC je už od 
80386 dobrejHW na správu paměti s oddělenými prostory programu, dat a 
zásobníku, právy, 3 úrovně virtualizace paměti atd. Stejně tak to maj 
větší ARMy a kdovíco ještě. Ale protože překladače C/C++ to neumí použít 
a jádra OS jsou v něm napsaná, tak je to všude pláclý přes sebe a 
zabezpečení se v podstatě řeší různejma narovnákama na vohejbáky, z HW 
se využije prakticky jen stránkování.

PH

Dne 20.12.2024 v 9:45 Miroslav Mraz napsal(a):
> Psal jsem, že ne každý překladač to umí. Na AVR se tomu moc nedivte, 
> tohle je určeno pro dospělé MCU, které mají jednotný adresní prostor. 
> Já jsem včera zprovoznil i to TABLE pro AVR, patlal jsem se s tím celé 
> odpoledne protože už to dlouho nedělám.
> Nakonec vyhověla kombinace avr-gcc 5.4.0 (prastará, ale já fakt AVR 
> dělat nechci) a clang 18.0.0. Starší clang - smůla. Takže vidíte, že 
> je to celé dost vachrlaté a napsat generátor té look-up tabulky v 
> pythonu je daleko míň práce a je to čistší.
> Největší problém je dostat tu tabulku do flash už při překladu. Tohle 
> gcc nedokáže ani na dospělém procesoru, proto clang. Na AVR je ještě 
> problém v tom, že překladač C++ nezná adresní prostor __flash, který 
> jde pro čisté C normálně použít. Zřejmě to souvisí s tím, že v C++ se 
> používají často odkazy a s tím lze očekávat nesnáze.
>
> Podle toho co píšete, tak to Microchip Studio prostě není určeno pro 
> moderní C++. Ten příklad s ellipsis přeložím i s tím prastarým avr-g++ 
> se standardem C++11. To je divné.
>
> Mrazík
>
> On 19. 12. 24 23:53, Pavel Hudeček wrote:
>> Tak mě to teda dře trochu víc. Červený D_PI, sincos a i_round jsem si 
>> vyřešil, ale co dělat s červeným TABLE, netuším.
>> Error        'TABLE' does not name a type
>>
>> (C++ v Microchip Studiu, AVR64DD32)
>>
>> A podobně je to s těma ... Při libovolné snaze o použití v templatu 
>> červená.


Další informace o konferenci Hw-list