|
|
  |
Новая версия IAR EW430 4.10A, появилась новая версия |
|
|
|
Oct 19 2007, 21:31
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(zltigo @ Oct 20 2007, 01:09)  Появился свежий компилятор для MSP430 - перепрыгнул аж на 4 версию. Плиз, залей на FTP, что то не хочет он 30дневку мне отдавать..((
|
|
|
|
|
Oct 19 2007, 22:14
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
По наводке из пустыни обнаружил, что на сайте производителя появилась новая версия компилятора IAR Embedded Workbench version 4.10 for TI MSP430. Поскольку там высказывалось сомнение, то скачал. Действительно скачивается новая версия. Посему краткий отчет поверхностного исследования ее. Зная какой самый первый вопрос интересует российских эмбеддеров, сообщаю - после увеличения дозы для версии на 1/10 таблетка по-прежнему работает.  Далее. Дистриб на 13 Метров больше предыдущего. На этапе установки кроме собственно IAR EW дополнительно установился Microsoft Visual C++ 2005.  Не поэтому ли дистриб на 13 Метров потолстел? Версии проекта традиционно несовместимы, посему IDE при открытии его предлагает старый (созданный в 3.42а) конвертировать. Ну сконвертировал. Визуально IDE не изменилось. После этого сразу полез в опции проекта. В опциях оптимизации вместо выпадающего списка чекбоксы. Кроме Speed и Size появилась Balanсed, но выбирать из них можно лишь при установленном уровне оптимизации High. При выборе других уровней оптимизации "лишнее" затенено/недоступно. Кстати, забегая вперед, при компиляции проекта выскочила ошибка, связанная с этим нововведением. Цитата Error[e117]: Incompatible runtime models. Module acorr specifies that '__rt_version' must be '3', but module math has the value '2' Error while running Linker Видимо все-таки конвертация проекта не совсем гладко проходит. Пришлось зайти в опции проекта и выбрать medium, потом снова high-speed. После этого скомпилировалось. Далее. Заметил, что список поддерживаемых эмуляторов увеличился. Кроме TI (LPT-FET, USB-FET), J-Link и SoftBaugh (LPT, USB, USB Pro), поддерживаемых в 3.42A появились Olimex (USB, LPT) и Elprotronic USB-FPA. Соответственно в комплекте имеются драйвера для мостов USB-COM FDTI, SiLabs etc. Новых плагинов не добавилось, а версии имеющихся конечно же обновились. Больше ничего, нового/интересного в опциях не заметил. Окромя двух новых "Data20 heap size" там где Options->General options->Stack/Heap и Options->C/C++ compiler->Code "20-bit context save on interrupt". Обе e меня затенены, т.к. видимо предназначены для кристаллов со 100кБайтной Flash. Попробовал скомпилировать проект. Компилируется. Но появились новые ремарки, которых не выдавала 3.42A. На строки вида Код uchLRC=~uchLRC; и Код if (((~P1IN)&BIT5)==0) stat0=0; выдает ремарку Цитата Remark[Pa091]: operator operates on value promoted to int (with possibly unexpected result) Операция побитовой инверсии над char-овскими операндами не нравится? Ну да ладно. Результаты. Версия 3.42a уровень оптимизации medium-speed (оптимизация по скорости). Code motion выключена. Цитата 14 174 bytes of CODE memory 1 626 bytes of DATA memory (+ 348 absolute ) 752 bytes of CONST memory Версия 4.10a уровень оптимизации medium (оптимизация по скорости не доступна для выбора). Code motion выключена. Цитата 14 104 bytes of CODE memory 1 626 bytes of DATA memory (+ 348 absolute ) 720 bytes of CONST memory Версия 3.42a уровень оптимизации high-speed (оптимизация по скорости). Code motion выключена. Цитата 14 050 bytes of CODE memory 1 626 bytes of DATA memory (+ 348 absolute ) 752 bytes of CONST memory Версия 4.10a уровень оптимизации high-speed (оптимизация по скорости). Code motion выключена. Цитата 14 036 bytes of CODE memory 1 626 bytes of DATA memory (+ 348 absolute ) 720 bytes of CONST memory Ну то, что размер кода уменьшился это хорошо и объяснимо, но почему констант меньше стало, не совсем понятно.  Компилятор их инлайнить перестал? Или что-то другое? Запустил C-Cpy в режиме симулятора. Запускается. Внешний вид не изменился. Зато вновь заработала "ручная" симуляция вызова прерывания.  В 3.42A она почему-то не работала и симмитировать прерывания можно было только с помощью макросов. Вот в общем пока и все. Реального устройства под рукой нет и работоспособность прошивки, скомпилированной в 4.10A проверить не могу. А хотелось бы проверить корректность оптимизации переменных типа volatile, находящихся в структуре. Глюк с оптимизацией для такого случая присутствует как в 3.30A, так и в 3.42A. P.S. открыл еще один проект, созданный в 3.42A. Сконвертировал. Скомпилировал. Ошибки типа Error[e117]: описанной выше не выскочило, но на попытку запустить C-cpy приложение IAR тихо, без каких-то сообщений самостоятельно закрылось  Запустил вновь, зашел в опции в там где задается оптимизация выбрал medium и снова high-speed. После этого все скомпилировалось и C-Cpy уже нормально запустился. Видимо именно в этом месте конвертация проектов все же глючит. Будьте внимательны! Оп-па! zltigo уже успел присоединить мое сообщение к своей малоинформативной ветке, хотя на мой взгляд следовало бы наоборот сделать  Ну да ладно, хозяин-барин и кто не успел, тот опоздал Для diper. Ваша просьба выполнена.
Сообщение отредактировал rezident - Oct 19 2007, 22:15
|
|
|
|
|
Nov 14 2007, 18:55
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(Dog Pawlowa @ Nov 14 2007, 19:06)  ...говорит, что "программа не умещается в памяти". Редактор "плохой". Видимо что лишнее патчит, напрмер табуляции пробелами заменяет или перводы строки. Возьми например типа www.hhdsoftware.com/Products/home/hex-editor-free.html
|
|
|
|
|
Nov 15 2007, 06:43
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
2 Dog PawlowaЕсли не осилите правку бинарных файлов, можете воспользоваться патчем для генератора, ссылку на который(генератор) я приводил выше. Удачи.
Сообщение отредактировал gotty - Nov 15 2007, 07:15
|
|
|
|
|
Nov 15 2007, 16:50
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Спасибо всем, не оставившим наедине с хакерской наукой  Уже получил результаты: Код Fatal Error[e106]: Syntax error or bad argument in x.xcl 70 -Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-0300 Fatal! Execution terminated... Error while running Linker Разбираться буду завтра, но кажется, что именно эту строчку я исправлял при переходе с 2.XX на 3.XX. Никакой фантазии у них нет... "Храм-бассейн-храм.."
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 15 2007, 18:03
|

Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 5-10-05
Из: Советский Союз
Пользователь №: 9 244

|
Цитата(Dog Pawlowa @ Nov 15 2007, 20:50)  Код Fatal Error[e106]: Syntax error or bad argument in x.xcl 70 -Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-0300 Fatal! Execution terminated... Error while running Linker Вы, наверное, используете свой (не тот, что по-умолчанию) XCL файл, а он у Вас заточен под предыдущую версию. Найдите в папке $TOOLKIT_DIR$\CONFIG\ нового ИАРа файл XCL для Вашего проца и подправьте свой XCL по аналогии.
|
|
|
|
|
Nov 15 2007, 23:20
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(Dog Pawlowa @ Nov 15 2007, 20:50)  Код Fatal Error[e106]: Syntax error or bad argument in x.xcl 70 -Z(DATA)DATA16_I,DATA16_Z,DATA16_N,HEAP+_HEAP_SIZE=0200-0300 Fatal! Execution terminated... Error while running Linker Вроде _HEAP_SIZE заменить на _DATA16_HEAP_SIZE. Или посмотреть в новых xcl файлах как уже рекомендовали выше....
|
|
|
|
|
Nov 19 2007, 08:12
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Продолжаю переводить проекты на 4.10. В одном из проектов новая версия обнаружила, что дважды описана функция прерывания по передаче порта  Посмотрел - точно, в модуле uart - рабочее прерывание, в main - заглушка. Возник риторический вопрос - а что же там молча компилировала версия 3.ХХ ? Еще одна галка в пользу перехода на новые версии.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 20 2007, 00:07
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Dog Pawlowa @ Oct 22 2007, 14:29)  А прибор то работает?  Сегодня удалось-таки проверить в приборе прошивку, скомпилированную новой версией 4.10A. Работает! Оптимизация High-Balanсed, опция Code motion по традиции выключена. Reduce stack usage включена. Цитата 5 466 bytes of CODE memory 405 bytes of DATA memory (+ 60 absolute ) 132 bytes of CONST memory (+ 176 absolute ) В 3.42a с такими же установками (только оптимизация High-Speed) было Цитата 5 730 bytes of CODE memory 405 bytes of DATA memory (+ 60 absolute ) 164 bytes of CONST memory (+ 176 absolute ) Куда в 4.10a деваются константы, не пойму до сих пор
|
|
|
|
|
Nov 20 2007, 04:56
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37

|
Цитата Куда в 4.10a деваются константы, не пойму до сих пор Кстати, я ручками посчитал по всем файлам *.lst сколько констант используется, и сравнил сколько пишет в конце и 3.30а и 4.10а. В *.lst - количество const одинаковое в обоих версиях, и оно больше, чем то, которое написано в конце, после линковки. В обоих версиях "результат" меньше "суммы", в 4.10а просто он меньше, чем в 3.30а. У меня, кстати, надурняка с 3.30а на 4.10а перекомпилировалось без ошибок, не заработало, но сейчас "переправа" сразу нескольких проектов, притормозил переход... хотя попробовать охота...
--------------------
Если зайца бить, его можно и спички научить зажигать Сколько дурака не бей - умнее не будет. Зато опытнее
|
|
|
|
|
Nov 20 2007, 07:54
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(rezident @ Nov 20 2007, 04:07)  Оптимизация High-Balanсed, опция Code motion по традиции выключена. Reduce stack usage включена. Чем вызвана такая такая нелюбовь к Code motion ? По поводу констант сложидось впечатление что он их начал активнее инлайнить. Сравнить уже не с чем моcты сожжены
|
|
|
|
|
Nov 20 2007, 08:48
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37

|
Цитата Чем вызвана такая такая нелюбовь к Code motion ? Глючит. У меня переменную, которая менялась в цикле, выводила за цикл... Где-то здесь писалось.
--------------------
Если зайца бить, его можно и спички научить зажигать Сколько дурака не бей - умнее не будет. Зато опытнее
|
|
|
|
|
Nov 20 2007, 16:00
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
1 ) В одном проекте только часовой кварц, контроль которого встроенными средствами MSP не поддерживается. Поэтому было сделано грубое сравнение таймера от кварца с программным циклом от DCO. Цикл изменился, константу пришлось менять. 2 ) Ага, я его сломал! Поставил оптимизацию high, balanced, снял галку Code motion. Код Error[e46]: Undefined external "This_Function" referred in work ( D:....r43 ) Internal Error: In function: unknown Diagnostic: unexpected exception P0: 1 P1: 0 Error while running Linker Total number of errors: 2 Total number of warnings: 0 3) Поигрался с галками. Ошибка исчезает, если снять галку Function inlining. То есть функция "проинлайнена", а линковщик ищет указатель на нее и естественно не находит. Вывод: реальный глюк, однако...
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Nov 20 2007, 17:32
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(Dog Pawlowa @ Nov 20 2007, 21:08)  Видимо, отследить человеческим разумом сочетания возможностей среды и компилятора просто нереально. Если придерживаться правила "буть проще", видимо многих косяков можно избежать.
|
|
|
|
|
Nov 21 2007, 16:13
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(Dog Pawlowa @ Nov 21 2007, 19:55)  А еще в новой версии происходит контроль заполнения стека. Если на момент останова стек занят более чем на 90%, в окне сообщений выводится предупреждение. В 3.42А это уже было и настраивается в опциях отладчика. При отладке в операционке вообще вещь бесполезная, т.к. стек там всегда не "там". А у меня и в main пишет что стек кончился  Так как в качестве стека main используются буфферы таск, которые до старта таск не нужны.
|
|
|
|
|
Nov 24 2007, 14:19
|
Участник

