-
- AT91SAM7X в дата аборт валится. Не всегда, иногда. В зависимости от того, понял ли меня GCC или нет. 100% валится если не выравненному по границе слова указателю на байтовый массив сделать приведение типа к структуре. - Сидоргек(19.10.2016 14:46 - 14:50)
- Какой процессор? Какая разрядность поля ? Ale3000(403 знак., 19.10.2016 11:43)
- ARM, поля разные, есть и короткие (байт) и длинные массивы. - VL(19.10.2016 11:59, )
- типа так VL(379 знак., 19.10.2016 11:41, )
- Значит, так: SciFi(318 знак., 19.10.2016 11:51)
- Будет хардфолт или не будет? - VL(19.10.2016 12:13, )
- Не будет. Ale3000(267 знак., 19.10.2016 12:19)
- Cortex-M0: "Any attempt to perform an unaligned memory access operation results in a HardFault exception" - SciFi(19.10.2016 12:24, ссылка)
- Может и так. Я только с ARM7 работал. Там никаких хардфолтов в такой ситации не случалось. - Ale3000(19.10.2016 12:29)
- ARM7TDMI? Там нет такой штуки, как HardFault. Есть ещё ARMv7, вот там есть и HardFault, и всё остальное :-) - SciFi(19.10.2016 12:30)
- Там будет DataAbort или кривые данные. - LightElf(19.10.2016 12:42)
- ARM7TDMI? Там нет такой штуки, как HardFault. Есть ещё ARMv7, вот там есть и HardFault, и всё остальное :-) - SciFi(19.10.2016 12:30)
- Может и так. Я только с ARM7 работал. Там никаких хардфолтов в такой ситации не случалось. - Ale3000(19.10.2016 12:29)
- Cortex-M0: "Any attempt to perform an unaligned memory access operation results in a HardFault exception" - SciFi(19.10.2016 12:24, ссылка)
- Проверьте и отпишитесь :-) Будет-будет. Можете в дизассемблер заглянуть. Кстати, в EEPROM совсем напряжёнка с местом? Может, паковать ручками, то есть располагать поля так, чтобы минимизировать заполнение для выравнивания? - SciFi(19.10.2016 12:17)
- Не будет. Ale3000(267 знак., 19.10.2016 12:19)
- Если tY_SETTING - это char, то предупреждения не должно быть, если long, то должно быть. - Ale3000(19.10.2016 11:57)
- Будет хардфолт или не будет? - VL(19.10.2016 12:13, )
- Что такое tX_SETTING, tY_SETTING ? Какой процессор ? - Ale3000(19.10.2016 11:45)
- По идее правильный компилятор при pack(1) должен собирать переменные побайтно если не может адресовать со смещением. Так что вопрос не в проце а в компиляторе. - ASDFS(19.10.2016 11:51)
- Не в компиляторе, а в стандарте языка C, в котором нет типа unaligned int *. Пока int является частью структуры, компилятор при необходимости будет разбирать-собирать побайтно, а как только мы пытаемся его адрес присвоить указателю - опаньки. - йцукен(19.10.2016 15:04, )
- Ага, должен. Если ему об этом сказать. "Кабы схемку аль чертеж"... А если "по щучьему велению", то может и не получиться :-) - SciFi(19.10.2016 12:14)
- Если pack(1), то да, собирает побайтово. Ale3000(174 знак., 19.10.2016 12:02)
- АРМ он разный. Кортекс, как я понимаю, умеет адресовать с байтовым смещением. - ASDFS(19.10.2016 13:32)
- По идее правильный компилятор при pack(1) должен собирать переменные побайтно если не может адресовать со смещением. Так что вопрос не в проце а в компиляторе. - ASDFS(19.10.2016 11:51)
- Значит, так: SciFi(318 знак., 19.10.2016 11:51)
- Код - в студию! - SciFi(19.10.2016 11:23)