//Эта страница доступна также на следующих языках:// [[usage|English]],
[[usage.fr|Français]].

====== Каков наилучший способ научиться работать в gEDA? ======
Первое, что нужно сделать, это прочитать и понять превосходный учебник
[[geda:gsch2pcb_tutorial.ru|gschem -> gsch2pcb -> pcb]] от //Bill Wilson//
и/или [[http://www.delorie.com/pcb/docs/gs/gs.html|Введение в pcb]] от //DJ
Delorie//.  Это база для начала работы.

Непременно посмотрите также и другую [[geda:documentation.ru|документацию
gEDA]], доступную на этом веб-сайте.

Но всё же лучший способ изучить комплекс gEDA Suite --- загрузить его и
попробовать самому! Если вы будете держать под рукой учебник от //Bill
Wilson//, пробуя работать с программами, то очень быстро станете экспертом!

====== Как выглядит маршрут проектирования в gEDA? ======
Вот небольшая диаграмма разработки простой печатной платы с помощью gEDA
Suite:

{{:geda:design_flow.ru.png}}

Вкратце [[geda:glossary.ru#маршрут проектирования]] простой печатной платы таков:
  - Создаёте свою [[geda:glossary.ru#Принципиальная схема|принципиальную схему]] в **gschem**.
  - Проверяете её с помощью драйвера [[geda:glossary.ru#Проверка соответствия проектным нормам|проверки соответствия проектным нормам]]. Научиться этому можно [[geda:faq-gnetlist.ru#как_мне_проверить_свои_схемы|здесь]].
  - Задаёте позиционные обозначения для своих компонентов с помощью **grenum** или **refdes_renum** или просто добавляете их вручную в **gschem**.
  - Устанавливаете для компонентов прочие [[geda:glossary.ru#Атрибут|атрибуты]] в **gattrib** (такие как, например, ''footprint'' для назначения посадочных мест) или просто добавляете их в **gschem** вручную.
  - С помощью **gsch2pcb** создаёте файл заготовки [[geda:glossary.ru#Топология|топологии]] печатной платы и [[geda:glossary.ru#список соединений]].
  - В **pcb** производите [[geda:glossary.ru#Компоновка|компоновку]] и [[geda:glossary.ru#Трассировка|трассировку]] платы.
  - Производите в **pcb** экспорт [[geda:glossary.ru#Gerber-файлы|Gerber-файлов]] из меню **//Файл//** -> **//Экспорт топологии...//** [**//File//** -> **//Export layout...//**] (выбираете тип файла «gerber»).

Если в процессе работы над топологией вы что-то меняете или добавляете в своей принципиальной схеме, или изменяете там атрибуты, обновить плату можно следующим образом:
  - Редактируете свою схему и (или) атрибуты (в **gschem** или в **gattrib**).
  - Проверяете её с помощью драйвера проверки соответствия проектным нормам. Научиться этому можно [[geda:faq-gnetlist.ru#как_мне_проверить_свои_схемы|здесь]].
  - С помощью **gsch2pcb** транслируете свои изменения в файл топологии.
  - Обновляете свои компоненты в **pcb**, выбирая пункт меню **//Файл//** -> **//Загрузить топологию в буфер обмена//** [**//File//** -> **//Load layout data to paste-buffer//**], и затем щёлкаете на области чертежа, чтобы разместить компоненты.
  - Обновляете свой список соединений в **pcb**, выбирая пункт меню **//Файл//** -> **//Загрузить список соединений//** [**//File//** -> **//Load netlist file//**].

Обычно пользователи вызывают отдельные программы из командной
строки. Менеджер проектов (**geda**) существует, но нуждается в улучшении.

====== Есть ли ограничения у программ gEDA? ======
Самое главное, что надо иметь в виду при разговоре об ограничениях gEDA: gEDA --- это проект разработки программного обеспечения с открытым исходным кодом. В нём есть некоторые ограничения, но эти ограничения не искусственные, не специальные и не установленные торговцами. То есть, gEDA --- это программное обеспечение ни с надоедливыми требованиями регистрации, ни с ограничениями функциональных возможностей, ни демонстрационное, ни «редакция с ограничениями для студентов». Все ограничения, имеющиеся в системе gEDA, обусловлены только тем, что программисты пока не реализовали какие-то отдельные возможности. Так как исходные тексты открыты для всех, и их можно посмотреть и изменить, мы рады каждому, кто сможет воплотить новую возможность или устранить ограничение и предложит проекту свои заплаты. Если вы --- программист, и в ваших интересах помочь проекту gEDA, обдумайте возможность взяться за устранение одного из ограничений, указанных ниже! Вы найдёте много друзей и покажете себя миру!
  * Поддержка иерархических шин: поддержки иерархических шин всё ещё нет.
  * Атрибуты ''net'' и ''pin'' в **gattrib**: добавление атрибутов трассировки для соединений и выводов в **gattrib** остаётся «тем, что надо ещё сделать». (Атрибуты ''net'' полезны для проектов быстродействующих устройств. Часто важно, например, чтобы все дорожки в шине имели одинаковую электрическую длину. К сожалению, не ясно, сможет ли **pcb** поддерживать такие атрибуты трассировки сразу.)
  * Обратное аннотирование изменений из **pcb** в **gschem**. Поддержка [[geda:glossary.ru#Перестановка выводов компонента|перестановки выводов]] и модификации файла разработки в **pcb** с последующим обратным аннотированием изменений в **gschem** остаётся «тем, что надо сделать».
  * Менеджер проектов **geda** устарел и нуждается в обновлении.
  * Количество слоёв в **pcb**: в настоящее время количество слоёв в **pcb** ограничено шестнадцатью плюс два [[geda:glossary.ru#Слой шелкографии|слоя шелкографии]] по умолчанию. Этого более чем достаточно для проектов небольшого и среднего размера. Если нужно, количество слоёв может быть увеличено произвольно во время компиляции.

====== Какие локальные файлы конфигурации используются в проекте? ======
Для обычного проекта разработки печатной платы в локальном каталоге этого проекта должны быть следующие файлы конфигурации:
  * //''gafrc''//: содержит настройки программ gEDA/gaf (т. е. **gschem**, **gattrib**, **gnetlist** и т. д.). Также он должен содержать указание на локальный каталог ваших символов (если таковой имеется).
  * //''attribs''//: если для создания [[geda:glossary.ru#Перечень элементов|перечня элементов]] проекта вы используете **''gnetlist -g bom2''**, то в данном файле указываются те атрибуты, что должны содержаться в этом перечне.
  * //''projectrc''//: при переходе к [[geda:glossary.ru#Проектирование топологии|разработке топологии]] печатной платы удобным способом указания путей доступа к локальным каталогам, содержащим файлы посадочных мест, и другой конфигурационной информации для **gsch2pcb** будет команда **''gsch2pcb projectrc''**. Обратите внимание, что для данного файла можно выбрать любое имя; мне нравится //''projectrc''//, потому что это имя указывает его функцию.

Более подробное описание каждого из конфигурационных файлов приведено в
[[geda:documentation.ru|документации]] для соответствующих программ.



====== Как называются и где находятся rc-файлы, используемые приложениями gEDA/gaf? ======
Для задания разных параметров конфигурации в различных приложениях gEDA/gaf (**gschem**, **gattrib**, **gnetlist** и других) используется несколько rc-файлов. Эти файлы читаются каждым из этих приложений при их запуске. Концептуально поиск rc-файлов приложениями gEDA/gaf производится в трёх местах:
  * В каталоге установки системы: //''${prefix}/share/gEDA/''//. Здесь находятся глобальные rc-файлы, то есть общие для всей системы и всех пользователей. Чтобы приложение gEDA работало правильно, эти файлы должны быть найдены и загружены без ошибок. //''${prefix}''// представляет собой путь доступа к каталогу установки gEDA/gaf.
  * В домашнем каталоге пользователя: //''$HOME/.gEDA/''//. Настройки rc-файлов, находящихся в этом каталоге, действуют на все проекты пользователя. Иметь эти файлы необязательно. Создавать их простым копированием системных файлов (например, //''system-gschemrc''// или какого-то другого файла) не следует, надлежащим образом это работать не будет. Правильнее будет указать в них только те настройки, которые вам хотелось бы изменить.
  * В локальном каталоге проекта. Здесь находятся rc-файлы, относящиеся к локальному проекту (находящемуся в этом же каталоге). В этих файлах определяются особые настройки, такие как пути доступа к локальным библиотекам символов или [[gEDA:glossary.ru#Библиотека исходных данных|исходных данных]]. Иметь эти файлы тоже необязательно. Создавать их простым копированием системных файлов (например, //''system-gschemrc''// или какого-то другого файла) не следует, надлежащим образом это работать не будет.

Система rc-файлов со временем претерпела изменения. Сначала для каждого приложения  gEDA/gaf использовались свои собственные rc-файлы (например, //''gschemrc''// для программы **gschem**, //''gnetlistrc''// --- для **gnetlist** и т. д.). Однако с ростом количества приложений gEDA/gaf стало выясняться, что отдельные rc-файлы содержат много лишней информации и что все эти разные rc-файлы сбивают новых пользователей с толку.  Поэтому отдельные rc-файлы были объединены в один, названный //''gafrc''//.  Однако, ввиду того что для **gschem** необходимы разнообразные специальные настройки, мы решили наряду с файлами //''gafrc''// оставить дополнительно системный файл //''gschemrc''//. А также с целью обратной совместимости всё ещё поддерживается старая система rc-файлов в системном каталоге. Поэтому текущая конфигурация rc-файлов выглядит примерно так:
  * В каталоге установки системы:
    * //''system-gafrc''// -- содержит большинство глобальных настроек **gaf**
    * //''system-gattribrc''//
    * //''system-gnetlistrc''//
    * //''system-gschemrc''// -- содержит множество **gschem**-специфичных настроек
    * //''system-gschlasrc''//
    * //''system-gsymcheckrc''//
  * В пользовательском каталоге //''${HOME}''//:
    * //''.gEDA/gafrc''//
  * В каталоге локального проекта:
    * //''gafrc''// -- должен содержать локальные переопределения настроек, как например ссылки на локально используемые символы.

Также в //''system-gschemrc''// производится загрузка определений цветов
''gschem-darkbg'' или ''gschem-lightbg''.

Наконец, обратите внимание, что приложения gEDA/gaf при запуске будут искать до шести файлов конфигурации:
  - //''system-gafrc''//
  - //''system-gschemrc''// (или какой-то другой файл)
  - //''${HOME}/.gEDA/gafrc''//
  - //''${HOME}/.gEDA/gschemrc''// (или какой-то другой файл)
  - //''./gafrc''//
  - //''./gschemrc''// (или какой-то другой файл)

Если вы видите предупреждение, что ваше приложение не может найти какой-либо
из этих файлов, не волнуйтесь. Большинство из них необязательны. Необходимы
только системные rc-файлы.

====== Как насчёт менеджера проектов? ======
В отдельных компонентах gEDA Suite нет концепции сквозного проектирования.
Точнее, каждая из программ работает со своими собственными файлами
(например, **gschem** -> //''.sch''//, **pcb** -> //''.pcb''//). Но
существует менеджер проектов под названием **geda**, который можно запустить
из командной строки.  Он призван помочь вам обращаться со своим проектом как
с единым целым от исходной идеи и далее при
[[geda:glossary.ru#Схемотехническое проектирование|схемотехническом
проектировании]], добавлении [[geda:glossary.ru#Атрибут|атрибутов]],
[[geda:glossary.ru#Проектирование топологии|разработке топологии]], создании
перечня элементов и т. д.

К сожалению, разработка **geda** не ведётся наравне с остальными программами
в gEDA/gaf. В частности, в **geda** не используются последние средства или
методы выполнения отдельных задач проектирования. Поэтому мы рекомендуем
пользователям запускать отдельные программы (например, **gschem**,
**gattrib**, **gnetlist**, **gsch2pcb** и т. д.) просто из командной
строки.  Между тем, если вы --- программист, и ищете, за какой небольшой
проект бы взяться, отделка **geda** могла бы стать неплохим введением в gEDA
Suite, и при этом вы нашли бы много друзей!

====== Можем ли мы заменить используемый в gEDA формат файлов на XML? ======
Дебаты об использовании XML в качестве формата файлов в рассылке
//geda-user// возникают периодически, каждые 2-3 года. Я думаю, это
показывает, насколько быстро мы теряем свою общественную память из-за
мешанины в списке рассылки.

Вряд ли проект gEDA когда-нибудь перейдёт на формат XML для схем и символов,
так что привыкайте к этому. Несколько доводов против XML:

  - В gEDA/gaf уже есть неизменный, хорошо документированный текстовый формат. На 2007 год ему уже больше 8 лет. Он хорош в использовании и как следует протестирован.
  - Для своего формата файлов у нас уже есть парсер. Он лёгок и вполне отлажен.
  - Есть множество давно развиваемых проектов, в которых этот формат уже используется. Все начнут вопить, если мы переключимся на новый формат, так как имеющиеся проекты сразу устареют. А поддерживать два формата файлов --- старый и новый --- весьма накладно.
  - XML --- это обобщённый формат. Поэтому XML-файлы имеют склонность жиреть, как свиньи. Формат файла gEDA и лёгок, и хорошо адаптирован для своей цели --- представления графической информации, относящейся к принципиальным схемам для электроники.
  - Одно из якобы преимуществ XML в том, что для него есть много парсеров с открытым кодом, что позволяет очень просто интегрировать его в **libgeda**. Это в теории, а на практике работа парсера состоит в анализе и обработке входных данных и затем в преобразовании их в структуры данных, пригодные для использования в остальном коде **gschem**. Открытый парсер делает около трети нужной работы, то есть производит чтение и анализ файлов и создаёт своего рода иерархическое дерево. В остальную часть работы входит перевод данных из этого дерева в структуры данных **libgeda**. Это очень большой объём работы. Поэтому такое якобы преимущество свободно доступных XML-парсеров --- химера. Да, XML может быть интересен для новой, написанной с нуля программы, но не для такого давно существующего проекта, как gEDA.
  - Время разработчика gEDA лучше использовать для реализации новой функциональности, например, обратного аннотирования. Трата времени на замену нашего формата файла на XML --- это шаг в сторону, который не принесёт больше пользы конечным пользователям, но отнимет ценное время у разработчика.
  - Другое преимущество XML в том, что этот формат более-менее удобочитаем. Я согласен, что это веский довод. Современный наш формат неудобочитаем для тех, кто никогда не читает документацию. Однако, наш формат --- текстовый, и он полностью документирован, так что о существенном поводе для чтения --- возможности писать скрипты для файлов --- уже позаботились. К тому же, если человек найдёт время почитать документацию о формате, он определённо в нём разберётся. Удобочитаемость для пользователя, --- не знающего формат файла, --- это то, что называется «неплохо бы иметь», что в списке моих приоритетов стоит совсем не высоко.
