Решил в офисе на рабочем столе навести порядок и постепенно в процессе уборки добрался до шкафа. В результате никакого субботника и уборки не получилось. Там, в шкафу, как заправский археолог, я обнаружил довольно много старинных (и не очень старинных) артефактов. Это были всякие инструменты и отладочные платы, платы разработчика. Все эти штуки накопились за годы работы и сейчас, рассматривая эти платы вспоминаются всякие истории, связанные с ними.
Вот, например, что это такое?
Никогда не угадаете...
Это аппаратный эмулятор USB микроконтроллера Cypress CY3654. Микроконтроллер был однократно программируемый и чрезвычайно дешевый. Вести разработку для него можно было только с помощью вот таких штук, так как прошить микросхему можно только один раз. Если в программе ошибка - выбрасывай чип. Вот была когда-то давно такая микросхема. Это было еще во времена медленного интернета. Забавная история связана с этим китом.
Нам досталась эта отладочная плата вместе с проектом, который некая контора вела, а закончить не могла, что-то у них не очень получалось. По сути дела нужно было разработать программу микроконтроллера переходника из PS/2 в USB, но только нужно было подключить два устройства: PS/2 мышь и PS/2 клавиатуру. Когда мы взялись за эту работу, то сперва были полны энтузиазма, но потом разобравшись стали понимать, что не все так просто. Элементарно на обработку событий от двух PS/2 устройств у микроконтроллера не хватало производительности, настолько он был слаб. В принципе, проект нам достался на доработку с исходниками, пришлось изрядно попотеть, и, в конце концов, вроде бы все заработало. Отдали проект заказчику и тот кажется был доволен. Предполагалось, что будут выпускаться такие USB-PS/2 переходники и даже эти микросхемы с нашей прошивкой должны были бы устанавливаться на какие-то материнские платы Jetway.
Через некоторое время возвращается наш заказчик и говорит, что микросхема работает не со всеми программами. Как такое вообще может быть? Как это может быть связано с программой? Ну сговорились, что они нам дадут эту проблемную программу с которой не работает. Уж качали мы ее качали через наш медленный интернет.. Выкачали. Распаковываем ZIP архив - там игрушка DOOM. И что интересно - запустили поигрались, вроде бы работает. Начинаем выяснять подробности и что выясняется: оказывается нужно одновременно и бежать и стрелять. Для этого одновременно елозится и мишь и нажимается клавиатура. А мы то по неопытности поелозим мышь - ездит по экрану, понажимаем клавиши на клавиатуре - нажимаются, коды в компьютер попадают. Вот же ешкин кот! Нужно тестировать оба канала одновременно! Тогда нагрузка по прерываниям получается гораздо выше!
Пришлось еще больше оптимизировать всю программу и буквально считать все такты микропроцессора. Писалась программа, конечно, на ассемблере. В конце концов - хаппи энд - кардинально переработали программу и все получилось и все заработало..
Вот еще один старинный артефакт: программатор всех возможных и невозможных микросхем:
Этим программатором когда-то можно было прошить любую ПЗУ или те же OTP (One Time Programmable) Cypress микростемы.
А вот с этой платой связаны только грустные воспоминания. Плата PLX NET2282RDK.
Эта штука - это демонстрация возможностей микросхемы моста USB <-> PCI. Ничего путевого у нас с этой платой, к сожалению, не получилось. Только время потеряли. По моему мнению сама идея делать мост из USB в PCI какая-то ущербная.
Другая плата PLX - с ней связаны более приятные воспоминания:
Это так же плата разработчика. Она была предназначена для изучения моста из PCIE в PCI66. Обычная шина PCI работает на частоте 33МГц. Но стандарт PCI допускает и удвоенную частоту 66МГц - только где же ее взять? На материнских платах не бывает такой частоты. Вот компания PLX придумала чип моста из PCIE one lane (который чуть быстрее обычного PCI 33МГц) в шину PCI 66МГц.
Вот это реально успешно работало. Если скорости передачи обычной PCI платы не хватает, то ее можно немного модифицировать, добавить микросхему моста PLX и плата становится PCIExpress 1 lane, а PCI будет уже работать на 66МГц.
Надеятся на прирост пропускной способности шины можно только в случае очень длинных блочных передач. Во многих случаях это вполне было приемлимое решение.
Вот еще интересная штука.
Плата для ознакомнения с FPGA Altera Cyclone. Конструктивно FPGA стоит на отдельном встраиваемом модуле
В комплекте с платой шел диск с Quartus II и с примерами проектов, которые использовали софт процессор NIOS. Довольно интересно было познакомиться с этим техническим решением. Помню на этой платке запускался какой-то uclinux и работал FTP сервер.
А вот такой монстр:
Тут правда мы когда-то что-то уже припаяли для наших экспериментов.
Плата разработчика от компании ST. Довольно интересная плата, может нужно про нее даже отдельный пост сделать? На плате есть FPGA Xilinx для пользовательских проектов. FPGA тесно связана с чипом ST - там в чипе ST есть и процессор ARM, и контроллер памяти, и DMA, и GPIO. Интересно, что пользовательский проект из FPGA (если вы уверены, что в нем все правильно) можно "отлить в железе". Компания ST берется встроить ваш код из FPGA внурть своего чипа. Получится заказная микросхема с частично с вашим проектом. В целом проект проектирования и изготовления своей микросхемы получается несколько дешевле, чем делать полностью свою заказную микросхему, так как очень многие модули вроде процессора, шины, всяких общепринятых контроллеров уже готовы и предоставлены самой ST. Собственно один из наших заказчиков использовал эту технологию, а мы совсем немного поучаствовали в разработке.
Следующий обнаруженный мною артефакт:
Аппаратное средство отладки ARM программ Lauterbach. Вот как-то не отложилось в памяти. Помню использовали некоторое время для дебага ядра Linux в тех же ST-шных платах. Помню, что стоила эта штука каких-то странных нереальных больших денег.
Вообще-то есть у нас в арсенале и платы с микроконтроллерами STM32. Даже фотографировать не буду - этим сейчас наверное никого не удивишь. А вот другое, необычное, - обнаружил коробку с разными кардридерами:
Когда-то делали поддержку кардридеров для одного устройства... Вот это настоящий артефакт!
Вот ниже на фото Альтеровская DSP плата. Довольно продвинутый экземпляр и успешно использовалась нами во многих проектах.
А вот это вообще моя самая любимая плата:
И PCI Express исследовали, и видеоадаптер разрабатывали, и тестировали на ней наш программатор MBFTDI и использовали ее просто как анализатор сигналов. Вот очень много с ней сделали.
На плате стоит FPGA Altera Cyclone II, память DDR, Ethernet... Ее даже просто в руках приятно подержать..
Ну и вот, наконец, наше последнее приобретение (неделю назад купили): плата с Altera Cyclone V.
Решили, что такая плата поможет нам в будущих проектах. Кто знает, может даже когда нибуь сделаем свою плату Марсоход3 с пятым циклоном?
Подробнее...