Группа: Свой
Сообщений: 72
Регистрация: 4-12-04
Пользователь №: 1 322

|
Такая проблема. У меня в Симуляторе IAR for MSP 4.10 подпрограмма длительностью примерно 1 млн. циклов выполняется порядка 1 минуты. Это при условии, что активно окно IDE, иначе еще дольше. Вопрос: Что симулирует Pentium целую минуту в процедуре, котрую MSP должен исполнить за 125мс? Как уменьшить это время? Может в настройках что-то не то?
Проверить на старых версиях IAR for MSP сейчас нет возможности, но я запихнул ту же процедуру в IAR for AVR - там симуляция занимает несколько секунд, что вполне приемлимо.
|
|
|
|
|
Nov 25 2007, 17:08
|
Участник

Группа: Свой
Сообщений: 72
Регистрация: 4-12-04
Пользователь №: 1 322

|
Цитата(akostin @ Nov 24 2007, 17:19)  Проверить на старых версиях IAR for MSP сейчас нет возможности, но я запихнул ту же процедуру в IAR for AVR - там симуляция занимает несколько секунд, что вполне приемлимо. Вот проверил скорость выполнения процедуры БПФ в разных версиях симулятора IAR EW430: 3.21 31 сек 3.40 55 сек 3.42 52 сек 4.10 60 сек IAR AVR 4.20 3 сек !!!!! Особенно удивила старая 3.21 - работает быстрее новых. Напоминаю - число циклов процессора MSP430 в данной процедуре порядка 1млн. Кто-нибудь сталкивался с такой ситуацией?
|
|
|
|
|
Jan 23 2008, 14:15
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349

