Вот суть: #pragma pack(1)
__align(4) struct IH{ //*************** Äëÿ EEPROM 2 ñòð) ****************************
U16 my_id; // ID êîìáàéíà, ïðèâÿçàííûé èç äàò÷èêà
U8 type_sens; // òèï 1 - êîìáàéí, 2 - áóíêåð
U32 conag; // êîíòðàãåíò (4 ñèìâîëà / U32)
U8 fl_card; // ôëàã ðàçðåøåíèÿ âûãðóçêè êàðòîé. Ñèìâîë 1 - ðàçðåøåíî, 0 - íåò
U8 fl_rd; // ôëàã "Òîëüêî ÷òåíèå ëîãà" (1) 0 - ðàçðåøåíî âñå
U8 fl_zero; // ôëàã ðàçðåøåíû ïóñòûå âûãðóçêè (1) 0 - çàïðåùåíû ïóñòûå âûãðóçêè
U8 conb_nunb; // Êîëè÷åñòâî êîìáàéíîâ äëÿ îäíîâðåìåííîé âûãðóçêè
S8 rssi_index; // 0..9 èíäåêñ â òàáëèöå. Ãðàíèöà RSSI beacon äëÿ ïðèíÿòèÿ ðåøåíèÿ î åãî ïðèåìå {-95,-90,-85,-80,-75,-70,-65,-60,-55,-50}; // 0..9 // Signed Char!
U32 conag2; // äîïîëíèòåëüíûé êîíòðàãåíò (4 ñèìâîëà / U32)
}IH; // (âñåãî 16 áàéò. ****************************** Äëÿ 2 ñòðàíèöû eeprom) ****************************
Если я беру указатель 16 или 32 битного поля структуры и явно привожу к void * или U8 *
memcpy((void*)&IH.conag,(void*)&buffer[32],(4+2+7));
memcpy((void*)&IH.my_id,(void*)&buffer[32],(4+2+7));
в memcpy() вызывается __aeabi_memcpy4 (попытка выкружить что-то с быстродействием)
Если я беру указатель 8 битного поля структуры и явно привожу к void * или U8 *
memcpy((void*)&IH.type_sens,(void*)&buffer[32],(4+2+7));
в memcpy() вызывается __aeabi_memcpy (стандартная "побайтная" функция )
Считаю это косяком, ибо нефуй плодить отсебятину....