Сайт metrotek.spb.ru

Не могу больше. Вынос мозга. Структура сайтов http://www.metrotek.spb.ru, http://blog.metrotek.spb.ru, http://wiki.metrotek.spb.ru вроде бы одинаковая, но в ms эксплорере страница с www показывается прижатой влево, а не посередине. с остальными всё нормально. Знатоки css, если такие тут есть, посмотрите, пожалуйста, в чём проблема? Да, я слышал, что explorer странно переваривает float-объекты, но всё же…

Беркут-ЕТ/ETL. Очередной firmware релиз

yesЖена и тёща уехали на дачу и взяли с собой детей… Это был комментарий к картинке. А на самом деле, в конце итерации принято выпускать релиз софта и, как это ни странно, в прошлую пятницу нам снова удалось это сделать для Беркут-ET и Беркут-ETL. Только здесь отметиться как-то позабыли.

Вот краткий список изменений и исправлений. …→

Роботы приходят к нам на помощь

Мы недавно обнаружили, что Bercut-ET при странных обстоятельствах зависает.

Прошерстив добрую половину кода, стало понятно, что багу нам так просто не найти. Мы убили кучу времени только на то, чтобы воспроизвести ошибку.

В итоге Евгений Горлов написал робота под кодовым названием «Crazy User». Этот робот имитирует нажатие кнопок в псевдослучайном порядке. Причём делает он это очень быстро, успевая «нажимать» около 100 кнопок в секунду.  Через некоторое время прибор не выдерживает такой хаотической нагрузки и зависает.

Что же в этом полезного? А то, что последовательность нажатия кнопок псевдослучайна! Это значит, что зависание можно воспроизвести точно, поскольку последовательность всегда инициализируется одним числом и кнопки нажимаются всегда в строго определенной последовательности.

Сейчас гоняем «Crazy User’a», а о результатах — позже ;)

Гуглу — респект

knopka Совет от Google: Время – деньги! Нажимайте «Ввод» (Enter) на клавиатуре вместо кнопки «Поиск» на экране.

Молодцы. Не только в этом, но за это — отдельное спасибо.

Беркут-ETL и Cisco. Да будет шлейф!

b3etlvsciscoТак почему же Cisco «роняла» линк порта, когда к нему подключали Беркут-ET/Беркут-ETL в режиме шлейфа?

Как мы и предполагали, дело оказалось в keepalive фреймах. Для обнаружения петель на канальном уровне, Cisco периодически шлёт такие фреймы. Если на порту был принят keepalive с mac-адресом данного порта, то cisco определяет петлю на порту и опускает линк.

Как оказалось, в cisco’вских keepalive фреймах mac-адреса источника и получателя совпадают и равны mac-адресу порта с котрого были отправлены (у dlink, zyxel не так), вот и понятно почему при шлейфах 2 и 3 уровней блокировался порт (опускался линк).

Поэтому решение довольно простое: отфильтровывать фреймы с ethertype 0x9000 (он используется для cisco keepalive). Так что теперь все будет в порядке.

Не совсем в тему, но про телекоммуникации

usrА ETSI, оказывается, давно раздаёт стандарты, что называется, нахаляву.

У всех сейчас есть GSM-телефоны, с помощью которых можно не только звонить и отправлять sms, но и выходить в интернет, отправлять факсы и пр. И, наверное, большинство программистов знают, что эти телефоны управляются так называемыми AT-командами (ага, Беркут-E1 и Беркут-ET управляются, в частности, так же).

Раньше к каждому модему прилагался список AT-команд. Специфический, отличающийся от вендора к вендору. Хотя набор базовых команд был, в общем-то, одинаковым. Так вот, GSM-телефон — это тот же модем (вдруг кто ещё не знает?;). А хорош он тем, что хотя полный набор AT-команд для него определяется производителем, но должен соответствовать стандартам. И такие стандарты есть в ETSI. Подчёркиваю, нахаляву, то есть совершенно бесплатно.

Полное описание AT-команд (набор номера, информация о телефоне, приём/отправка факсов, выход в инет, работа с телефонными книгами и пр.) находится в стандарте ETSI TS 127 007. А как манипулировать SMS, расписано в ETSI TS 127 005. Про MMS пока сказать не могу, не смотрел ещё.

2D-акселератор

2d_graphicsМожет, кто забыл, но наши программисты в своё время сделали 2d графический ускоритель на FPGA для прибора Беркут-ЕТ. Это дало возможность не думать о том, что графики и диаграммы сложной структуры будут строиться слишком долго и тормозить работу основной части программы. Сейчас любой график отрисовывается практически мгновенно, чего не скажешь о графической подсистеме, например, Беркут-E1, где всё делает довольно медленный для такой задачи процессор.

Акселератор умеет строить прямые линии, прямоугольники и окружности (производительность в «попугаях», конечно, надо уточнить). А чего это стоило, ребята расскажут сами: …→

Использование внутрисхемного отладчика AVR

JTAGICE mkII В микроконтроллерах ATmega AVR, естественно, есть возможность внутрисхемной отладки по JTAG. Мы используем девайс под названием AVR JTAGICE mkII, подключённый по USB. Если по коду ошибку найти не удалось, то приходится отлаживать так же, как и обычную десктоп-программу. То есть, использовать дебаггер на «большом» компьютере, а программа будет выполняться в железке. Чтобы начать отладку, …→

Десять отличий

Бывает такое у программистов…. Вдруг перестаёт работать программа. Весь день работала, вчера работала, полгода работала до этого, а сейчас перестала — и всё. Каждый программист выходит из этой ситуации по-разному. Кто-то бросает текущую задачу и переключается на другую, а кто-то пытается решить проблему сразу, отталкиваясь от того, что «я же ничего не менял, почему она перестала работать? аааа!!!».

IMHO большинство программистов идёт по второму пути. А на этом пути их поджидает главный подвох. Они начинают искать «десять отличий». В ход идут все способы: от svn diff до сравнения бинарных файлов. В случае с программой для встраиваемых систем появляется паранойя, что все отладочные железки — глючат, что в них перепутаны резисторы, конденсаторы, и что-то там ещё.

Я не отрицаю, что «поиск отличий» может быть эффективным методом поиска неисправностей, но он не может быть основным. Основным методом может быть «остановиться и подумать». Он гораздо эффективнее, поскольку:

  • в нём присутствует слово «думать» ;)
  • процесс поиска ошибки становится творческим, а не тупо механическим
  • в этом случае от программирования можно получить удовольствие и меньше устать
  • лучше понимаешь, на что потратил своё время
  • полученные знания можно использовать в дальнейшем

По себе знаю: очень трудно остановиться. И в этом заключается основная проблема. Но остановиться надо. Иначе — бесследная потеря времени гарантирована на все 100%.

наболело ;)

Новьё: Arria II GX

Arria IIAltera решила развивать семейство ПЛИС Arria GX. Что ж, значит сравнительно недорогие FPGA с расширенными (наличием высокоскоростных трансиверов) возможностями ввода/вывода находят применение на рынке.

Результатом усилий инженеров стало второе поколение: Arria II GX . Что же в ней интересного: …→