Например TDA7294

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





Текущее время: Вт апр 16, 2024 07:41:01

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


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



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вс май 31, 2020 08:30:52 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: -5
Один из пользователей засветил проблему, когда "Уже не первый раз сталкиваюсь с таким явлением на разных процах STM32 (F103xx, F205xx...)
Программа работает отлично при подключённом отладчике.
Как только компилится релиз и программа запускается без подключённого отладчика (при чём акцент именно на этом), схема работает нестабильно.
Точнее просто через некоторое время зависает."
http://forum.easyelectronics.ru/viewtop ... 35&t=40790
Мое Объяснение проблемы: Отладчик и в самом деле влияет на стабильность работы. Для того чтобы понять, как это происходит, нужно иметь ввиду, что отладчик напрягает шину процессора работающую по спецификации AMBA2 (Амба - жаргонизм: конец, конец всему, логическое завершение начатого, шутка) про нее и читайте. Физически подключенный отладчик (даже если он не выполняет команды) изменяет логику арбитража шины AHB и APB. Сигнал SWCLK заставляет приоритеты "вращаться". Так,что это помогает против лени программиста и, одновременно ставит его в тупик... Следовательно есть очень важное свойство SWCLK изменяя его частоту вы можете "вращать" приоритеты как Вам удобно будет. Попробуйте изменять частоту SWCLK и, заметьте его частоту, когда вновь начнутся сбои, период SWCLK даст Вам дополнительную информацию о критическом времени захвата шины для Вашей блок схемы. Иными словами есть возможность измерить Ваш код в смысле арбитража шины AMBA2....

Решение: Спасибо Вам за этот уникальный вопрос. Вы, невольно, подсказали всем путь, как можно позволить себе лениться, или спасти безнадежный код (особенно если он чужой и работает в готовом устройстве). Для этого нужно выбрать частоту SWCLK при которой становиться лучше и, подать ее на постоянной основе. Я проверил на своем "дефектном коде" и, это работает отлично!!!

P.S. Как говориться, Вы любите DMA?, тогда мы идем к Вам...

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Сб июл 11, 2020 15:48:00 
Родился

Зарегистрирован: Чт авг 12, 2010 00:55:38
Сообщений: 9
Рейтинг сообщения: 0
А ну-ка растолкуйте для тех, у кого одна извилина.
Вот у меня Ф334 под ФриРтос. Пока запускаю в отладчике с выключенными точками останова или даже вовсе без них - пашет как часы. Как только запускаю в нормальном рантайме тот-же дебужный хекс - время от времени не генерит HRTIM. Причину пока не нашел, вот наткнулся на ваши эмоции. Safe my code, comrades! :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Сб июл 11, 2020 15:59:52 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
Все дело в том что приоритеты шины AMBA2 вращаются не в ту сторону! :))) Других прочин просто быть не может! :)))


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Сб июл 11, 2020 18:18:24 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Долго ждал, чтобы кто-нибудь написал по существу, чем отличается запуск под отладчиком от свободного запуска процессора. Не дождался. Под отладчиком вся оперативная память обнуляется. Ищите не инициализированные переменные или регистры. Вот и всё.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вс июл 19, 2020 10:30:30 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 2
Цитата:
Под отладчиком вся оперативная память обнуляется

Неправда ваша. И вы сами можете это проверить. Запускаем МК с прогой, она работает. Потом перезапускаем под отладкой, поставив брекпоинт на самую первую инструкцию после вектора сброса. Видим, со что содержимое ОЗУ осталось без изменений (см.скрин). Код ниже - это инит сишных глобальных и статических переменных, он не имеет отношения к отладке и выполняется всегда
Есть конечно некоторые МК, у которых одна из областей ОЗУ имеет хардварный сброс. Например, в L476 область SRAM2:
2.4.4 SRAM2 Erase
The SRAM2 can be erased with a system reset using the option bit SRAM2_RST in the user
option byte (refer to Section 3.4.1: Option bytes description).
The SRAM2 erase can also be requested by software by setting the bit SRAM2ER in the
SYSCFG SRAM2 control and status register (SYSCFG_SCSR).

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

Цитата:
Попробуйте изменять частоту SWCLK и, заметьте его частоту, когда вновь начнутся сбои,

Вообще-то, по той ссылке проблема была как раз наоборот - под отладчиком всё норм, а БЕЗ отладчика - косяки. Так что топикстартер здесь перепутал всё наоборот и стал сочинять другую "сказку".

