複数の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
初心者として、私はこれを行う2つの方法があることを知っています。そのうちの1つは簡単です。/etc/rc5.d
最初に名前が始まる名前を指定する数字で始まるいくつかのファイルが表示され、最後の数字から始まる最初の数字から始まります。ここに最後の数字を含むスクリプトを入れてください。
vi /etc/rc5.d/S25yourScript.sh
S25が最後の数字であるとします。)ここにスクリプトを貼り付けて終了します。再起動するとスクリプトが機能します