реклама на сайте
подробности

 
 
> STM32F7XX аналог bit-banding
amiller
сообщение Dec 26 2016, 10:11
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



В последние годы пришлось достаточно много писать для STM32F1XX и STM32F4XX.
Везде активно пользовался механизмом bit-banding для доступа к битовым переменным.
Сейчас заказал отладку с STM32F746ZG.
Читаю документацию и вижу, что там никаких упоминаний про bit-banding при работе с оперативной памятью...
Ткните носом, что на замену? Может появились неделимые операции "чтение-модификация-запись"?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Dec 27 2016, 19:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



На AVR это делал. А теперь вообще так не делаю. Как правило этих флагов ну пусть 30 ... Если каждый поместить в 4-ёх байтное слово будет потрачено 120 байт. Это что критично для M7?
Вообще подходы к написанию поменял. Стараюсь флаги выставлять в одной задаче - забирать в другой... Короче стараюсь писать так, чтобы не возникало проблем. И задачи делаю строго асинхронные.
Выделяю задачу одну, следящего типа... Она диагностирует...
Несколько сложнее работать с общими ресурсами. Например флэш память. Записываются сообщения об ошибках с любой задачи. Можно делать конечно её обслуживание лишь в одной задаче, а туда слать лишь сообщения...
Короче лучше всего поменять подходы к самому программированию. Когда нужно выбрать или производительность или стабильность работы, то думаю, стабильность важнее. А производительность всегда можно повысить выбрав другой камень. Сейчас с этим нет вопросов.
Ну это мой взгляд на вещи.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 27 2016, 22:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(SasaVitebsk @ Dec 27 2016, 22:39) *
На AVR это делал. А теперь вообще так не делаю. Как правило этих флагов ну пусть 30 ... Если каждый поместить в 4-ёх байтное слово будет потрачено 120 байт. Это что критично для M7?

Я думаю цель - не экономия памяти, а реализация механизма, когда доступ к объекту возможен как по частям (по битам) так и целиком (словом) из разных задач/ISR. В нескольких разных местах флаги ставятся (клиентами), а в одном месте - считываются-обнуляются другой задачей целиком всё слово.

Цитата(SasaVitebsk @ Dec 27 2016, 22:39) *
Вообще подходы к написанию поменял. Стараюсь флаги выставлять в одной задаче - забирать в другой... Короче стараюсь писать так, чтобы не возникало проблем. И задачи делаю строго асинхронные.

