Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 19:27:30

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 320, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 13:27:04 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 775
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4991
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А то, что лежит по этому адресу определяется типом данных. И тогда линковщик просто проверят, чтобы по этому адресу был именно тот тип данных? А если , условно говоря, все данные представляются нулями и единицами, то как потом программа понимает, что у нее именно действительные числа записаны, а не строка? Как он потом отличает эти нули и единицы?

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 13:35:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
VladislavS писал(а):
Особенно, если программист приложил усилия, чтобы компилятор видел больше.
так да, в конечном итоге от программиста все и зависит.

в общем, если LTO не использовать, ничего компилятор не видит, если ничегонеделающая функция находится в другом модуле. а с LTO не обманешь - проверил, правда, на avr-gcc.

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

Добавлено after 1 minute 52 seconds:
СКАЗОЧНИК писал(а):
И тогда линковщик просто проверят, чтобы по этому адресу был именно тот тип данных?
проверка типов это задача компилятора, линковщик тупо адреса подставляет
СКАЗОЧНИК писал(а):
как потом программа понимает, что у нее именно действительные числа записаны, а не строка?
как в программе вы написали, так эти нули и единицы и трактуются, это не компилятора вопрос, а программиста

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 14:05:53 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
в общем, если LTO не использовать, ничего компилятор не видит, если ничегонеделающая функция находится в другом модуле. а с LTO не обманешь - проверил, правда, на avr-gcc.

Помимо LTO есть еще Whole Program Optimization(-fwhole-program) которая делает примерно то же самое.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 14:38:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
в общем, если LTO не использовать, ничего компилятор не видит

А если для Вашей целевой архитектуры будет кодогенератор из LLVM, то там возникнет еще один этап оптимизации - уже на уровне IR кода после линковки. И без volatile он там такого накое может наоптимизячить, что действительно буфера в памяти не найдете )


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 14:53:51 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Reflector писал(а):
Помимо LTO есть еще Whole Program Optimization(-fwhole-program) которая делает примерно то же самое
когда-то я пытался сравнить эти варианты... в применении avr-gcc разных версий всегда получал один и тот же результат: не работала либо одна, либо другая оптимизация. не работала - в смысле компиляция выдавала какие-то ошибки.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 15:01:21 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 775
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4991
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я просто подумал, что проблема моя (может и многих) в понимании указателей (или тех же структур), в том, что нет понимания, как это происходит в железе... Т.е. что мы видим в программном коде - это одно. Это для удобства понимания сделано. А комп это как-то по своему обрабатывает.

Всегда раньше почему-то думал, что имя переменной тоже где-то хранится. :oops: :facepalm: Позже через некоторые ассемблерные (дизассемблерные) листинги стало понятно, что нет имен в программе. Если четко понимать связь того, что написано пером и преобразовано в компьютерный язык, то придет и понимание размещения в памяти всего.

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 15:37:10 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21804
Откуда: Московская область, Фрязино
Рейтинг сообщения: 3
Т.е. если я вместо имени буду в теории писать просто адрес в памяти, то это будет тоже самое?

Адрес в памяти - это числовая константа. Просто так вместо имени ее писать нельзя. Ее сначала нужно определить как указатель на необходимый тип и присвоить значение по этому указателю:
Код:
*(uint32_t*)0x...address... = 0x1234;

А почитать?

Вы в курсе, что вы приплыли ? Приплыли вместе с автором вашего букваря. Я ж не зря спрашивал.

Спрашивал о чём?
Если о:
Код:
volatile char * buffer;

,то это указатель на volatile char-переменную
А volatile-указатель будет:
Код:
char * volatile buffer;

Куда мы "с автором" приплыли Вам виднее. Моряки - ходят, а не плавают. :wink:
Цитата:
Меня за идиота не нужно держать....

Все в ваших руках.

Да, в моих руках всё. Но разговор был о ваших. :tea:
По существу есть что сказать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 17:59:11 
Друг Кота
Аватар пользователя

Карма: 15
Рейтинг сообщений: 473
Зарегистрирован: Сб янв 28, 2006 22:47:24
Сообщений: 3046
Рейтинг сообщения: 0
А то, что лежит по этому адресу определяется типом данных. И тогда линковщик просто проверят, чтобы по этому адресу был именно тот тип данных? А если , условно говоря, все данные представляются нулями и единицами, то как потом программа понимает, что у нее именно действительные числа записаны, а не строка? Как он потом отличает эти нули и единицы?

ИМХО, программа в двоичных кодах в процессоре вообще ничего не различает, а тупо выполняется по командам из памяти программ. Пойти по такому то адресу в память данных - взять то и то - отправить в АЛУ - сложить - результат сохранить в ОЗУ по определенному адресу. После работы препроцессора, линковщика и компилятора нету там ни типов, ни структур, ни переменных, и нет вообще ничего привычного из того, что мы видим в редакторе IDE.

