Size: a a a

🎄Embedded Group

2021 January 22

ВЯ

Василий Ярошенко... in 🎄Embedded Group
Leonid Zaliubovskii
Ну и ты можешь менять значение соразмерно длиннее битового поля. т.е. при длинне 1 - допустимые значения 0 или 1, пр идлинне 3 - допустимо 0..7
та это так - что бы поленивому биты включать, но если косяки будут с выравниванием то выкину
источник

Х

Х in 🎄Embedded Group
Сиие Сууие
Запросил, молчат, может они вручную отправляют, ладно буду ждат
У меня некоторое время назад st.com не пускал по паролю и писал ошибку при регистрации новой учётки. Через пару дней починилось.
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Василий Ярошенко
та это так - что бы поленивому биты включать, но если косяки будут с выравниванием то выкину
А для этого почитай как данные выравниваются в структурах и о __packed и pragma packed  почитай. Как и о упаковке структур.

Обычно их используют
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
Leonid Zaliubovskii
А для этого почитай как данные выравниваются в структурах и о __packed и pragma packed  почитай. Как и о упаковке структур.

Обычно их используют
прагма - включена
#pragma pack(1)
источник

SK

Stas Koynov in 🎄Embedded Group
Василий Ярошенко
та это так - что бы поленивому биты включать, но если косяки будут с выравниванием то выкину
для биг\литл нужно через ифдев писать две реализации. для выравнивания ставят пустые поля. либо :0 вроде для выравнивания на следующий байт.
но лучше если ++ сделать через методы. если Си, ну... вы устаните писать структуры так для большого кол-ва регистров
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
блин, сколько подводных камней, ...может ну его это обьединение, где то еще вылезет боком
источник

AK

Andrew K in 🎄Embedded Group
Василий Ярошенко
прагма - включена
#pragma pack(1)
у тебя же f0? с упаковкой структур можно словить хард фаултов, аккуратнее
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
F103 )))
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Василий Ярошенко
блин, сколько подводных камней, ...может ну его это обьединение, где то еще вылезет боком
Вполне нормальная практика. Если с умом делать и понимать что ты делаешь. Порой очень удобно
источник

SK

Stas Koynov in 🎄Embedded Group
Andrew K
у тебя же f0? с упаковкой структур можно словить хард фаултов, аккуратнее
при наличии прагмы или атрибута упаковки, компилятор будет понимать, как с этим работать. а вот если сам руками полезишь тогда упс
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
а в F0 - да - уже ловил hard faul при кривом обращении - растроился.....
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Stas Koynov
для биг\литл нужно через ифдев писать две реализации. для выравнивания ставят пустые поля. либо :0 вроде для выравнивания на следующий байт.
но лучше если ++ сделать через методы. если Си, ну... вы устаните писать структуры так для большого кол-ва регистров
Ну не всё так страшно прямо. Но да, это дело платформо-зависимо
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Василий Ярошенко
а в F0 - да - уже ловил hard faul при кривом обращении - растроился.....
Ну главное чтобы не было не выравненного  доступа, т.е. структура должна начинаться с адреса кратного 4, остальное - забота компилятора
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
ок, всем спасибо за подсказки - посмотрю еще ASM как оно там обращается с ним, может надежней будет просто маски
источник

SK

Stas Koynov in 🎄Embedded Group
Василий Ярошенко
ок, всем спасибо за подсказки - посмотрю еще ASM как оно там обращается с ним, может надежней будет просто маски
все там будет норм, если норм гцц а не вский кал или иар
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Хардфолт в первую очередь касается программы по не выровненным адресам.

Доступ к данным, потек выровненным адресам даст только промадку производительности
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
как раз IAR и пока вроде все норм
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Unaligned accesses - CMSDK Example Cortex M0 - Cortex-M / M-Profile forum - Processors - Arm Community
https://community.arm.com/developer/ip-products/processors/f/cortex-m-forum/44317/unaligned-accesses---cmsdk-example-cortex-m0
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Почитай тему
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Соответственно, если используешь packed - обычно компилятор сам генерирует правильную команду для доступа к памяти. Важно помнить следующее:

Побайтный доступ - всегда выровнен. Но считывает не более байта

Доступ к полуслову - должен быть выровнен на 2, вычитывает uint16_t

Доступ по слову - выровнен на 4 должен быть, считывает. uint32_t

Сдуру можно создать такие условия:

Struct {
uint8
uint8
uint8
uint16
uint8
uint32
}

Упакованная структура на некоторых компиляторах может и к падению привести в хардфолт
источник