Arduino - 32 bitu promenna ze 4 byte
Miroslav Mraz
mrazik na volny.cz
Středa Prosinec 18 15:29:33 CET 2024
Patrně narážíte na Cortex-M0. Ze zkušenosti mohu říct, že tyto problémy
tam opravdu kdysi byly. Současné překladače by to měly mít už vyřešeno.
V newlib ntohs vede na __builtin_bswap16 a to zase na instrukci rev16.
Ale nelze vyloučit, že nevhodné přetypování může dělat problémy. Asi je
jednodušší data nakopírovat memcpy() na správně zarovnanou adresu už
před voláním ntoh.
Mrazík
On 18. 12. 24 14:36, Slavomir Skopalik wrote:
> Jen jedna zajimavost, zkouseli jsme ntoh, ale u ARMu jsme narazili na to,
>
> ze nedokaze cist/zapisovat 16/32 bit z nezarovnane adresy (CPU spadne do
> faultu).
>
> Takze tam nakonec zutalo tohle (take ModBus):
>
> for(uint i = 0; i < Cnt; i++){
> uint16_t v = a->Data[Addr + i];
> RxTxBuffer[3 + 2*i] = v >> 8;
> RxTxBuffer[3 + 2*i + 1] = v;
> }
>
> Slavek
>
>
Další informace o konferenci Hw-list