|
Уважаемые, а кто может объяснить такое поведение компилятора:
С код: if( !(response & 0x80) ) А вот что сделал компилятор: CMP.B #0x0, R13 Хочу заметить, что компилятор из версии 3.42А давал другой код, но тоже неправильный: TST.B R13
А если поменять немного, другой бит проверять: if( !(response & 0x40) ) То компилятор дает правильный код: BIT.B #0x40, R13
Может я чего не понимаю? response - беззнаковое 8 битное число.
|
|
|
|
|
Jan 23 2008, 16:24
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Цитата(М430 @ Jan 23 2008, 17:15)  Уважаемые, а кто может объяснить такое поведение компилятора: С код: if( !(response & 0x80) ) ... Так программа то правильно выполняется? Если правильно, то какбы пофик что там компилер наделал... ну или листинг поболе давайте, а не одну строчку ЗЫ: ну если там действительно бага то хотелось бы это знать!
|
|
|
|
|
Jan 23 2008, 19:41
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349

|
Цитата(Сергей Борщ @ Jan 23 2008, 17:07)  Ничто не мешает ему представить себе это число как знаковое и после CMP.B #0x0, R13 проверять флаг N. Скорее всего он так и делает дальше. Теперь докажите, что TST.B R13 - неправильный код. Чтобы понять причину такого решения - сравните длину и время команд BIT и CMP Да, вы правы. Компилятор все правильно сделал. Я уже и сам потом посмотрел и понял, что это я лапух. Конец дня и все такое, башка не варит. А чего я именно за это ухватился - при переходе на 4,10 версию программа зацикливалась на этом месте, хотя в предыдущей все работало. Буду разбираться что не так. А у вас часто бывает, что при переходе на новую среду разработки что-то перестает работать и надо подправлять исходный код?
|
|
|
|
|
Jan 24 2008, 12:47
|
Группа: Участник
Сообщений: 14
Регистрация: 23-01-08
Пользователь №: 34 349