_________________
Астролябия-сама меряет, было бы что мерять!!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 18:09:46 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Код:
volatile char * buffer;

,то это указатель на volatile char-переменную
А volatile-указатель будет:
Код:
char * volatile buffer;

Куда мы "с автором" приплыли Вам виднее.

ща и вам виднее станет. Ваши слова и цитата вашего "умника":
А почитать?
Указатели на volatile
Также распространенной ошибкой является использование обычного (не volatile) указателя на volatile-переменную. Чем это может нам навредить? Рассмотрим пример (из реальной программы), в котором был использован указатель на регистр порта ввода/вывода. Программа по SPI управляла двумя одинаковыми микросхемами, подключенными на разные выводы микроконтроллера, порт, к которому подключена активная микросхема, выбирался через указатель: .......


Читайте по буквам: "ошибкой является использование обычного (не volatile) указателя на volatile-переменную". Ваш автор имеет ввиду просто указатель, ни на какой ни волатайл, но называет его точно, как вы -- "указатель на volatile", при этом он и вы одинаковым образом называете разное, а раз так, то это зашквар-зашквар. Говорю ж, приплыли.

Цитата:
Моряки - ходят, а не плавают.

Про ходят и плавает я в курсе.

По существу есть что сказать?

По существу, вы процитировали лажу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 18:44:15 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
позвольте еще один глупый вопрос:

объявление функции:
"HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)"

объявление массива и вызов функции:
volatile uint8_t good_buffer[255];
HAL_SPI_Receive_DMA( *hspi, good_buffer, sizeof(good_buffer));

а как происходит подстановка параметров
"pData" на "volatile uint8_t good_buffer" т.е. с подстановкой читает: "uint8_t * volatile uint8_t good_buffer"
так ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 19:38:45 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
После работы препроцессора, линковщика и компилятора нету там ни типов, ни структур, ни переменных, и нет вообще ничего привычного из того, что мы видим в редакторе IDE.
Вообще говоря, это не так. В С++, например, есть технология Run Time Type Information. Она позволяет получать имя типа переменных и объектов во время выполнения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 20:01:45 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 775
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4991
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Очередной тупой вопрос от меня...

На многих сайтах с описанием языка Си, вижу пример объявления какой-либо функции на именем Foo. Почему именно такое имя?

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 21:09:47 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 3
Foo и bar произошли от армейского акронима времён Второй мировой, FUBAR — «Fucked Up Beyond All Recognition» (англ. «Разбито в хлам»). Во время кампаний в Северной Африке и Сицилии (1942–1943) возникло целое семейство таких сокращений, которые можно найти в книге Рика Эткинсона Day of Battle: The War in Sicily and Italy, 1943-1944. Например, сокращение JANFU означает «Joint Army Navy Fucked Up» (англ. «Союз армии и флота облажался»), и применялось, в частности, для описания инцидента 11 июля 1943 года, когда британский флот сбил 23 транспортных самолёта США с десантом.

https://tproger.ru/articles/foo-bar-history/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 22:36:47 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21804
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Читайте по буквам:

Чукча - писатель... Может стоит прочесть первоисточник ПОСЛЕ многоточия в цитате?
Несете какую то рандомную хрень... :facepalm:
Тимофеев совершенно определенно объясняет необходимость использования указателей на volatile в случае возможности присвоения им адресов volatile-переменных. И приводит ДВА примера - ошибочный и правильный.
То есть квалификатор volatile должен быть и у переменной и у указателя на нее. Что не так?
ЗЫ. Вам стоит познакомиться с автором текста по ссылке, кстати. Заочно, конечно. Прежде чем быковать. А то ведь стыдно будет, любезный...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт сен 22, 2020 23:44:32 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Чукча - писатель... Может стоит прочесть первоисточник ПОСЛЕ многоточия в цитате?
Несете какую то рандомную хрень... :facepalm:

И понеслось дерьмо по трубам. Вы одним термином назвали разное. Я точно показал, что именно. Обтекайте теперь оба. Голосите про "рандомную херь". Фигли вам остается.

Цитата:
Тимофеев совершенно определенно объясняет необходимость использования указателей на volatile в случае возможности присвоения им адресов volatile-переменных.


Вот в этой фразе? "Также распространенной ошибкой является использование обычного (не volatile) указателя на volatile-переменную." Так я вам открою глаза, что использование обычного указателя на volatile является правильной практикой, а не "распространенной ошибкой".

volatile unsigned int *Port -- это тот самый обычный (не volatile) указатель на volatile переменую. Вы так сами сказали. Вот и разберитесь со своим Тимофеевым, у кого из вас двоих "распространненая ошибка" случилась.


