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