-
- А в структуры все и запаковать линкером в отдельный сегмент "EEPROM_SEG". А выравнивание на границу страницы нафига надо? При записи проверять можно. - Хитрый Китаец(05.05.2015 11:46)
- 100500 раз уже говорил, чем тратить время и силы на такой говнокод нужно сделать (де)сериализатор для чтения/записи. Заодно и упаковать можно плотнее. - fk0(05.05.2015 11:14)
- Сериализатор это классная штука, когда много RAM-ы и есть место под две копии в ROM(EEPROM/Flash). троечник(57 знак., 05.05.2015 12:00,
)
- Классический (де)сериализатор не допускает записи/чтения по произвольному адресу. А тут это, судя по всему, требуется. - AlexBi(05.05.2015 11:17)
- Если прекратить мыслить в терминах битов и байтов, то и задачи такой, чтения по произвольному _адресу_, не встанет. А запись у него не по произвольному адресу, а скорей строго по кольцу. Для рандомного доступа можно пробежаться один раз по всему fk0(379 знак., 05.05.2015 11:23)
- Задача чтения или записи любого блока данных (раз термин "адрес" не нравится) возникает часто. Построение индекса - метод интересный, но зачем нагружать этим свою программу в рантайме, если все адреса известны еще на этапе компиляции? Кроме того, AlexBi(305 знак., 05.05.2015 11:49)
- Спор бесполезен. Ты дальше байтов, контроллеров, страниц... не видишь ничего. Об чём тогда говорить? В терминах байтов, битов и страниц задача топикстартера не решается, нужно иметь несколько более широкий кругозор. fk0(164 знак., 05.05.2015 11:57)
- Задача чтения или записи любого блока данных (раз термин "адрес" не нравится) возникает часто. Построение индекса - метод интересный, но зачем нагружать этим свою программу в рантайме, если все адреса известны еще на этапе компиляции? Кроме того, AlexBi(305 знак., 05.05.2015 11:49)
- ТС написал, зачем "требуется". Звучит как некая никому на самом деле не нужная дебильная микрооптимизация. - SciFi(05.05.2015 11:22)
- Да так и есть, поэтому один из вариантов - убрать дыры из-за привязки к страницам и переписать копирование. - VL(05.05.2015 12:14,
)
- ТС глубоко погряз в искусственных дебрях собственного невежества и борется с какими-то проблемами присутствующими только в той виртуальной реальности, в которой он погряз. Нужно иметь кругозор чуть шире микроконтроллера, посмотреть как это fk0(129 знак., 05.05.2015 11:28)
- Да так и есть, поэтому один из вариантов - убрать дыры из-за привязки к страницам и переписать копирование. - VL(05.05.2015 12:14,
- Если прекратить мыслить в терминах битов и байтов, то и задачи такой, чтения по произвольному _адресу_, не встанет. А запись у него не по произвольному адресу, а скорей строго по кольцу. Для рандомного доступа можно пробежаться один раз по всему fk0(379 знак., 05.05.2015 11:23)
- Сериализатор это классная штука, когда много RAM-ы и есть место под две копии в ROM(EEPROM/Flash). троечник(57 знак., 05.05.2015 12:00,
- Проблема решается оч. просто: "assert_static(FIELD_6_ADDR == 0x0300);" - SciFi(05.05.2015 09:59)
- спасибо, тут у меня провалы в знаниях, буду изучать - VL(05.05.2015 10:57,
)
- спасибо, тут у меня провалы в знаниях, буду изучать - VL(05.05.2015 10:57,
- Пните меня в нужную сторону посчитать про эти макросы? Лучше со ссылками, но буду рад и "на пальцах". - Dingo(05.05.2015 08:57)
- g offsetof macro in C , g x-macros - VL(05.05.2015 09:50,
)
- g offsetof macro in C , g x-macros - VL(05.05.2015 09:50,
- А если такое поле одно, то нельзя переписать дифайны относительно этого жесткого поля например define field6 0x300. define field5=((field6- size5)&sizeEPROM) и т.д. до поля0. Причем дифайны можно писать в обычном порядке, не от 6 до 0. Компилятор Олдфаг(36 знак., 05.05.2015 08:48,
)
- тут тоже завязки, соответственно, несвобода. - VL(05.05.2015 11:01,
)
- тут тоже завязки, соответственно, несвобода. - VL(05.05.2015 11:01,
- Для выравнивания можно творчески применить неименованные union и struct vmp(234 знак., 05.05.2015 08:18)
- ага, интересная мысль, только ИАР потихоньку избавляется от неименованных юнионов - VL(05.05.2015 10:59,
)
- Хмм... В стандарт C11 вошли неименованные юниты и структуры (§6.7.2.1/13). Так что ИАР должен их поддерживать. vmp(96 знак., 05.05.2015 12:03, ссылка, ссылка)
- ага, интересная мысль, только ИАР потихоньку избавляется от неименованных юнионов - VL(05.05.2015 10:59,
- Распределить через структуру, а потом задефайнить смещения для совместимости. vmp(177 знак., 05.05.2015 08:08)
- align + sizeof + offset ? - MBedder(05.05.2015 07:57)
- Логично, стандартные методы и должны работать, только под страницы EEPROM никто не рассчитывал. Размер страницы 256, pragma pack работает до 128, а pragma data_alignment не уверен, что применима к полям внутри структуры, и диапазон тоже непонятен. - VL(05.05.2015 11:09,
)
- align - ни разу не стандартный метод. - SciFi(05.05.2015 11:16)
- Логично, стандартные методы и должны работать, только под страницы EEPROM никто не рассчитывал. Размер страницы 256, pragma pack работает до 128, а pragma data_alignment не уверен, что применима к полям внутри структуры, и диапазон тоже непонятен. - VL(05.05.2015 11:09,
- Описать структуру и закастить адрес? - Vit(05.05.2015 07:16)