# Каков наилучший способ научиться работать в gEDA?

Первое, что нужно сделать, это прочитать и понять превосходный учебник gschem -> gsch2pcb -> pcb от Bill Wilson и/или Введение в pcb от DJ Delorie. Это база для начала работы.

Непременно посмотрите также и другую документацию gEDA, доступную на этом веб-сайте.

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

# Как выглядит маршрут проектирования в gEDA?

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

Вкратце маршрут проектирования простой печатной платы таков:

1. Создаёте свою принципиальную схему в gschem.
2. Проверяете её с помощью драйвера проверки соответствия проектным нормам. Научиться этому можно здесь.
3. Задаёте позиционные обозначения для своих компонентов с помощью grenum или refdes_renum или просто добавляете их вручную в gschem.
4. Устанавливаете для компонентов прочие атрибуты в gattrib (такие как, например, `footprint` для назначения посадочных мест) или просто добавляете их в gschem вручную.
5. С помощью gsch2pcb создаёте файл заготовки топологии печатной платы и список соединений.
6. В pcb производите компоновку и трассировку платы.
7. Производите в pcb экспорт Gerber-файлов из меню Файл → Экспорт топологии… [File → Export layout…] (выбираете тип файла “gerber”).

Если в процессе работы над топологией вы что-то меняете или добавляете в своей принципиальной схеме, или изменяете там атрибуты, обновить плату можно следующим образом:

1. Редактируете свою схему и (или) атрибуты (в gschem или в gattrib).
2. Проверяете её с помощью драйвера проверки соответствия проектным нормам. Научиться этому можно здесь.
3. С помощью gsch2pcb транслируете свои изменения в файл топологии.
4. Обновляете свои компоненты в pcb, выбирая пункт меню Файл → Загрузить топологию в буфер обмена [File → Load layout data to paste-buffer], и затем щёлкаете на области чертежа, чтобы разместить компоненты.
5. Обновляете свой список соединений в pcb, выбирая пункт меню Файл → Загрузить список соединений [File → Load netlist file].

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

# Есть ли ограничения у программ gEDA?

Самое главное, что надо иметь в виду при разговоре об ограничениях gEDA: gEDA — это проект разработки программного обеспечения с открытым исходным кодом. В нём есть некоторые ограничения, но эти ограничения не искусственные, не специальные и не установленные торговцами. То есть, gEDA — это программное обеспечение ни с надоедливыми требованиями регистрации, ни с ограничениями функциональных возможностей, ни демонстрационное, ни “редакция с ограничениями для студентов”. Все ограничения, имеющиеся в системе gEDA, обусловлены только тем, что программисты пока не реализовали какие-то отдельные возможности. Так как исходные тексты открыты для всех, и их можно посмотреть и изменить, мы рады каждому, кто сможет воплотить новую возможность или устранить ограничение и предложит проекту свои заплаты. Если вы — программист, и в ваших интересах помочь проекту gEDA, обдумайте возможность взяться за устранение одного из ограничений, указанных ниже! Вы найдёте много друзей и покажете себя миру!

- Поддержка иерархических шин: поддержки иерархических шин всё ещё нет.
- Атрибуты `net` и `pin` в gattrib: добавление атрибутов трассировки для соединений и выводов в gattrib остаётся “тем, что надо ещё сделать”. (Атрибуты `net` полезны для проектов быстродействующих устройств. Часто важно, например, чтобы все дорожки в шине имели одинаковую электрическую длину. К сожалению, не ясно, сможет ли pcb поддерживать такие атрибуты трассировки сразу.)
- Обратная трансляция изменений из pcb в gschem. Поддержка перестановки выводов и модификации файла разработки в pcb с последующей обратной трансляцией изменений в gschem остаётся “тем, что надо сделать”.
- Менеджер проектов geda устарел и нуждается в обновлении.
- Количество слоёв в pcb: в настоящее время количество слоёв в pcb ограничено шестнадцатью плюс два слоя шелкографии по умолчанию. Этого более чем достаточно для проектов небольшого и среднего размера. Если нужно, количество слоёв может быть увеличено произвольно во время компиляции.

# Какие локальные файлы конфигурации используются в проекте?

Для обычного проекта разработки печатной платы в локальном каталоге этого проекта должны быть следующие файлы конфигурации:

- `gafrc`: содержит настройки программ gEDA/gaf (т. е. gschem, gattrib, gnetlist и т. д.). Также он должен содержать указание на локальный каталог ваших символов (если таковой имеется).
- `attribs`: если для создания перечня элементов проекта вы используете `gnetlist -g bom2`, то в данном файле указываются те атрибуты, что должны содержаться в этом перечне.
- `projectrc`: при переходе к разработке топологии печатной платы удобным способом указания путей доступа к локальным каталогам, содержащим файлы посадочных мест, и другой конфигурационной информации для gsch2pcb будет команда `gsch2pcb projectrc`. Обратите внимание, что для данного файла можно выбрать любое имя; мне нравится `projectrc`, потому что это имя указывает его функцию.

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

# Как называются и где находятся 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-файлы, относящиеся к локальному проекту (находящемуся в этом же каталоге). В этих файлах определяются особые настройки, такие как пути доступа к локальным библиотекам компонентов или исходным данным. Иметь эти файлы тоже необязательно. Создавать их простым копированием системных файлов (например, `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 при запуске будут искать до шести файлов конфигурации:

1. `system-gafrc`
2. `system-gschemrc` (или какой-то другой файл)
3. `${HOME}/.gEDA/gafrc`
4. `${HOME}/.gEDA/gschemrc` (или какой-то другой файл)
5. `./gafrc`
6. `./gschemrc` (или какой-то другой файл)

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

# Как насчёт менеджера проектов?

В отдельных компонентах gEDA Suite нет концепции сквозного проектирования. Точнее, каждая из программ работает со своими собственными файлами (например, gschem → `.sch`, pcb → `.pcb`). Но существует менеджер проектов под названием geda, который можно запустить из командной строки. Он призван помочь вам обращаться со своим проектом как с единым целым от исходной идеи и далее при схемотехническом проектировании, добавлении атрибутов, разработке топологии, создании перечня элементов и т. д.

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

# Можем ли мы заменить используемый в gEDA формат файлов на XML?

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

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

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