여러 UART에 액세스할 수 있도록 BeagleBone에 pinmux를 설정하는 중입니다. 운영 체제는 Angstrom Linux입니다(도움이 되는 경우 데모 이미지). 쉘 스크립트가 있습니다.
#!/bin/sh
echo "Configuring Pinmux"
echo 0 > /sys/kernel/debug/omap_mux/uart1_txd
echo 20> /sys/kernel/debug/omap_mux/uart1_rxd
echo "UART 1 (TX):"
cat /sys/kernel/debug/omap_mux/uart1_txd
echo
echo "UART 1 (RX):"
cat /sys/kernel/debug/omap_mux/uart1_rxd
echo
echo 1 > /sys/kernel/debug/omap_mux/spi0_d0
echo 21> /sys/kernel/debug/omap_mux/spi0_sclk
echo "UART 2 (TX):"
cat /sys/kernel/debug/omap_mux/spi0_d0
echo
echo "UART 2 (RX):"
cat /sys/kernel/debug/omap_mux/spi0_sclk
echo
사용할 UARTS를 설정합니다. 이제 시작할 때마다 이 스크립트를 실행하여 매번 엉망으로 만들 필요가 없도록 하고 싶습니다. 이를 수행하려면 어디에 배치하거나 링크를 만들어야 합니까?
답변1
방금 Angstrom Linux를 확인했는데 Debian 기반이므로 다음 줄을 복사하여 /etc/rc.local
작업하세요.
echo 0 > /sys/kernel/debug/omap_mux/uart1_txd
echo 20> /sys/kernel/debug/omap_mux/uart1_rxd
echo 1 > /sys/kernel/debug/omap_mux/spi0_d0
echo 21> /sys/kernel/debug/omap_mux/spi0_sclk
답변2
그래서 많은 탐색 끝에 올바른 방법을 찾았습니다. Angstrom은 부팅 시 systemd를 사용하여 작업을 시작하므로 /etc/rc*에 작업을 넣습니다.N*.d가 제대로 작동하지 않습니다. 대신 서비스를 생성하고 이에 대해 systemd에 알리면 자동으로 실행됩니다.
/lib/systemd/system에서 pinmux.service라는 파일을 만들었습니다.
[Unit]
Description=Setting up Pinmux
[Service]
ExecStart = /home/**username**/pinmux.sh
[Install]
WantedBy=multi-user.target
이것은 내 홈 디렉토리에 있는 pinmux.sh라는 쉘 스크립트를 호출하는데, 이는 내 질문에 설명된 대로 모든 설정을 수행합니다.
활성화하려면 먼저 전화를 걸고 systemctl enable pinmux.service
나서 전화하세요
systemctl start pinmux.service
.
이제 시작 시 스크립트가 호출됩니다.
답변3
초보자로서 저는 이 작업을 수행하는 두 가지 방법이 있다는 것을 알고 있습니다. 그 중 하나는 간단합니다. /etc/rc5.d
이름이 누가 먼저 시작할 것인지 지정하는 숫자로 시작하는 일부 파일을 볼 수 있으며 마지막 숫자부터 시작하는 첫 번째 숫자부터 시작합니다. 여기에 마지막 숫자를 포함한 스크립트를 넣으세요.
vi /etc/rc5.d/S25yourScript.sh
S25가 마지막 숫자라고 가정합니다 :) 여기에 스크립트를 붙여넣고 종료하세요. 재부팅하면 스크립트가 작동합니다