1891ВМ12Я 0 20 марта, 2016 Опубликовано 20 марта, 2016 · Жалоба Требуется переназначить выводы P4 и P1 процессора i.MX6 Solo в качестве обычных GPIO. Прилагаю текстовую форму файла imx6dl-wandboard.dtb (по сути dts). Пока не могу найти логическую связь документации (файл IMX6SDLRM.pdf) и DTB/DTS файла. Мне вообще не понятно где в этих device tree файлах есть обозначение той или иной роли для вывода например P4? А в документации где эта связь? Там вообще нет P4 и связи с какими адресами регистров. Прошу помочь тех кому приходилось задавать настройки мультиплексирования выводов для ОС Linux, причем не только для процессоров Freescale iMX 6... imx6dl_wandboard.txt P.S. Модератору: я уверен, это скорее тема для ARM, чем для подфорума по операционным системам - там врядли кто подскажет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 20 марта, 2016 Опубликовано 20 марта, 2016 · Жалоба gpio0 = "/soc/aips-bus@02000000/gpio@0209c000"; Ктоб знал, что это вообще означает?? Больше на какие-то адреса похоже... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 20 марта, 2016 Опубликовано 20 марта, 2016 · Жалоба Ктоб знал, что это вообще означает?? Больше на какие-то адреса похоже... Ну ясно что это GPIO контроллер, их там 7. Но вывод может работать не только в режиме GPIO. Где же переключать эти роли (мультиплексирование)? Я даже отдаленно не смог понять. Может это вообще не в Device Tree файлах настраивается, хотя читал что вроде там, да и где еще по логике это может быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 33 21 марта, 2016 Опубликовано 21 марта, 2016 (изменено) · Жалоба Где же переключать эти роли (мультиплексирование)? Я даже отдаленно не смог понять. Ммм да, в platform sdk все куда понятнее, тут наверно только Jury093 подсказать может... Смотрите, в сторону IO_MUX... Изменено 21 марта, 2016 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Ммм да, в platform sdk все куда понятнее, тут наверно только Jury093 подсказать может... Смотрите, в сторону IO_MUX... не, увы Jury093 не сможет подсказать - сам не знаю, да и не требовались пины в чистом gpio mode в старых ядрах все было сильно проще - в файле борды прописывались пины в нужном режиме, потом одним чихом настраивались в нужную позу как это сделать в dts надо искать в инете, например по строке "imx6 dts gpio input" https://community.freescale.com/thread/317876 http://www.kosagi.com/w/index.php?title=De...tive_GPIO_guide Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба не, увы Jury093 не сможет подсказать - сам не знаю, да и не требовались пины в чистом gpio mode в старых ядрах все было сильно проще - в файле борды прописывались пины в нужном режиме, потом одним чихом настраивались в нужную позу Спасибо за ссылки, раз местные гуру таким не занимались через DTB файлы (а у меня выхода нет - судя по всему во всех современных ядрах будет лишь DTB - что кстати правильно) - то наверное надо попытать счастья на официальных форумах производителя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Спасибо за ссылки, раз местные гуру таким не занимались через DTB файлы (а у меня выхода нет - судя по всему во всех современных ядрах будет лишь DTB - что кстати правильно) - то наверное надо попытать счастья на официальных форумах производителя. а вам именно gpio mode? и рулить через юзерспейс из софта? иначе можно слегка упростить задачу: для вывода использовать класс gpio-led для ввода класс gpio-button (тут еще бонусом будет антидребезг) примеры можно посмотреть в соседних dts еще как вариант (не факт что сработает, в разных архитектурах по разному) - посчитать номер gpio. пример расчета есть во второй ссылке. потом примитивное echo NNN > /sys/class/gpio/export если пин читается или работает на вывод (после out > direction), то формально можно в dts и не писать и достаточно оформить настройки в загрузочном скрипте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба а вам именно gpio mode? и рулить через юзерспейс из софта? Требуется провести эксперимент - поработать с этими двумя выводами в режиме GPIO и убедиться что они рабочие вообще, затем перевести в режим IPU_CSI0 (для захвата видео). На моей плате они вообще по дефолту болтаются, поэтому проще начать с GPIO. Этот эксперимент очень важен, потому что и без того разобраться крайне затруднительно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Требуется провести эксперимент - поработать с этими двумя выводами в режиме GPIO и убедиться что они рабочие вообще, затем перевести в режим IPU_CSI0 (для захвата видео). На моей плате они вообще по дефолту болтаются, поэтому проще начать с GPIO. Этот эксперимент очень важен, потому что и без того разобраться крайне затруднительно. если контакты не задействованны в драйверах или системой, то сначала посчитайте номер и попробуйте через echo-export поконтролировать в случае неудачи проще всего задействовать как gpio-keys или gpio-leds - самый быстрый вариант проверки (там драйвера сами все настроивают, ваша задача - указать контакт) убедились, что физика пинов жива - прикрутите к CSI.. для gpio-keys или gpio-leds надо: прописать секции в dts разрешить эти драйвера через менюконфиг в ядре пересобрать ядро сложить свежесгенеренный dts + ядро + модули и перезагрузить систему (полезно под рукой иметь рабочий бекап бинарников) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MacArrow 0 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Касательно настройки pinmux, вот в этом файлике, который можно найти и в вашем ядре, объявлены макросы для всех типовых функций пинов. Формат там простой <mux_reg conf_reg input_reg mux_mode input_val>, то есть это первый источник информации, ищете указанный mux reg в manual, смотрите на значения, понимаете что оно делает. Но на самом деле имя каждого макроса уже содержит всю информацию. Теперь, как найти нужный пин, так как в вышеуказанном файлике номера пинов не используются, надо найти каноническое имя пина в мануале и по этому имени и требуемой функции выбрать уже нужный макрос. Например, возьмем MX6SL_PAD_AUD_MCLK__AUDIO_CLK_OUT. Этот макрос переводит пин AUD_MCLK в режим AUDIO_CLK_OUT Далее, этот макрос используется в описании iomux, например вот в этом файле есть такая секция в iomux: pinctrl_audmux: audmuxgrp { 100 fsl,pins = < 101 MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0 102 MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0 103 MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x110b0 104 MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0 105 >; 106 }; Очевидно, что оно включает I2S на пинах CSI0_DAT7 и тд. Что же касается цифр после макроса (0x130b0), это режим пина - гистерезис, pullup/pulldown и тп., опять же вся инфа в мануале на чип И вообще, вся вышенаписанная мудрость находится тут, как использовать - грепается в ядре Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 22 марта, 2016 Опубликовано 22 марта, 2016 · Жалоба Если вам надо просто пины на выход настроить и попробовать, то почему бы не воспользоваться встроенной в ядро функциональностью? Посмотрите в документации ядра подробности: https://www.kernel.org/doc/Documentation/gpio/sysfs.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fedor 0 24 марта, 2017 Опубликовано 24 марта, 2017 · Жалоба Возьмите ядро посвежее? Как пример.. из dts/imx6qdl-tx6.dtsi смотрел в 4.8 gpio-keys { compatible = "gpio-keys"; power { label = "Power Button"; gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>; linux,code = <KEY_POWER>; wakeup-source; }; }; leds { compatible = "gpio-leds"; user_led: user { label = "Heartbeat"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_user_led>; gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; }; }; Далее ищем в файле ссылки GPIO5, GPIO2.. pinctrl_user_led: user-ledgrp { fsl,pins = < MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x1b0b1 /* LED */ >; }; ... pinctrl_hog: hoggrp { fsl,pins = < MX6QDL_PAD_SD3_DAT2__GPIO7_IO06 0x1b0b1 /* ETN PHY RESET */ MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1b0b1 /* ETN PHY INT */ MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x1b0b1 /* PWR BTN */ >; }; и далее шерстим ./Documentation/devicetree/bindings Все логично. Ссылки compatible автоматом приходят в /sys/class/gpio /sys/class/leds. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться