Size: a a a

🎄Embedded Group

2021 January 22

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Помня эти правила - проблем не будет
источник

LZ

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

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

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

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

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

Struct {
uint8
uint8
uint8
uint16
uint8
uint32
}

Упакованная структура на некоторых компиляторах может и к падению привести в хардфолт
Но чаще компиляторы обходят это, просто генерацией доступа побайтно
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
почитал, это все понятно, как раз ХАРД на M0 ловил при разъадресации, - просто перенеся код с М3 в М0
источник

ВЯ

Василий Ярошенко... in 🎄Embedded Group
а на М3 работало все хорошо, поэтому и растроился
источник

ВЯ

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

MS

Max Sysoev in 🎄Embedded Group
Сиие Сууие
немного бытовых вопросов, последнее время у СТМов никто не ресетил пароль? а то у меня чет письмо не приходит, печаль-беда прям
По чатам люди как раз жалуются, что пароль не приходит
источник

A

Alexander in 🎄Embedded Group
Использование bitfields в сях стандартом не нормируется.
Поэтому компиляторы это реализуют как хотят.
Без лишней необходимости лучше их не юзать и обходиться масками.
источник

LZ

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

P

Ponytale 🇷🇺 in 🎄Embedded Group
*зевнул* скучна
источник

Г

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

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Как правильно сказал @sadkobogatiygost , все зависит от компилятора и процессора. В некоторых случаях есть в системе команд некотырых процессов команды для работы с битовыми полями. Другие реализуют это через сдвиг

В целом, примерно одинаково
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
это че за команды такие?
источник

AK

Andrew K in 🎄Embedded Group
да вот в кортексах как раз есть
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Ponytale 🇷🇺
это че за команды такие?
источник

A

Alexander in 🎄Embedded Group
Andrew K
да вот в кортексах как раз есть
Ты про bitbanding?
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Например
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
да мне попиздеть...
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Alexander
Ты про bitbanding?
Нет, то немножко другое. Магия которая позволяет атомарно ножки теребонькать
источник

A

Alexander in 🎄Embedded Group
Leonid Zaliubovskii
Нет, то немножко другое. Магия которая позволяет атомарно ножки теребонькать
Ааа...
Ну технически состояние ножек битиками в регистре управляется.
А еще можно флажки атомарно дергать.
источник

LZ

Leonid Zaliubovskii in 🎄Embedded Group
Alexander
Ааа...
Ну технически состояние ножек битиками в регистре управляется.
А еще можно флажки атомарно дергать.
Ну да. Это все memory mapped peripheral
источник