Равенство, это конечно правильно...но. Структуры (конечно же одного типа) можно присваивать друг другу простым знаком равенства - при этом все элементы структуры скопируются, как блок.
Для Иара, да. Для GCC - нет.
struct A_t Ram_copy;
__flash struct A_t FlashCopy;
void ReadToRam()
{
Ram_copy=FlashCopy;
}
Не заработает. В AVRGCC работа с flash криво сделана - ладно бы прочитать можно только с помощью вызова функции, которая всё скопирует куда надо(это ничего - с еепром также работать надо).
Так ведь ещё и конструкторы объектов можно расположить только в начале flash (или есть способ?). И мало того - flash-переменную можно расположить в районе >128K. но адрес её не получить никак, GCC не умеет такое.
Полное неравенство вообщем.