AMBA2 - это не от "амба", а сокращение Advanced Microcontroller Bus Architecture https://developer.arm.com/architectures ... mba/amba-2. И эта ваша "амба-конец" тут в принципе то не при чем. Поскольку собственно отладка идет по шине Internal private peripheral bus и руководящие документы там совсем другие. Топикстартер конечно собрал всё в одну кучу. Это называется "поиск проблемы методом научного тыка".
Под отладкой могут быть остановки в брекпоинтах, небольшие задержки, которые необходимы для внешней периферии, но не были учтены в коде. Самый распространенный косяк - отсутствие выдержки времени после подачи питания перед первой командой в подключенные внешние микросхемы. Я и сам на это ловился. Под отладкой всё пашет, а когда закрываешь корпус устройства и заново включаешь питание - и вот тут начинается ерунда. Еще и не сразу поймешь, что часть посылаемых команд во внешнюю микросхемку просто игнорится в самом начале.
Если релизная прошивка компилится заново, то косяки надо искать именно в изменениях компиляции - разные уровни оптимизации, разные настройки компилятора. Настроек очень много, могут быть незамеченные различия.
Тут надо разбираться не абстрактно, а конкретно - что и как "не работает", где нестабильность, в чем косяки.
Вообще, поменьше пользуйтесь отладкой. Отладка - она только либо для изучения работы, либо для отслеживания каких-то математических или логических алгоритмов. Чаще всего, отладка бесполезна в реалтаймовых задачах, таких как USB (вообще бесполезна), потоковый обмен данными или управление моторами.
Пишите программы так, как если бы вы не использовали отладки вообще - и не будет косяков.


Вложения:
Безымянный.png [55.14 KiB]
Скачиваний: 244

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Последний раз редактировалось Питание Вс июл 19, 2020 11:30:32, всего редактировалось 2 раз(а).
Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вс июл 19, 2020 11:06:24 
Вымогатель припоя

Карма: 5
Рейтинг сообщений: 54
Зарегистрирован: Чт мар 22, 2012 22:02:42
Сообщений: 518
Откуда: Воронеж.
Рейтинг сообщения: 0
Всё понятно, кроме одного: что такое "со содержимое"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вс июл 19, 2020 11:13:31 
Друг Кота
Аватар пользователя

Карма: 57
Рейтинг сообщений: 777
Зарегистрирован: Чт апр 19, 2007 16:10:43
Сообщений: 9260
Откуда: г.Москва
Рейтинг сообщения: 0
что такое "со содержимое"?


Описка. Следует читать "что содержимое".

_________________
Правило для российского гражданина: Во всем принимай сторону России, независимо от того, кто Россию возглавляет в данный момент, и какая страна или страны ей противостоят. Руководствуйся мудростью: "Россия, - всё, остальное - ничто!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вс июл 19, 2020 11:28:50 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
Да, просто опислался, случается такое :) "...что содержимое"

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Вт июл 21, 2020 21:37:23 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: -1
Я думаю, что SWCLK прерывает высокоприоритетный обмен DMA, давая возможность работать DMA с другим приоритетом. Поэтому код работает стабильнее когда высокоприоритетное DMA блокирует низкоприоритетное на недопустимое для логики приложения время. Поскольку SWCLK сигнал довольно высокочастотный, то это проходит незаметно, но помогает, Как бы несколько уравнивает в "Правах" разноприоритетные DMA и, поскольку этот делается с высокой частотой (для нужд отладки) но достается некая "Польза" и коду пользователя. Кстати, можно просто соединить ножки выхода тактовой частоты процессора с делителем и вход для SWCLK на постоянной основе.

Это не значит, что так делать хорошо. Но может помочь, тем более что это объяснимо.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 05:07:18 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
Внешний таковый сигнал SCL у I2C в слейве может как-то влиять на работу этого МК? Никак. Вот и тут так же. И уж тем более, никакие приоритеты не "вращаются". Тактовый сигнал ИНТЕРФЕЙСА отладчика уж никак не может повлиять на внутренние приоритеты DMA. У отладки вообще самый низший приоритет в системе. При том, что у отладки есть собственная шина PPB.
Такое впечатление, что вы на летнем солнышке перегрелись и начали сочинять какие-то сказки-выдумки.

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 07:27:38 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: 0
А ну-ка растолкуйте для тех, у кого одна извилина.
Вот у меня Ф334 под ФриРтос. Пока запускаю в отладчике с выключенными точками останова или даже вовсе без них - пашет как часы. Как только запускаю в нормальном рантайме тот-же дебужный хекс - время от времени не генерит HRTIM. Причину пока не нашел, вот наткнулся на ваши эмоции. Safe my code, comrades! :)

К сожалению, FreeRTOS имеет "8 разрядную идеологию" и, не управляет шиной микропроцессора отсюда проистекают такие проблемы. FreeRTOS не разруливает ситуации конкуренции пользовательского кода за шину AMBA. Все отдается на откуп писателю кода без соответствующей поддержки со стороны ОС. Прозрачную поддержку такого типа, (прозрачно для ОС, но и допускает вмешательство ОС) обеспечивает патент NetSilicon, но ST Micro не покупала этот патент и, отсюда такие ситуации.

