Я работаю над собственным файлом .dts для моего мыса beaglebone. Я успешно создал bsp-слой и пользовательское изображение, все работает нормально. Теперь я хочу внести изменения в дерево устройств, чтобы назначить определенные выводы своим ролям. Я использовал инструмент, предоставленный ti (pinmux). Я изо всех сил пытаюсь назначить прерывание нескольким определенным булавкам GPIO. Допустим, у меня есть это внутри моего .dtsi:
gpio0_pins_default: gpio0_pins_default {
pinctrl-single,pins = <
AM33XX_IOPAD(0x820, PIN_INPUT | MUX_MODE7) /* (U10) gpmc_ad8.gpio0[22] */
AM33XX_IOPAD(0x824, PIN_INPUT_PULLUP | MUX_MODE7) /* (T10) gpmc_ad9.gpio0[23] */
AM33XX_IOPAD(0x828, PIN_INPUT | MUX_MODE7) /* (T11) gpmc_ad10.gpio0[26] */
AM33XX_IOPAD(0x82c, PIN_INPUT | MUX_MODE7) /* (U12) gpmc_ad11.gpio0[27] */
>;
};
Теперь я хочу назначить прерывание на вывод 27 gpio0, который является активным минимумом. Как мне поступить? Я прочитал слишком много источников, предоставляющих различную информацию, и запутался, поэтому я прошу некоторого совета.
В документации по контроллеру прерываний я нашел это, но я кое-что не понимаю.
gpioext: gpio-adnp@41 {
compatible = "ad,gpio-adnp";
reg = <0x41>;
interrupt-parent = <&gpio>;
interrupts = <160 1>;
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
nr-gpios = <64>;s
Откуда исходит значение reg 41? До сих пор я думал, что это должен быть адрес определенного GPIO (например, reg = <0x4804c00 0x1000>;). Я понимаю, прерывание-клетки и прерывания объявления. Nr-gp ios = номер пина, которому я хочу назначить прерывание?
Внутри am33xx.file я нашел это объявление:
gpio0: gpio@44e07000 {
compatible = "ti,omap4-gpio";
ti,hwmods = "gpio1";
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x44e07000 0x1000>;
interrupts = <96>;
};
Но, насколько я понимаю, это всего лишь настройка для всего GPIO, верно?
Может ли кто-нибудь быть таким царем и предоставить мне пример кода для установки прерывания, скажем, для активных контактов 27 и 23 низкого уровня?
Заранее спасибо BR