bash.im ithappens.me zadolba.li

Факапы

5039

Код-самоед

24 декабря 2010, 16:45

Ведём разработку на ПЛИС известной компании. С появлением встраиваемых процессоров возможности построения цифровых систем стали практически безграничными. Работа сложная и интересная. Приходится совмещать изменения железа и софта: переконфигурировал процессор или шину памяти — переписывай программу. А уж насколько богатые возможности для глюков, когда не поймёшь, где проблема...

Из последнего: обратили внимание на неполадки с памятью в стандартной конфигурации. Запустили тест памяти — всё зависло. Посмотрели размер адресного пространства: 64 МБ, а на плате физически присутствуют только 32. Тут у нас возникли некоторые подозрения. Оказалось, что в примере от производителя, кроме неверного размера памяти, ещё и банки памяти адресованы вперемешку. Выходит, что тест памяти стирает из неё сам себя, и процессор исполняет какие-то случайные инструкции. Интересно, что будут писать о глюках через десять лет, если подобная технология станет повсеместной?

5037

Извилистые дорожки и стройные ножки

24 декабря 2010, 12:45

Благополучно отучился на отделении информатики физфака. Был и курс «Введение в системы автоматического проектирования радиоэлектронных устройств» (разводка печатных плат, проще говоря), и с микросхемами элементарной логики мы знакомились как в теории, так и на лабораторных. В дипломной работе я использовал микроконтроллер, то есть был не понаслышке знаком с тем, что можно получить, накодив на C несколько сотен строк. Одногруппник, которому больше нравилось высокоуровневое программирование, взял меня в напарники для разработки светоматрицы — платки 8×12 светодиодов, которая должна была управляться с компьютера. Ни у него, ни у меня не было абсолютно никакого опыта, не считая вышеописанного обучения в университете, поэтому неудивительно, что даже с чисто организаторской стороны было много факапов. Однако я хочу рассказать о моих программно-железячных косяках. Мало ли, вдруг кому пригодится.

Free Serial Port Monitor — хорошая программа. Но показывает она не то, что пришло в буфер COM-порта, а то, что прочитала использующая его программа. Поэтому надо было не покупать новую микросхему MAX232, решив, что предыдущая сгорела, а просто добавить в отладочную программу чтение.

Altium Designer — тоже хорошая программа. Только вот все библиотеки в ней созданы в расчёте на английскую систему мер. Если вы используете десять деталей из стандартной библиотеки и одну свою, подумайте о том, обязательно ли делать её в СИ. На чертеже очень трудно заметить, что четыре проводка к пятивыводному разъёму подцепились, а один остался в полупикселе от положенного места. В итоге на плате не оказалось одной дорожки. Хорошо, что использовалась она только для программирования! Спасла конструкция «проволока, с одной стороны прикрученная к штырьку для программирования, иголка и рука, тыкающая в малюсенькую ножку микросхемы».

От аппаратных глюков никто не застрахован, даже если микросхемы покупались у поставщика, работающего напрямую с производителем. Прежде чем десятый раз просматривать собственный код, который идеален, пишите тестовые программы. В моём случае проблема была в том, что при замыкании одной из ножек на землю микроконтроллер начинал слать в USART мусор (точнее, циклический мусор: каждые три байта всё повторялось, но от этого не легче). Хорошо, были свободные ножки, так что ситуацию спасло припаивание проводка, разрезание дорожки и исправление программы.

Если во всей партии из сорока микроконтроллеров глючат одни и те же четыре ножки, это не значит, что вам подсунули эксклюзивно подобранный брак. Надо просто почитать документацию и выяснить, что, помимо используемого вами интерфейса SPI, есть ещё и JTAG, который работает именно через эти ножки. Его можно отключить, но по умолчанию он включён.

А ещё источник постоянного тока (5 В, 12 А) не любит, когда от него требуют то 0 А, то 2 А (не говоря уж обо всех двенадцати) с частотой всего полкилогерца, да ещё не по синусоиде, а ступеньками. Нет, сам источник не сгорел. Но вот напряжение от таких скачков чувствовало себя нестабильно, а вместе с ним и блютус-модуль, в результате чего связь с компьютером терялась. Эта проблема оказалась самой лёгкой: я впаял перед модулем диод, чтобы заряд обратно не утекал, а падение напряжение на полвольта скомпенсировал уменьшением токоограничительного сопротивления, и всё заработало. Интересно, что микроконтроллерам ATmega16 скачки были нипочём, хотя по документации они должны были отключаться раньше модуля.

Это, конечно, далеко не все трудности, с которыми пришлось столкнуться (или придётся: работа ещё не совсем закончена). Надеюсь, своим рассказом я уберегу какого-нибудь начинающего разработчика от нескольких дней битья головой о стену.

5006

Сделай паузу, выпей чаю

21 декабря 2010, 11:00

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

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

5003

Да снизойдёт очищающий ветер

21 декабря 2010, 09:00

Я не айтишник. Не знаком с пингвинами, ежемесячно мою кружку, в универ хожу в рубашке. Но так уж совпало, что читать по-русски обучен, следовательно, переустановить известную сборку известной оси в автоматическом режиме способен.

Звонит вчера родственник, рассказывает сказку:

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

