|
реализация булевых переменных в bit-band, кто до чего дошел |
|
|
|
Oct 16 2015, 07:00
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Привет Вижу для родного gcc - самое правильное Код typedef uint32_t __attribute__((section(".bitmap"))) bit; Какбы вопросы, возникающие в связи с этим: 1. Как избежать использование области памяти в не bit-band в линкер скрипте? 2. Как наоборот, - проще получить параметры этой области или ее части для быстрого обнуления? Спасибо. ps вот увидел такое http://stackoverflow.com/questions/1655271...ection-in-c-gccКод /** * Assuming you've tagged some stuff earlier with: * __attribute((__section__("my_custom_section"))) */
struct thing *iter = &__start_my_custom_section;
for (; iter < &__stop_my_custom_section; ++iter) { /* do something with *iter */ } т.е. получается, что я могу выделить под битмап что-то и его размер будет Код extern char bitmap[((uint) __stop_my_custom_section - __start_my_custom_section)/32]; а как мне на этапе компиляции назначить адрес этой области?
Сообщение отредактировал _Pasha - Oct 16 2015, 07:12
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Oct 21 2015, 08:36
|

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

|
QUOTE (Golikov A. @ Oct 21 2015, 11:20)  пробил дефайнами нужные биты и сиди ими щелкай, чего я не учитываю? 1) Атомарности операции. 2) Затрат времени исполение дополнительной кучи команд. Учитесь думать самостоятельно.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Oct 21 2015, 08:41
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Golikov A. @ Oct 21 2015, 11:33)  ПЛАКАТЬ ХОЧЕТСЯ  ... нафига памяти то выделятся? Вы же когда в периферию обращаетесь вы же не делаете выделения памяти, а запись в регистры идет тоже просто по адресам, зачем тут чего то выделять? Товарищ не понимааает (с) Если у Вас есть возможность заводить static bool в разных модулях, то это гораздо интереснее чем вручную и глобально их определять. Насчет BSRR - история давняя, типа масляного масла получается, неудивительно что там конфликты возникают.
|
|
|
|
|
Oct 21 2015, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Если у Вас есть возможность заводить static bool в разных модулях Ну то есть я правильно понял, это просто для создания переменных через которые писать аля удобнее, чем через прямой указатель... Цитата Слезами делу не поможешь. Так что наморщите ум и подумайте. Цитата Учитесь думать самостоятельно. Есть подозрения среднеуважаемый zltigo что вы испытываете некие комплексы, связанные с вашим уровнем интеллекта, и потому по поводу и без пытаетесь словами всем объяснить что вы умнее%).... Однако как показала практика с понималкой у вас не очень, потому я вам разжую: я предлагал дефайном пробить область в битбанде, чтобы как бы непонятному адресу поставить в соответствие понятное название бита, и задефайнить прямо макрос, чтобы писать по его имени прямо в эту область. Как делают с регистрами периферии. Теперь поняли?
|
|
|
|
|
Oct 21 2015, 09:47
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(AVI-crak @ Oct 16 2015, 19:05)  Код typedef uint32_t __attribute__((section(".bitmap"))) bit; Вы уверенны что смена названия типа переменной лучше макроса? У меня GCC матерится на смену типа. Здравствуйте. Еще не добрался до проекта. Но обязательно проверю и сообщу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|