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

 
 
> реализация булевых переменных в bit-band, кто до чего дошел
_Pasha
сообщение Oct 16 2015, 07:00
Сообщение #1


;
******

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Oct 21 2015, 10:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Погодите-погодите... а зачем регион бит-банда включен в общую оперативную память? А если он не включен, то как линкер там может разместить какие-то переменные? Чего то я реально не понимаю, вот с сайта арма

Код
#define BITBAND_SRAM_REF 0x20000000
#define BITBAND_SRAM_BASE 0x22000000
#define BITBAND_SRAM(a,b) ((BITBAND_SRAM_BASE + (a-BITBAND_SRAM_REF)*32 \    + (b*4))) // Convert SRAM address

#define BITBAND_PERI_REF 0x40000000
#define BITBAND_PERI_BASE 0x42000000
#define BITBAND_PERI(a,b) ((BITBAND_PERI_BASE + (a-BITBAND_PERI_REF)*32 \    + (b*4))) // Convert PERI address

#define MAILBOX 0x20004000
#define TIMER 0x40004000// Mailbox bit 0
#define MBX_B0 *((volatile unsigned int *)(BITBAND_SRAM(MAILBOX,0)))// Mailbox bit 7
#define MBX_B7 *((volatile unsigned int *)(BITBAND_SRAM(MAILBOX,7)))// Timer bit 0
#define TIMER_B0 *((volatile unsigned char *)(BITBAND_PERI(TIMER,0)))// Timer bit 7
#define TIMER_B7 *((volatile unsigned char *)(BITBAND_PERI(TIMER,7)))
int main(void){    unsigned int temp = 0;
    MBX_B0 = 1; // Word write    
    temp = MBX_B7; // Word read  
    TIMER_B0 = temp; // Byte write    
    return TIMER_B7; // Byte read
}


Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 21 2015, 12:58
Сообщение #3


Гуру
******

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



QUOTE (Golikov A. @ Oct 21 2015, 13:50) *
Погодите-погодите... а зачем регион бит-банда включен в общую оперативную память? А если он не включен, то как линкер там может разместить какие-то переменные? Чего то я реально не понимаю, вот с сайта арма

CODE
#define MAILBOX 0x20004000

Теперь включаем наконец мозг, пробуем читать написанное и думаем что-же за адрес такой "0x20004000" и с чего-бы это вдруг линкеру не разместить там все, что угодно на свое усмотрение? Заодно следует подумать c какого бодуна вывалили такой дивного уродства пример работы с исключительно фиксированным адресом sad.gif.
Для демонстрации работы могли-бы хоть что-то такое накропать:
CODE
unsigned int mailbox;

#define BITBAND_SRAM_REF  (0x20000000)
#define BITBAND_SRAM_BASE (0x22000000)
#define MBX( bit )                                                                              \
    *(unsigned int *)( (BITBAND_SRAM_BASE) + ( (unsigned int)&mailbox - (BITBAND_SRAM_REF) ) * 32 + ((bit) * 4) )

MBX(0) = TRUE;


Ну а за такие комментарии:
CODE
#define MBX_B0 *((volatile unsigned int *)(BITBAND_SRAM(MAILBOX,0)))// Mailbox bit 7
....
MBX_B0 = 1; // Word write