Cмысл понятен: ошибка на носителе. Готовит родственник, кстати, классно, так что к моему приезду в духовке допекалась утка, а в холодильнике охлаждалось спиртное. Я ещё по телефону спросить хотел, осматривал ли он диск, но постеснялся: взрослый мужик, аккуратный, внимательный...

Короче, я считаю, что утку и спиртное я заслужил — тем более, что было дело в воскресенье. А то, что вся моя работа свелась к выдоху на диск и протирке оного об задницу, так до этого ещё и додуматься надо было.

4982

Чё, самый умный?

Недавно подруге нужно было пройти один онлайн-тест по учёбе — я вызвался помочь. Открываю, значит, несравненную «лисичку», ввожу адрес, логин и пароль. Начинается дикий экшн. Слева — меню, с которого нужно начинать. Пытаюсь нажать на пункт — не выходит. «Лиса» отказывается воспринимать пункты как кнопки и отображает их простым текстом. Вдохновившись историей про регистрацию на Ютьюбе, открываю исходный код — там всё правильно. Сам тест, естественно, так не пройти.

Ковырялся примерно час. Уже сонный мозг выдал логическую цепочку: «Тест по учёбе → учёба → старенькие машинки в аудиториях → Internet Explorer». Решил проверить догадку. Открываю противный Эксплорер, ввожу адрес, логин, пароль и всё такое — работает!

В общем, когда я прошёл тест и рассказал обо всём подруге, она долго злилась, а я мысленно слал разработчику теста респект: поковырявшись в исходном коде, я ответил правильно на все вопросы.

4971

Смешная горячая палочка

17 декабря 2010, 11:00

Калымил я некогда наполнением одного сайта, посвящённого региональной прессе. Без движка новостного, всё руками да через сканер, тем паче что газетёнки районные печатались ещё дедовскими средствами: никаких компьютеров, никакого офсета, — в общем, жуть. Официально я был устроен ночным сторожем.

Наработав на стороннем компе достаточное количество инфы для публикации на сайте, решил я всю эту инфу слить на рабочий комп. Дело простое: достал винт из одного ящика, вставил в другой, скопировал — и действуй. Ан нет: на рабочем компе IDE-шные шлейфы и прочие питающие проводочки стянуты в единый жгут пластиковым хомутом, да так, что второй винт никак не подцепить. Поторопился, жахнул лишка ножичком, да так, что срезал крайний проводок IDE-шлейфа. Что делать? Лишних шлейфов нет, анус на минус. Начал метаться по подведомственной территории. Нашёл старый проводной приёмник для радиоточки: на нём припоя лишнего аж на «Спектрум» хватило бы. Наскрёб ножичком нужное количество. Поглядел пристально на обитую дерматином входную дверь с декоративными латунными гвоздями. Выдернул гвоздик, с помощью медной проволоки приладил его к зажигалке — такой газовой, с форсункой, как у автогена. Перекрестясь, чтоб газу хватило, взялся за дело. Зажигалка — на старт, гвоздик раскаляется, стружечка оловянная плавится.. Перемычечка удалась. Включил — заработало. Инфу скинул, на сайт выложил, комп на место собрал — все довольны.

Не знаю, что сейчас с этим компом — может, списали давно. Но с тех пор я больше ничего не паяю: при виде паяльников смех разбирает.

4900

Стыдно сказать

9 декабря 2010, 09:00

Как-то я общался со своим падаваном, которому всегда гружу терминами, жаргонами и иносказаниями, развивая его словарный запас и админскую смекалку. Но такого я не ожидал. Впрочем, урок и для меня, и для него хороший.

Я нашёл багу в сайте, который поддерживаю потихоньку, и спросил у падавана:

— А парель-то вы сменили?

Ответ сразу не пришёл, и я удалился на кухню делать кофе. Задержался и вернулся минут через пятнадцать. Вы не представляеете, как изменился экран моего Пиджина за эти 15 минут!

Всё началось очень спокойно:

— Что за парель?
— Парель?!

Не буду копировать весь чат, а вставлю концовку:

— ААА!!! БЛ#$Ь!!! ЧТО ЗА ПАРЕЛЬ!?!?! ГДЕ ОНА! ЧТО МЫ ДОЛЖНЫ БЫЛИ СМЕНИТЬ!?!?!?
— O_о! Пароль! Ёпт, чувак, что ты так нервничаешь?
— Ну ты даёшь...

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

4891

Ночь отвергателей рекламы

8 декабря 2010, 11:00

Проект сдавать с утра. Ночь бессонная. Ищу, почему же сайт отображается в Опере как надо, в Файрфоксе — тоже, а в Сафари неправильно. Ощущение такое, как будто CSS-файл просто не подгружается, и стили не применяются. И так подойду, и эдак — всё должно работать, но не хочет.

Уже под утро от отчаяния переименовываю файл advertising.css в a.css, и сайт раскрашивается должным образом. Только в этот момент я вспоминаю о блокировщике рекламы. @#$!

4888

Контакт нараспашку

7 декабря 2010, 16:45

Защищала на днях лабу по замечательной дисциплине «организация сетей ЭВМ». Темой были почтовые протоколы. Ну и ладно, что при работе с POP я засветила простой, не менявшийся лет пять пароль, так ведь ещё рандомно выбранное для просмотра письмо оказалось восстановлением пароля от «контакта». Успеть бы теперь поменять самой...