Ну да, если бы всегда так можно было бы, то семафоров разных не придумывали бы.
Представьте случай:
Есть задача (сервер), выполняющая запросы нескольких других задач-клиентов. Соответственно она может быть занята. Клиенты когда хотят пнуть задачу, ставят её флажок, который она обработает или сразу или как только освободится.
Я вот так часто реализую блокирующий или неблокирующий доступ к ресурсам, когда есть одна задача, обслуживающая общий ресурс и осуществляющая приоритетный арбитраж доступа клиентов к ресурсу и много клиентов.
Клиенты ставят флажки-биты в переменной запросов (опционально переходя в ожидание обслуживания) и пингуют задачу-сервер, пробуждая её. Задача, как только получает управление или освобождается от обработки предыдущего запроса, считывает сразу всю переменную флагов-запросов, в соответствии со своими правилами выбирает наиболее приоритетный запрос из имеющихся, сбрасывает этот флаг запроса, обрабатывает запрос.
Вот здесь нужен доступ к флагам-запросам как по отдельности и атомарно, так и сразу ко всем.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amiller   STM32F7XX аналог bit-banding   Dec 26 2016, 10:11
- - jcxz   Цитата(amiller @ Dec 26 2016, 13:11) Чита...   Dec 26 2016, 21:34
|- - amiller   Цитата(jcxz @ Dec 27 2016, 01:34) Механиз...   Dec 27 2016, 03:05
|- - jcxz   Цитата(amiller @ Dec 27 2016, 06:05) Это ...   Dec 27 2016, 09:45
||- - amiller   Цитата(jcxz @ Dec 27 2016, 13:45) Вы дума...   Dec 27 2016, 12:57
||- - zltigo   Цитата(amiller @ Dec 27 2016, 14:57) Есть...   Dec 27 2016, 13:25
|||- - amiller   Цитата(zltigo @ Dec 27 2016, 17:25) При э...   Dec 27 2016, 14:06
||- - jcxz   Цитата(amiller @ Dec 27 2016, 15:57) Позв...   Dec 27 2016, 14:58
||- - amiller   Цитата(jcxz @ Dec 27 2016, 18:58) Блин......   Dec 28 2016, 03:15
|- - zltigo   Цитата(amiller @ Dec 27 2016, 05:05) А в ...   Dec 27 2016, 12:45
- - SSerge   Идея bit-banding в том, что он делается не процесс...   Dec 27 2016, 07:19
|- - SasaVitebsk   Цитата(SSerge @ Dec 27 2016, 10:19) Ну и ...   Dec 27 2016, 11:56
|- - _Pasha   Цитата(SasaVitebsk @ Dec 27 2016, 14:56) ...   Dec 27 2016, 12:37
- - AVI-crak   Цитата(amiller @ Dec 26 2016, 16:11) Чита...   Dec 28 2016, 02:11
|- - jcxz   Цитата(AVI-crak @ Dec 28 2016, 05:11...   Dec 28 2016, 10:48
|- - AVI-crak   Цитата(jcxz @ Dec 28 2016, 16:48) А зачем...   Dec 28 2016, 16:02
|- - jcxz   Цитата(AVI-crak @ Dec 28 2016, 19:02...   Dec 29 2016, 12:23
||- - zltigo   Цитата(jcxz @ Dec 29 2016, 14:23) Странно...   Dec 29 2016, 12:30
||- - jcxz   Цитата(zltigo @ Dec 29 2016, 15:30) Мне н...   Dec 29 2016, 13:10
|||- - zltigo   Цитата(jcxz @ Dec 29 2016, 15:10) Так что...   Dec 29 2016, 13:31
||- - AVI-crak   Цитата(zltigo @ Dec 29 2016, 18:30) Мне н...   Dec 29 2016, 18:17
||- - zltigo   Цитата(AVI-crak @ Dec 29 2016, 20:17...   Dec 29 2016, 20:52
||- - jcxz   Цитата(zltigo @ Dec 29 2016, 23:52) Нет, ...   Dec 30 2016, 08:23
||- - zltigo   Цитата(jcxz @ Dec 30 2016, 10:23) Костыли...   Dec 30 2016, 08:51
||- - jcxz   Цитата(zltigo @ Dec 30 2016, 11:51) То, ч...   Dec 30 2016, 13:03
||- - zltigo   Цитата(jcxz @ Dec 30 2016, 15:03) Может п...   Dec 30 2016, 13:50
||- - klen   интересненько почитал... а то как то вяло на элект...   Dec 30 2016, 15:24
||- - zltigo   Цитата(klen @ Dec 30 2016, 17:24) по суще...   Dec 30 2016, 15:58
||- - AVI-crak   Цитата(zltigo @ Dec 30 2016, 21:58) Вот з...   Dec 30 2016, 18:51
||- - zltigo   Цитата(AVI-crak @ Dec 30 2016, 20:51...   Dec 30 2016, 20:52
||- - jcxz   Цитата(AVI-crak @ Dec 30 2016, 21:51...   Dec 31 2016, 11:23
|- - KnightIgor   Цитата(AVI-crak @ Dec 28 2016, 18:02...   Jan 9 2017, 13:23
|- - zltigo   Цитата(KnightIgor @ Jan 9 2017, 15:23) В ...   Jan 9 2017, 13:34
||- - KnightIgor   Цитата(zltigo @ Jan 9 2017, 15:34) И каки...   Jan 9 2017, 14:46
||- - scifi   Цитата(KnightIgor @ Jan 9 2017, 17:46) Но...   Jan 9 2017, 14:56
||- - jcxz   Цитата(KnightIgor @ Jan 9 2017, 17:46) Кс...   Jan 9 2017, 16:05
|- - scifi   Цитата(KnightIgor @ Jan 9 2017, 16:23) Я ...   Jan 9 2017, 13:47
- - Сергей Борщ   Лично я использовал bit-band для доступа к отдельн...   Dec 28 2016, 11:25
|- - jcxz   Цитата(Сергей Борщ @ Dec 28 2016, 14:25) ...   Dec 28 2016, 12:05
- - Obam   "The code designed for other Cortex®-M proces...   Jan 9 2017, 09:50
- - amiller   В процессе переезда с bit-banding сделал несколько...   Jan 9 2017, 10:52
- - scifi   Цитата(amiller @ Jan 9 2017, 13:52) В про...   Jan 9 2017, 11:38
- - zltigo   Цитата(amiller @ Jan 9 2017, 12:52) В про...   Jan 9 2017, 12:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 20:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016