|
Цитата(rezident @ Jan 23 2008, 21:58)  У компиляторов IAR прослеживается такая тенденция - в новой версии они более тщательно стараются соответствовать стандартам языка Си. Так что, если в предыдущих версиях т.с. "прощались" некоторые вольности и неоднозначности программирования, то совсем не факт, что они не "всплывут" при компиляции этого же проекта в новой версии. Ну с версией 4.10 у меня не сложилось - постоянно падает. Интересно что проект открывает, если нажать сразу на Debug - то или просто завершается ничего не сказав, или вылетает стандартное окошко с просьбой отослать данные для анализа "что произошло" в IAR. А если сделать Rebuild all а затем Debug - все работает, заливается и отлаживается. Но стоит что-то исправить, то после частичной компиляции снова начинает падать при попытке нажать Debug. Были ли у кого-то такие симптомы?
|
|
|
|
|
Feb 25 2008, 14:18
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078

|
Цитата(М430 @ Jan 24 2008, 14:47)  Ну с версией 4.10 у меня не сложилось - постоянно падает. Интересно что проект открывает, если нажать сразу на Debug - то или просто завершается ничего не сказав, или вылетает стандартное окошко с просьбой отослать данные для анализа "что произошло" в IAR. А если сделать Rebuild all а затем Debug - все работает, заливается и отлаживается. Но стоит что-то исправить, то после частичной компиляции снова начинает падать при попытке нажать Debug. Были ли у кого-то такие симптомы? у меня схожие, но все гораздо хуже :) Rebuild all а затем Debug не помогает гружу проект - умирает в асм коде ( есть ошибки ), ИАР вылетает - нет связи с контроллером, в последующие загрузки - Mon Feb 25 16:09:48 2008: Interface dll version 2.3.1.0 Mon Feb 25 16:09:49 2008: Failed to load debugee: E:\...v5xx.d43 как побороть?
|
|
|
|
|
Feb 25 2008, 17:57
|

