У меня Raspberry Pi 3B с двумя моторами на pwmchip0 (pwm0 / pwm1).Я успешно управлял чипом pwm через sysfs, но теперь я хочу поместить его в модуль ядра.
Я видел <linux/pwm.h>
и хотел бы использовать pwm_get()
, pwm_put()
и pwm_config()
.Я нашел этот пост , а также просмотрел примеры на LXR, но это не совсем помогло мне.Я очень плохо знаком с деревьями устройств и программированием ядра в целом.Я не могу запросить pwm_device (ERR = 1), но не могу выяснить проблему.
- Что я должен указать для consumer_id?
- Есть ли у меня вообщеизменить дерево устройств или добавить статическую таблицу поиска?
Я создал наложение дерева устройств, но оно не сработало: /
/dts-v1/;
/include/ "bcm283x.dtsi"
/ {
compatible = "brcm,bcm2708";
motor-left-pwm {
compatible = "motor-left";
pwms = <&pwm 0 1000000 0>;
pinctrl-names = "default";
};
};
Я попытался добавить статическую таблицу поиска:
static struct pwm_lookup crc_pwm_lookup[] = {
PWM_LOOKUP("pwmchip0", 0, "0000:00:02.0", "pwm_left", 0>
PWM_LOOKUP("pwmchip0", 1, "0000:00:02.0", "pwm_right", >
};
pwm_add_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
Но в итоге получилось так:
WARNING: "pwm_add_table" [/home/josh/drivers/motor/motor.ko] undefined!
insmod: ERROR: could not insert module /motor.ko: Unknown symbol in module
Я прочиталгде-то это означает, что я не могу вызвать эту функцию: /