我正在努力在 BeagleBone 上设置 pinmux,以便可以访问多个 UART。操作系统是 Angstrom Linux(演示映像,如果有帮助的话)。我有一个 shell 脚本:
#!/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 的 shell 脚本,该脚本会执行所有设置,如我的问题中所述。
要启用它,请先调用systemctl enable pinmux.service
,然后调用
systemctl start pinmux.service
。
现在,该脚本将在启动时被调用。
答案3
作为一个新手,我知道有两种方法可以做到这一点,其中一种很简单:/etc/rc5.d
您可以看到一些文件,其名称以一些数字开头,这些数字指定谁将首先开始,并且它们分别从第一个数字到最后一个数字开始。将您的脚本与最后一个数字放在此处:
vi /etc/rc5.d/S25yourScript.sh
我假设 S25 是最后一个数字:) 将您的脚本粘贴到此处并退出。当你重新启动后,你的脚本就会工作