Частый гость
 
Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713

|
Цитата(NoName @ Feb 25 2008, 17:18)  у меня схожие, но все гораздо хуже  Rebuild all а затем Debug не помогает гружу проект - умирает в асм коде ( есть ошибки ), ИАР вылетает - нет связи с контроллером, в последующие загрузки - Mon Feb 25 16:09:48 2008: Interface dll version 2.3.1.0 Mon Feb 25 16:09:49 2008: Failed to load debugee: E:\...v5xx.d43 как побороть? во во. у меня почти тажа хрень была. если у тебя программатор от OLIMEX , то попробуй поставить новые дрова. обновить прошивку программатора. убрать все русские буквы в пути к проекту. мне это помогло.
|
|
|
|
|
Feb 26 2008, 10:52
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078

|
Цитата(CAHTA_1939 @ Feb 25 2008, 19:57)  во во. у меня почти тажа хрень была. если у тебя программатор от OLIMEX , то попробуй поставить новые дрова. обновить прошивку программатора. убрать все русские буквы в пути к проекту. мне это помогло. MSP FET430-UIF, прошивка автоматом обновилась как только подлючил к данной версии IAR. проект еще вчера скинул в корень - глухо. даже ошибки поисправлял :) в симуляторе работает. глюков стало меньше но кристал перестал определятся, либо оприделяется как F149. Проверил на приборе с 149 заливши в него программу 2618 , ИАР почему то признал 149 за 2618, по крайней мере не ругнулся. контроллер в IDE выставлен правильно MSP430F2618 :) <msp430x26x.h> // XLINK command file for IAR Embedded Workbench for MSP430. // This file should be used with the MSP430F2618 microprocessor. тоже в общем родной. ИАР все так же виснет. эпопея только начинается, буду держать общественность в курсе :) MSP430 1, 0, 1, 1 (1.0.1.1) ... \olimex.dll 26.09.07 12:30:06, 458752 bytes пора искать обновления, дейсвительно может чего то не учёл.
|
|
|
|
|
Feb 26 2008, 13:14
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 4-03-05
Из: Киев
Пользователь №: 3 078

|
Цитата(NoName @ Feb 26 2008, 12:52)  эпопея только начинается, буду держать общественность в курсе  УРА! запустил  . скачал Evaluation с IAR никаких изменений. все та же ошибка. методом стука в бубен ( и переворачавая плату ) удалось залить рабочую прошивку, сбоев пока нет. Выводы - НЕ ЗАЛИВАЙТЕ программу с явными ошибками, в симулятере ругалось на переход по адр 0xE0XXX. возможно в этом и была проблема, неверный код мне один раз удалось залить, после этого 2618 выпал из работы на пару дней.
|
|
|
|
|
Feb 26 2008, 19:00
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Продолжение: - от проекта не зависит - от типа отладчика не зависит, т.е. симулятор это или FET не важно - вылетает при нажатии debug, если перед этим не происходит компиляция хотябы одного файла, одной перелинковки не достаточно (пробовал удалять .d43) - после компиляции хотябы одного файла все начинает работать как и должно - можно открывать и закрывать ИАР, загружать другой проект и без перелинковки смело нажимать debug. Например можно компильнуть один проект, не нажимать debug, закрыть иар, открыть другой проект и без компиляции нажать debug, НО если между этими событиями - компиляция и нажатие debug - проходит какойто интервал времени (минуты 3), то все опять ломается и ИАР опять начинает вылетать при нажатии debug.
|
|
|
|
|
Feb 27 2008, 10:44
|
Частый гость
 
Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750

|
Победил! У него явно какойто косяк свзяанный с датой/временем. Сменил системную дату на октябрь 2007, поставил ИАР, вернул часы в 2008 год. Усе заработало нормально.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|