Хотел подергать ноги по средствам #include <gpio.h> но не понял как эту библиотеку, и главное, какую прикрутить. Все перекрутил, никак не пойму: использовать родную линуксовую или для конкретной железяки?! В линуксе есть "родная" собранная библиотека. Для железяк есть исходники библиотек, как бы и собрать не сложно, но одно смущает для какой железяки собирать??? Порылся, исходнников нет ни для iMXxxx ни для STMP3xxx, хотя для STMP3xxx есть gpio.h. Или можно использовать линуксовую? Может кто сталкивался???? Линукс на стационарном ПК.
Я ничего не понял - особенно последнее предложение. Для gpio в ядре linux есть вполне себе универсальный интерфейс о котором вы можете прочитать в Documentation/gpio.txt в исходниках ядра - это справедливо в том числе и для imx233.
Если вы не нашли исходники в ядре - это не значит что их там нет :) Посмотрите файл linux-2.6.31/arch/arm/plat-stmp3xxx/pinmux.c - в этом файле и реализованы все низкоуровневые ф-ции работы с gpio для платформы stmp3xxx.
Как я понимаю, под каждую архитектуру пишется своя библиотека (хотя понимаю я плохо). Если у меня собрана библиотека, которую я хочу использовать, под другую архитектуру (i386) могу ли я ее использовать при кросплатформенной компиляции для приложений запущенных на ARM9 или необходимо собирать такую библиотеку из сырцов для каждого камушка??? - Это и был мой вопрос:)
Понадобилось дернуть пару раз ноги, так как писать ничего своего не предполагалось а нужно всего лишь при необходимости сделать сброс по питанию внешнего устройства на USB, то решил оформить это дело через sysfs - к счастью в ядре 2.6.31 этот интерфейс уже реализован. Что имеем:
1 Определился с ногой которой буду управлять - это MK_P91 по схеме, она же PWM2/GPMI_RDY3 (Она же Элла Кацнельбоген... Она же Светлана Агуреева... Она же Валентина Панеят. Проверяй, Шарапов! :-) на контроллере (свободна в моем случае для использования)
2 Включил в ядре интерфейс sysfs для gpio
3 Пересобрал и загрузился с новым ядром.
Это я подключил интерфейс для gpio с номер 60 (это наш pwm2 если смотреть pins.h) gpio настроен на ввод.
Перевел gpio на вывод и подергал уровни - все работает судя по вольтметру :)