В Beaglebone Black rev C отсутствуют файлы системных каталогов (для доступа к выводам PWM)
Поэтому я пытаюсь настроить свой черный beaglebone так, чтобы я мог получить доступ к контактам ШИМ. Первоначально я следовал этому уроку, но он подсказывает мне доступ к ocp-файлу, которого нет у моего beaglebone.
debian@beaglebone:/sys/devices$ ls
armv7_cortex_a8 breakpoint platform soc0 software system tracepoint virtual
Я посмотрел несколько других руководств, и все они говорят то же самое. В конечном итоге я смогу зайти в свою папку pwm и экспортировать пин-код (используя файлы экспорта / неэкспорта), но этого также не хватает.
debian@beaglebone:/sys/class/pwm$ ls
pwm-0:0 pwm-0:1 pwm-2:0 pwm-2:1 pwm-4:0 pwm-4:1 pwmchip0 pwmchip2 pwmchip4
Я могу использовать контакты GPIO очень хорошо, и я запускаю образ по умолчанию, найденный здесь. Он сделан без графического интерфейса и основан на версии ядра Debian 9.5 4.14.71-ti-r80
Было бы полезно любое понимание этого, в том числе общее устранение неполадок, пакеты, которые мне может понадобиться установить, или вещи, которые я могу сделать, чтобы мой образ снова заработал. Я не хочу прошивать новую версию Debian на мою beaglebone, так как я скомпилировал на нее несколько двоичных файлов, и для компиляции и установки некоторых библиотек, которые я использую (в частности, opencv), требуются десятки часов.
Спасибо за вашу помощь!
0 ответов
Так что я думаю, что смог понять это.
Начиная с версии 4.14 ядра linux, началось изменение аппаратных оверлеев для вывода pwm; с тех пор он прошел незначительные изменения, но в основном остался прежним. То, что я использовал, я смотрел на версию до 4.14.
Я нашел этот вопрос переполнения стека, который похож на мой, и объясняет, как работает новая система. По большей части он точен, однако я использую v4.19, и имена файлов больше не являются pwm0 или pwm1, а являются pwm0:0 или pwm0:1.
По сути, этот вопрос связан с примером github от beaglebone, в котором изложено, как они хотят, чтобы вы его использовали, и на который стоит обратить внимание. Но подведем итог можно запустить
debian@beaglebone:/sys/class/pwm$ ls -lh
total 0
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-0:0 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0/pwm-0:0
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-0:1 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0/pwm-0:1
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-2:0 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2/pwm-2:0
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-2:1 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2/pwm-2:1
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-4:0 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4/pwm-4:0
lrwxrwxrwx 1 root root 0 Nov 3 2016 pwm-4:1 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4/pwm-4:1
lrwxrwxrwx 1 root root 0 Jan 1 2000 pwmchip0 -> ../../devices/platform/ocp/48300000.epwmss/48300200.pwm/pwm/pwmchip0
lrwxrwxrwx 1 root root 0 Jan 1 2000 pwmchip2 -> ../../devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2
lrwxrwxrwx 1 root root 0 Jan 1 2000 pwmchip4 -> ../../devices/platform/ocp/48304000.epwmss/48304200.pwm/pwm/pwmchip4
Который дает вам местоположение всех выводов ШИМ (за исключением вывода 42; я не знаю, как добраться до этого). Например, чтобы включить контакт 14, вы можете запустить
export ehrpwm1=/sys/devices/platform/ocp/48302000.epwmss/48302200.pwm/pwm/pwmchip2
echo 0 > ${ehrpwm1}/export || true
echo 20000 > ${ehrpwm1}/pwm2:0/period
echo 10000 > ${ehrpwm1}/pwm2:0/duty_cycle
echo 1 > ${ehrpwm1}/pwm2:0/enable
Я слышал эти изменения от платы к плате, хотя, так что я последую примеру и убедимся, что структура вашей папки выстроена в линию.
Я также написал библиотеку для использования выводов pwm, если вам интересно, это то, что я использую, и она работала хорошо. Я отмечу, однако, что я не пробовал его на других версиях beaglebone, но он хорошо работает для ядра Linux версии 4.19 https://github.com/Haxonek/wiringbeaglelite