Добавлено after 14 minutes 21 second:
Внешний таковый сигнал SCL у I2C в слейве может как-то влиять на работу этого МК? Никак. Вот и тут так же. И уж тем более, никакие приоритеты не "вращаются". Тактовый сигнал ИНТЕРФЕЙСА отладчика уж никак не может повлиять на внутренние приоритеты DMA. У отладки вообще самый низший приоритет в системе. При том, что у отладки есть собственная шина PPB.
Такое впечатление, что вы на летнем солнышке перегрелись и начали сочинять какие-то сказки-выдумки.

Вопреки "Вашим ощущениям" отладка имеет приоритет в системе выше чем у ядра процессора и DMA вместе взятых (вообще, наивысший из возможных), иначе, она (отладка) не смогла бы выполнять свои функции.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Последний раз редактировалось astrahard Ср июл 22, 2020 14:05:53, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 11:47:52 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
astrahard писал(а):
К сожалению, FreeRTOS имеет "8 разрядную идеологию" и, не управляет шиной микропроцессора отсюда проистекают такие проблемы. FreeRTOS не разруливает ситуации конкуренции пользовательского кода за шину AMBA.
Это вообще не уровень ОС. Все равно что написать - "винда не разруливает маршрутизацию пакетов между компом и сервером где-то в сети".
Вы кроме вращения приоритетов и AMBA что-то еще знаете?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 13:20:45 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: 0
Винда как раз разруливает почти все, что Вы способны вспомнить. И, очень часто упоминает (Винда) слово "директ".

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 13:29:10 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
Нехило господин перегрелся :) Про 8-разрядную FreeRTOS - эт вообще что-то дикое. Где такое только приснилось топикстартеру?
Приведите номер документа и страницу в нем, где это всё написано (про приоритеты и 8-разрядную FreeRTOS)! Без этого - все эти выдумки - беспочвенны и даже не стоят обсуждений!

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 14:06:32 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: -2
Почитать можно здесь https://kit-e.ru/cpu/konstrukczii-shin- ... yh-sistem/
Цитата "NetSilicon разработала новую систему управления полосой пропускания взамен той, что используется в AMBA-архитектуре"
Смотрите Программирование «вращающегося» арбитра шины. Я предложил сделать подобное для STM32, за счет свойств отладки.

P.S. FreeRTOS не в курсе такого "перфекционизма" именно поэтому (и по некоторым другим причинам) я назвал ее "8 разрядной", кстати заковычив !!!! это высказывание.

Можно, также, почитать это https://progi.pro/kompensiruyushaya-lat ... rm-1459641

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 14:45:50 
Открыл глаза

Карма: -3
Рейтинг сообщений: -36
Зарегистрирован: Пт июн 26, 2020 16:33:29
Сообщений: 63
Рейтинг сообщения: 0
Чепуха! "У меня на заборе #$% написано, а там дрова лежат". Я просил официальные документы, а не безымянные рассуждения некому неизвестных писателей. Так что не принимается!

Фраза
Цитата:
на процессоре STM32F4
уже сама за себя говорит. Бестолковые малограмотные рассуждения.

_________________
Почти все плюсы в свою карму и в рейтинги сообщения поставил себе сам, своими же созданными для этих целей клонами. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 14:51:13 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: -3
Ну Вы даете. Публично признаться в своей малограмотности?, хотя, ваш ник Питание....

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 15:05:52 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 157
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3328
Рейтинг сообщения: 0
astrahard писал(а):
Винда как раз разруливает почти все, что Вы способны вспомнить. И, очень часто упоминает (Винда) слово "директ".
Не пишите бред! :facepalm:
Если вы так хорошо знаете винду, скажите почему комп не получает белый IP когда сеть за NAT? :))) Винда должна, просто обязана это разрулить! :)))
Надеюсь теперь понимаете бредовоть ваших высказываний по поводу ОС и уровня железа? :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср июл 22, 2020 15:20:12 
Это не хвост, это антенна
Аватар пользователя

Карма: -16
Рейтинг сообщений: -136
Зарегистрирован: Чт фев 19, 2015 12:41:04
Сообщений: 1406
Рейтинг сообщения: -1
Чего-то не хочется, откликаться на элементарное вымогательство под видом оскорблений.

_________________
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как спасти безнадежные код ничего не делая по существу
СообщениеДобавлено: Ср авг 05, 2020 11:10:41 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1147
Рейтинг сообщения: 0
Запуск от "без отладчика" может отличаться от запуска "под отладчиком" ещё например тем, что под отладчиком во флешь были установлены бряки. Которые не были сняты. Например - из-за аварийного отключения отладчика. И которые будут срабатывать во время выполнения программы, вызывая необрабатываемые исключения.


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

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


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

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


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

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


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