Вступление
По настоятельной просьбе Des333 (почему все пишут, а вы нет?) публикую историю «НТЦ Метротек».
Не так давно в Санкт-Петербурге был такой институт — ЛОНИИС (Ленинградский отраслевой НИИ связи), в котором разрабатывали разные полезные и бесполезные вещи, имеющие отношение к связи. В частности, там был создан полный аналог финской цифровой телефонной станции DX-200, но на отечественных компонентах и назывался этот аналог «АТСЦ-90». Кто ж тогда знал, что нашу электронику ждёт? Кроме того, в девяностые годы НИИ активно занимался сертификацией зарубежного оборудования: от телефонов до офисных АТС, что приносило хороший доход и давало возможность развивать другие направления. Например, измерения и тестирование каналов связи и протоколов сигнализации в телефонии. Был организован доступ как к российским, так и международным стандартам, можно было приобрести любое программное обеспечение и средства разработки. Кроме того, опыт создания цифровой телефонной станции давал возможность делать своё оборудование любой сложности. В общем, было круто. Почти точно так же, как у Стругацких в «Понедельник начинается в субботу».
Сейчас ЛОНИИСа уже нет, а есть Ленинградское отделение Центрального НИИ Связи, то есть ЛО ЦНИИС. В начале «нулевых» один директор сменялся другим, начались подковёрные войны, и рассвет, как это всегда бывает, сменился закатом.
Начало и первый блин
Четверо уверенных в своих силах и знаниях инженеров решили организовать свою компанию по разработке и производству измерительной техники для телекоммуникаций. Нашли партнёров, деньги, зарегистрировали юрлицо, сняли так называемое офисное помещение, отремонтировали его и начали выпускать новый супер-прибор для анализа сигнализации ОКС-7 и DSS1 на базе наладонника от Compaq iPAQ 3950. Вот такого:
Это четырёхпортовый анализатор протоколов сигнализации ОКС-7 и DSS1/PRI. Детали разработки я опущу, но скажу, что по тем временам (2004 год) это было довольно смелое решение (
Довольно большой ящик с ISA-платами, которые подключались к тестируемым трактам ИКМ/E1. А наш дивайс легко помещался в кармане. Впрочем, это оказалось одним из факторов, сыгравших роковую роль в его судьбе. Во-первых, у клиентам сложно было представить, что устройство в десять раз меньшее по размерам может выполнять те же функции, что и здоровенный компьютер. Во-вторых, нам прямым текстом сообщили: «Да вы что, ребята? Его же сопрут на второй день использования!» Другой естественной причиной неудачи стало то, что наладонные компьютеры проиграли битву за пользователя и производители сняли их с производства. А какой был удобный у iPAQ 100-пиновый разъём для подключения внешних устройств!
На картинке выше — так называемый sleeve с платой интерфейсов и анализатора, который мы разработали, внутри. Использован корпус от CompactFlash-расширения. Тогда запросто можно было заказать любые запчасти на Foxconn'е. Впрочем, несмотря ни на что, около 30 дивайсов удалось вполне удачно пристроить.
Тестируем E1
Надо признать, в 2005 году мы мало что знали о тестировании ИКМ, но, так как средой передачи для сигнализации, которую мы умели анализировать, были тракты E1, то нами было принято решение сделать недорогой анализатор для их (трактов) измерений. Так на свет появился анализатор 2048 кбит/с Беркут-E1. В процессе разработки наши программисты узнали много нового и интересного, стандарты были изучены вдоль и поперёк, забег по граблям был более чем увлекателен. Ошибка в выборе полосы пропускания АЦП для получения формы импульса дала возможность освоить методы анализа физического сигнала с помощью стробоскопа; недостаточно внимательное чтение документации по процессору помогло впоследствии разобраться с механизмом brownout детектора, а также с эффектом гистерезиса, в результате которого этот механизм не работал; был написан контроллер дисплея 320x240 на fpga… Да много чего было! И было здорово.
Здесь кусочек ChangeLog'а
2004/08/20
* video.c: умеем писать буквы в заданную позицию. ругаемся матом [fam]
2004/08/19
+ mem.c: для тестирования памяти
+ video.c: операции вывода на дисплей. в качестве теста рисуем синусоиду.
* service.c: загрузка программ в epcs требует выключения fpga посредством
вызова epcs_nconf_clr() и epcs_nce_set() [fam]
2004/08/18
* epcs.c: загрузка epcs из flash'а [fam]
* fpga.c: загрузка fpga из epcs [fam]
2004/08/17
* xmodem.c: usart0 снова работает не по прерываниям
xmodem нормально принимает файлы [fam]
* service.c: файлы записываются в DataFlash, контрольные суммы при приеме
и чтении из flash'а совпадают [fam]
2004/08/12
+ init.c: процедура инициализации портов
* timer?.?: инициализация таймеров
* flash.c: ура! умеем записывать в DataFlash. внимательно следим за
очепятками [fam]
* defines.h: упорядочены именования интерфейсов, выводов и портов. defines
для них теперь выглядят так:
DDR_XX -- data direction register для функции XX (DDRB)
DD_XX -- бит направления в DDR (DDB1)
PORT_XX -- порт (PORTB, например)
IPORT -- input порт (PINB)
XX - собственно, функциональная ножка процессора (PB1)
PIN_XX -- ножка для input (PINB1) [fam]
2004/08/11
* выясняется, что проинициализировать spi недостаточно. нужно еще и порты
настроить соответствующим образом. мучаемся. [fam]
2004/08/10
Как бы то ни было, прибор мы выпустили в mass production, даже немножко сделали на экспорт, а также он стал стандартом де-факто для измерений ИКМ в отечественной телефонии. Судя по всему, удалось-таки поймать удачу за хвост на спаде волны. И это дало нам возможность двигаться дальше.
Делаем свой «наладонник»
А тем временем, как я уже говорил, наладонники снимали с производства и мы решили, что не будет большой сложностью сделать что-нибудь аналогичное своими силами. Сказано — сделано. И началась разработка прибора на базе процессора Intel PXA270. Своих сил уже не хватало, поэтому привлекли Тимура Ташпулатова, который любезно согласился помочь со схемотехникой и разводкой платы, несмотря на то, что раньше такими вещами не занимался. В результате получилось вот что:
Экспонат в музей компании, с линукс инсайд, тот же Opie, который мы устанавливали на iPAQ, он же «Беркут-C», исправленными косяками в загрузчике и qt-приложением в качестве примера вывода на экран. Как ни странно, всё заработало почти с первого раза. Самое сложное было, наверное, заставить правильно работать jtag-интерфейс.
А потом мы разработали новую плату, которую установили в прочный металлический корпус. Дизайн корпуса был смоделирован в 3-d редакторе Blender за пару ночей, а потом покупатели стали говорить: «Хотим вот этот прибор, модный, с волной».
Собственно, вот так он выглядел:
Здесь можно прочитать о приборе чуть более подробно. О том, что он модульный, с большим экраном, с батареей большой ёмкости. Но кое про что вы по ссылке не узнаете. О том, что внутри и что такое хорошо, а что такое плохо с позиции разработчика дивайса. Потому что сейчас, глядя назад, можно смело рассказывать о том, что мы сделали хорошо, а что нет, что категорически нельзя было делать, зачем изобретали велосипед и какие задачи нужно было решать по-другому. Но об этом, надеюсь, напишу в следующий раз.
Спасибо, что дочитали эту часть истории до конца.