говнокодерам сляпавшим сей "пример" отдельное спасибо sm.gif sm.gif sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Pasha   реализация булевых переменных в bit-band   Oct 16 2015, 07:00
- - AVI-crak   Цитата(_Pasha @ Oct 16 2015, 14:00) а как...   Oct 16 2015, 08:28
|- - jcxz   Например так (IAR): распредление памяти: u8 noSlee...   Oct 16 2015, 08:50
- - _Pasha   гран мерси. т.е. суть приема в том, что назначаем ...   Oct 16 2015, 08:59
- - AVI-crak   Кодtypedef uint32_t __attribute__((section...   Oct 16 2015, 16:05
|- - _Pasha   Цитата(AVI-crak @ Oct 16 2015, 19:05...   Oct 21 2015, 09:47
|- - _Pasha   Цитата(_Pasha @ Oct 21 2015, 12:47) Еще н...   Oct 21 2015, 12:03
- - copov   Можно обычным дифайном обойтись. Например у меня в...   Oct 19 2015, 09:05
|- - jcxz   Цитата(copov @ Oct 19 2015, 15:05) Можно ...   Oct 19 2015, 09:31
- - Golikov A.   а зачем память выделять, разве это не зарезирвиров...   Oct 19 2015, 18:53
|- - jcxz   Цитата(Golikov A. @ Oct 20 2015, 00:53) а...   Oct 21 2015, 05:23
|- - copov   Цитата(jcxz @ Oct 21 2015, 08:23) Это обы...   Oct 21 2015, 07:50
|- - jcxz   Цитата(copov @ Oct 21 2015, 13:50) По нас...   Oct 21 2015, 10:06
|- - zltigo   QUOTE (jcxz @ Oct 21 2015, 13:06) Вот что...   Oct 21 2015, 10:12
|- - jcxz   Цитата(zltigo @ Oct 21 2015, 16:12) Увы, ...   Oct 21 2015, 10:16
- - Golikov A.   это типа чтобы через удобные переменные работать ч...   Oct 21 2015, 05:25
|- - jcxz   Цитата(Golikov A. @ Oct 21 2015, 11:25) э...   Oct 21 2015, 06:59
- - scifi   Какой ужас. Зачем идти на все эти извращения? Чтоб...   Oct 21 2015, 07:30
|- - _Pasha   Цитата(scifi @ Oct 21 2015, 10:30) Какой ...   Oct 21 2015, 07:59
||- - scifi   Цитата(_Pasha @ Oct 21 2015, 10:59) прави...   Oct 21 2015, 08:04
|- - zltigo   QUOTE (scifi @ Oct 21 2015, 10:30) Какой ...   Oct 21 2015, 08:31
- - Golikov A.   ЦитатаБлин! прочитайте про bit-banding. чего ч...   Oct 21 2015, 08:20
|- - scifi   Цитата(Golikov A. @ Oct 21 2015, 11:20) п...   Oct 21 2015, 08:23
|- - zltigo   QUOTE (Golikov A. @ Oct 21 2015, 11:20) п...   Oct 21 2015, 08:36
|- - jcxz   Цитата(Golikov A. @ Oct 21 2015, 14:20) ч...   Oct 21 2015, 10:11
- - Golikov A.   ПЛАКАТЬ ХОЧЕТСЯ... нафига памяти то выделятся? Вы ...   Oct 21 2015, 08:33
|- - _Pasha   Цитата(Golikov A. @ Oct 21 2015, 11:33) П...   Oct 21 2015, 08:41
|- - zltigo   QUOTE (Golikov A. @ Oct 21 2015, 11:33) П...   Oct 21 2015, 08:43
- - scifi   Опять 25 Пришёл хамоватый тролль zltigo, а Голик...   Oct 21 2015, 08:47
|- - _Pasha   Цитата(scifi @ Oct 21 2015, 11:47) достат...   Oct 21 2015, 09:02
- - Golikov A.   ЦитатаЕсли у Вас есть возможность заводить static ...   Oct 21 2015, 09:05
|- - zltigo   QUOTE (Golikov A. @ Oct 21 2015, 12:05) Т...   Oct 21 2015, 09:24
- - Golikov A.   Эта область плавающая? то есть в одном контроллер...   Oct 21 2015, 09:30
|- - AVI-crak   И всё-же прочитайте доку на Bit-band. Для работы...   Oct 21 2015, 09:57
|- - AHTOXA   Цитата(Golikov A. @ Oct 21 2015, 14:30) т...   Oct 21 2015, 10:02
|- - zltigo   QUOTE (Golikov A. @ Oct 21 2015, 12:30) Э...   Oct 21 2015, 10:09
- - scifi   Цитата(zltigo @ Oct 21 2015, 13:12) Увы, ...   Oct 21 2015, 10:20
|- - jcxz   Цитата(Golikov A. @ Oct 21 2015, 16:50) П...   Oct 21 2015, 12:05
- - Golikov A.   Цитата(назовём его регион_A), что для каждого его ...   Oct 21 2015, 13:09
|- - zltigo   QUOTE (Golikov A. @ Oct 21 2015, 16:09) П...   Oct 21 2015, 13:11
- - IgorKossak   Golikov A. отправлен в read only за плохое поведен...   Oct 21 2015, 18:23
- - copov   Область bit-band и так лежит вне области ОЗУ для д...   Oct 22 2015, 07:05
|- - DmitryM   Цитата(copov @ Oct 22 2015, 10:05) Област...   Oct 22 2015, 08:11
|- - zltigo   QUOTE (copov @ Oct 22 2015, 10:05) Област...   Oct 22 2015, 09:00
|- - jcxz   Цитата(copov @ Oct 22 2015, 13:05) Област...   Oct 22 2015, 11:47
- - copov   А чего читать. Bit-band для обращения по битам в ...   Oct 22 2015, 08:33
|- - Сергей Борщ   Цитата(copov @ Oct 22 2015, 11:33) Зарезе...   Oct 22 2015, 08:47
|- - copov   Цитата(Сергей Борщ @ Oct 22 2015, 11:47) ...   Oct 22 2015, 10:59
|- - Сергей Борщ   Цитата(copov @ Oct 22 2015, 13:59) Нельзя...   Oct 22 2015, 11:18
|- - copov   Цитата(Сергей Борщ @ Oct 22 2015, 14:18) ...   Oct 22 2015, 13:32
- - _Pasha   они еще и читать не умеют   Oct 22 2015, 08:36


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

 


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


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