//Эта страница доступна также на следующих языках:// [[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 в том, что этот формат более-менее удобочитаем. Я согласен, что это веский довод. Современный наш формат неудобочитаем для тех, кто никогда не читает документацию. Однако, наш формат --- текстовый, и он полностью документирован, так что о существенном поводе для чтения --- возможности писать скрипты для файлов --- уже позаботились. К тому же, если человек найдёт время почитать документацию о формате, он определённо в нём разберётся. Удобочитаемость для пользователя, --- не знающего формат файла, --- это то, что называется «неплохо бы иметь», что в списке моих приоритетов стоит совсем не высоко.