Цитата:
И приводит ДВА примера - ошибочный и правильный.
То есть квалификатор volatile должен быть и у переменной и у указателя на нее. Что не так?

Вы в курсе, что вязните все глубже? Ваше "volatile должен быть и у переменной и у указателя на нее" тогда будет выглядеть так:

Код:
volatile unsigned int * volatile Port


А теперь идите и посмотрите на "правильный пример" вашего Тихонова. Так кто из вас двоих лажает?

Цитата:
Вам стоит познакомиться с автором текста по ссылке, кстати. Заочно, конечно. Прежде чем быковать. А то ведь стыдно будет, любезный...

Я без вас разберусь, с кем мне знакомиться. И понты свои приберите дешевые. Быдлецой какой-то повеяло.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср сен 23, 2020 05:36:31 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21804
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Чудовищный демагог и шулер. Сам выдумывает, сам и отрицает.
Почему из моих слов вы опустили слово квалификатор, начав цитату с volatile?
Что я имел ввиду вы отлично поняли, как и то, что имел ввиду Тимофеев. Но продолжаете кривляться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср сен 23, 2020 06:42:13 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Если честно, то Тимофеев допустил ляп в процитированном абзаце. Но дальше по тексту все подробно разжёвывает с правильными примерами где volatile буфер, а где volatile указатель.

При всём при этом, это никак не влияет на ненужность volatile в параметрах HAL-овской функции, с которой начиналась дискуссия. С обсуждения которой так упорно соскальзывает на личности аппонент.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср сен 23, 2020 07:25:20 
Друг Кота

Карма: 20
Рейтинг сообщений: 228
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6388
Рейтинг сообщения: 0
Чудовищный демагог и шулер. Сам выдумывает, сам и отрицает.

Да ладно вам плакать. Я цитировал вас обоих и теперь уже дважды повторил, где и кто слажал. Что вы возразили по существу? Ничего! Только персональные наезды. Оно и понятно.

Цитата:
Почему из моих слов вы опустили слово квалификатор, начав цитату с volatile?

У вас галлюцинации? Разуйте глаза: я цитировал вас и вашего визави целиком. Причем, уже не один раз.

Цитата:
Что я имел ввиду вы отлично поняли, как и то, что имел ввиду Тимофеев. Но продолжаете кривляться.

Ваш Тимофеев сказал одно, в то время, как хотел сказать совсем другое. Такое бывает, когда недостает квалификации. Ваши отчаянные вопли ни ему, ни вам никак не помогут -- из песни слов не выкинешь.

При всём при этом, это никак не влияет на ненужность volatile в параметрах HAL-овской функции, с которой начиналась дискуссия.


То, что компилятор выдает предупреждения на абсолютно правильные передаваемые параметры вас не смущает? Это и есть точка непонимания.

Цитата:
С обсуждения которой так упорно соскальзывает на личности аппонент.


Повторение этой фразы каждый раз показывает лишь то, как вы тщетно стараетесь наскрести хоть какого-нибудь дерьмеца.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср сен 23, 2020 07:30:18 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
И так имеем
Код:
uint8_t  DMABuffer[24];

    /* Write to DMAy Channelx CNDTR */
    DMA1_Channel3->CNDTR = sizeof(DMABuffer);
    /* Write to DMAy Channelx CPAR */
    DMA1_Channel3->CPAR = (uint32_t) & (TIM3->CCR4);
    /* Write to DMAy Channelx CMAR */
    DMA1_Channel3->CMAR = (uint32_t) DMABuffer;
Но это не все
Код:
volatile bool ws_status;

/* Handles DMA1_Channel3 interrupt request */
void DMA1_Channel2_3_IRQHandler(void)
{
   DMA1->IFCR = DMA1_IT_GL3; /* Clear all interrupt flags */
    ws_status = 1;
}

и там в коде где-то

   memset(DMABuffer, 0, (sizeof(DMABuffer)));

   /* сброс */
   ws_status = 0;
   while(!ws_status){};   // ждать изменение состояния ws_status = 1
   ws_status = 0;
   
ну и сама загрузка буфера
DMABuffer[i] = g & mask ? PULSE_HIGH : PULSE_LOW;   
Я, конечно не селен в магических числах, но это все как-то работает.
Меняю
Код:
    uint8_t  DMABuffer[24];
    на volatile uint8_t DMABuffer[24];
и получаю предупреждение компилятора
Код:
warning: passing argument 1 of 'memset' discards 'volatile' qualifier from pointer target type [enabled by default]
Уважаемый a5021, в чем проблема и как решить ее?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср сен 23, 2020 07:35:53 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
То, что компилятор выдает предупреждения на абсолютно правильные передаваемые параметры вас не смущает?
Ни капли, приведение типов обыденная для С программиста процедура, выполняемая много раз в день.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8459 ]     ... , , , 320, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y