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

 
 
 
Reply to this topicStart new topic
> Битовые операции Cortex-M3
misyachniy
сообщение Apr 26 2010, 08:20
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 716
Регистрация: 27-05-05
Из: Kyiv
Пользователь №: 5 454



Почитал что Cortex-M3 поддерживает битовые операции с памятью.
Пробовал ли кто их применять?
Какие версии компиляторов их поддерживают?
Как сказывается на быстродействии?

Одним словом - применять ли их?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 26 2010, 08:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(misyachniy @ Apr 26 2010, 10:20) *
Одним словом - применять ли их?

Вы это чего спросили? Как Вы себе представляете применять или не применять по отношению к компилятору?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 26 2010, 11:07
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(misyachniy @ Apr 26 2010, 12:20) *
Почитал что Cortex-M3 поддерживает битовые операции с памятью.
Одним словом - применять ли их?

Эти опреации работают. Но есть один маленький ньюанс - т.к. биты отмаплены на память, а явной поддержки компилятора нет то:
1. Макрос - через адрес перменной и номер бита вычислить адрес памяти и ...
2. Переменная по фиксированному адресу => адреса бит тоже будут фиксированны.

В 1 случае большой оверхед, можно использовать только если нужна атомарная опреация.
Go to the top of the page
 
+Quote Post
vallav
сообщение Apr 26 2010, 16:15
Сообщение #4


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

Группа: Участник
Сообщений: 197
Регистрация: 8-04-05
Пользователь №: 3 977



Цитата(KRS @ Apr 26 2010, 15:07) *
Эти опреации работают. Но есть один маленький ньюанс - т.к. биты отмаплены на память, а явной поддержки компилятора нет то:
1. Макрос - через адрес перменной и номер бита вычислить адрес памяти и ...
2. Переменная по фиксированному адресу => адреса бит тоже будут фиксированны.

В 1 случае большой оверхед, можно использовать только если нужна атомарная опреация.


Дык вроде два варианта эффективно использовать особенности данного ядра - или писать вставки на ассемблере или
использовать специализированное рассширение под данное ядро.
Трудно ожидать от стандартной реализации эффективного использования особенностей ядра...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Apr 26 2010, 17:15
Сообщение #5


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(KRS @ Apr 26 2010, 15:07) *
В 1 случае большой оверхед, можно использовать только если нужна атомарная опреация.

Если адрес статический то не будет никакого оверхеда.
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 26 2010, 20:25
Сообщение #6


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(sonycman @ Apr 26 2010, 21:15) *
Если адрес статический то не будет никакого оверхеда.

так собственно это я и написал
Цитата(KRS @ Apr 26 2010, 15:07) *
2. Переменная по фиксированному адресу => адреса бит тоже будут фиксированны.

только тут неудобство возникает с ручным расположением - объяснением линкеру и т.д.

а у LPC еще быстрая память вообще не мапится на биты.

при доступе к переферии битовые опреации вроде как не нужны.

В общем очень сомнительная ценность битового доступа - пока.
Go to the top of the page
 
+Quote Post
igorsk
сообщение Apr 26 2010, 21:11
Сообщение #7


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

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



У армовского компилятора есть поддержка: __attribute__((bitband)).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:48
Рейтинг@Mail.ru


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