Я пытаюсь заставить оценочную плату Maxim14830 работать с моим SOM Emcraft STM32F4. На моем SOM работает ядро Emcraft uClinux 2.0.0 (взято из ядра 4.4) на github здесь (у меня есть планы попробовать это и с версией ядра 4.5).
Драйвер не регистрирует 4 устройства ttyMAX [n]. При дальнейшей проверке ни один из кодов драйвера max310x.c фактически не выполняется на основании добавленных мною printk. Я бы по крайней мере ожидал, что функция зонда запустится во время загрузки.
Исходный код на github для драйвера maxim14830 (протокол?) Находится здесь max310x.c
Исходный код github для драйвера spi (контроллера?) Находится здесь spi-stm32.c
Мне удалось добавить устройство spidev, так что я считаю, что это проблема, уникальная для maxim14830.
Я вижу здесь spi-устройство:
/sys/devices/platform/soc/40003800.spi/spi_master/spi1/spi1.0 # cat modalias
spi:maxim14830
Я вижу драйвер max310x здесь:
/sys/bus/spi/drivers/max310x
Я вижу следующие записи в devicetree:
/sys/firmware/devicetree/base/soc/spi@40003800/max14830@0 # cat compatible
maxim,maxim14830
/sys/firmware/devicetree/base/clocks/osc_max14830
Мой девичник выглядит так:
&spi_2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi_2>;
cs-gpios = <&gpiob 9 OUT>;
timeouts = <3>;
max14830: max14830@0 {
status = "okay";
compatible="maxim,maxim14830";
reg = <0>;
gpio-controller;
#gpio-cells = <2>;
spi-max-frequency = <20000000>;
interrupt-parent = <&exti>;
interrupts = <10>;
clocks = <&spi_uart_clk>;
clock-names = "xtal";
};
spidev: spidev@2 {
status = "disabled";
compatible = "linux,spidev";
spi-max-frequency = <20000000>;
reg = <0>;
};
};
Я могу скомпилировать свой блоб дерева устройств и нормально запустить соответствующий образ linux. Из моих printk'ов stm32_spi_probe вызывается из «драйвера контроллера», но, насколько мне известно, код драйвера max310x.c не вызывается после ..
Куда мне идти, чтобы отладить это дальше? Это мой первый встроенный проект Linux, и я мог бы использовать некоторые указатели ..