Использование интерфейса широтно-импульсной модуляции (PWM) в модуле ядра

Я новичок в драйвере разработки ядра, и я пытаюсь разработать модуль ядра Linux, используя информацию об этом модуле:

http://lxr.free-electrons.com/source/drivers/pwm/pwm-tiehrpwm.c

Но я не понимал, как им пользоваться. Как можно адаптировать этот модуль или лучше, как создать новый модуль, используя функции, содержащиеся в этом файле, такие как ehrpwm_pwm_config, ehrpwm_pwm_enable?

PS: Я не хочу использовать sysfs, я бы программно настроил сигнал pwm. Я использую доску Beaglebone Black с дистрибутивом Debian и cape-universaln.

Спасибо


person dczanella    schedule 13.12.2016    source источник


Ответы (1)


Вам необходимо включить CONFIG_PWM_TIEHRPWM в вашем .config файле ядра Linux. По умолчанию CONFIG_PWM_TIEHRPWM is not set, и вам нужно включить его как CONFIG_PWM_TIEHRPWM=y, если вы хотите построить его как часть образа ядра, или как CONFIG_PWM_TIEHRPWM=m, если вы хотите собрать его как LKM.

Затем соберите ядро ​​как make -j12 и insmod свой модуль как:

#insmod /lib/modules/$uname -r/drivers/pwm/pwm_tiehrpwm.ko, если вы построили его как LKM. Проверьте Linux kernel documentation, как настроить pwm!

person Sachin Mokashi    schedule 14.12.2016
comment
@ sachinmokashi. Я уже сделал этот шаг. Этот модуль успешно загружен в ядро. Моя проблема в том, как я могу его использовать? Я проверяю документацию по Linux, но там нет четких объяснений. Я не знаю, как создать его экземпляр в другом модуле и использовать определенные там функции. У тебя есть совет? - person dczanella; 14.12.2016
comment
Вам необходимо использовать макрос EXPORT_SYMBOL_GPL (), чтобы использовать функции в другом модуле. Я предлагаю вам прочитать ссылку, главу 2, для лучшего понимания программирования ядра Linux. - person Sachin Mokashi; 14.12.2016
comment
Поэтому мне нужно перекомпилировать этот модуль, чтобы включить EXPORT_SYMBOL для каждой функции, которую я хочу использовать. Что означает эта структура? static const struct pwm_ops ehrpwm_pwm_ops = {...} в строке 417 файла Как работает эта структура? Я думал, что можно вызывать эти функции через его. - person dczanella; 14.12.2016
comment
@SachinMokashi, нет, в ядре есть общедоступный API для использования ШИМ. - person 0andriy; 22.12.2016