Применение Линукса в разработке аппаратуры для геологоразведки

Я сейчас тружусь над созданием целой системы, которая в двух словах будет заниматься сбором некоторой информации, передачей этой информации по кабелю, приемом этой информации и дальнейшей ее математической обработкой. Называется эта штука — ПРК — Прибор Рудного Каротажа.

Не буду разливаться мыслью на тему, что сама по себе задача достаточно трудная и по этой причине жутко интересная. Скажу что система получается сложная. Уже сейчас изготовлено пять модулей, которые так или иначе связаны друг с другом и активно взаимодействуют. Да, наверно хочу отметить, что каждый модуль в своем составе имеет микроконтроллер. Это нам понадобится чуть позже для понимания сути происходящего.

Упрощенно можно говорить, что ПРК состоит из нескольких измерительных модулей, кабеля и РКС (Регистратора Каротажных Сигналов).

Рис.

Измерительные модули занимаются (понятно!) измерением физических свойств (земли???), формирование информационных пакетов и отправкой их по многокилометровому геологическому кабелю.

Да-да, в геологии используются специальные кабели! Эти кабели не только передают питание и сигналы, но являются еще и механической частью каротажной системы. Геологический кабель — это такой стальной трос, который имеет внутри (коаксиально) изолированную медную жилу. Трос работает на растяжение, и должен выдерживать как минимум свой вес. Для справки, бухта такого троса на 2.5 км весит около 400 кг. Понятно, что применение вместо троса, например, витой пары для компа — это смешно!

Итак, измерительные модули собирают информацию, пакуют, и передают ее в виде пакетов на поверхность земли. На земле находится РКС, который принимает эти пакеты, проверяет их на валидность и передает их в комп.

Пока вроде все просто. Да. И я тоже так думал, пока не влез с головой в проблемы.

Первая сложность состоит в том, что центральная жила кабеля (ЦЖК) используется как для подачи питания вниз (к измерительным модулям), таки для передачи информации вверх (от этих самых модулей).

рис.

Объемы информации небольшие. Примерно до одного килобайта в секунду. Но длинна кабеля и его электрические параметры заставляют несколько напрячь извилины.

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

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

Если бы это было дно устройство, то проблем особых не было. Но в данном случае мы имеем целый кластер взаимосвязанных устройств. Таким образом, на практике получается, что если мы пришли к пониманию изменить формат пакета (передачи данных), то формат нужно менять одновременно почти у всех модудей, начиная от РКС и кончая всеми,которые в настоящий момент подключены к кабелю.

Представляете ситуацию? Все модули содержат микроконтроллеры. Как правило микроконтроллеры разные. Ядро у них у всех пока одно и то же — AVR, но тип … это зоопарк! MEGA48, MEGA328, MEGA32, TINY13. На подходе модуль с MEGA64.

А теперь, внимание!

Я говорю СПАСИБО ЛИНУКСУ за его богатые возможности!

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

Если вы думаете, что для каждого проекта у меня открыта свой IDE, то вы почти правы. Ну, разве что ошибаетесь только в том, что думаете о какой-то монолитной IDE типа IAR, AVR-Studio или CodeVision.

Моя IDE — это обычный текстовый редактор, окно псевдоторминала (псевдоконсоли) и окно файлового менеджера. Файловый менеджер Наутилус позволяет создавать закладки. Это явление Виндовс-пользователям не знакомо. В Винде, на сколько я знаю, такого нет. Есть Ярлыки, но это совсем не то! Удобство этих закладок стостои в том, что они позволяют быстро переключаться с одного директория на другой.

Таким образом, имея три о более открытых вот таких проектов, мы совершенно не подвергаем операционную систему истощению. Ресурсов съедено совсем не много, но зато какой результат!

У меня изготовлено несколько USB-asp программаторов. Они все подключены к компу и каждый из них к своему модулю. Поскольку программаторы «висят» на разных портах и управляются из разных проектов, то залить не тот код в не тот модуль просто физически ну никак не получится!

У каждого такого IDE, как я уже говорил, имеется окно псевдоконсоли. В этом окне я ввожу основные команды для управления проектом. Точнее так — команды для Makefile, который обеспечивает работу с проектом.

Для сборки используется команда make, для заливки полученного кода в микроконтроллер — make load, для коммита — make commit и так далее. Я не буду сейчас перечислять все команды. Тем более, что Makefile — это обычный текстовый файл, структуру и содержание которого я определяю сам. И когда я вижу, что те или иные действия у меня повторяются, я их оформляю в отдельную команду. Ну, например, когда я заметил, что мне часто пришлось открывать хэдерный файл на один конкретный микроконтроллер чтобы посмотреть на определения битов и регистров, то я написал для этого команду help (вызывается make help).

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

Я не знаю… может быть сейчас в Виндовсе так тоже можно делать. (Я уже в под Виндой давно не работаю.) Но то, что я сейчас вытворяю под Линуксом, у меня вызывает такое легкое головокружение и гордость от достигаемых результатов.

UPDATE 14.10.2013

Почему мне нравится Linux

http://pingvinus.ru/note/love-linux
Advertisements

2 responses to “Применение Линукса в разработке аппаратуры для геологоразведки

  1. Рисунков не видно 😦

    • Блин! Забыл-таки нарисовать и вставить…
      Мои извинения! Может быть сегодня вечером доделаю.

      Эх! Где бы найти пару часиков дополнительного времени.
      Госпади, Госпади! Пусть у всех будет 24 часа в сутках, а у меня 26…

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s