1

在我工作的项目中,我使用在 Android 上运行的 Beaglebone black。我需要使用UART1。据我了解,我必须配置 UART1 的模式。它必须是 MODE0。我可以通过 adb 使用以下命令进行操作:

回声 20 > /sys/kernel/debug/omap_mux/uart1_rxd

回声 0 > /sys/kernel/debug/omap_mux/uart1_txd

一切正常。但真正的问题是,我必须在应用程序内部进行此配置,我正在编码。但是我没有执行这些shell命令的权限,因为我没有root。所以:

1)我怎样才能让我的 beaglebone black 执行这些 shell 命令?

2)或者有没有办法授予写入这些文件的权限?我可以通过 adb 执行 chmod 777 /sys/kernel/debug/omap_mux/uart1_rxd 并在我的应用程序中拥有写权限。但这当然不是一个解决方案,因为当 beaglebone 重新启动时,权限会丢失。

只是我想使用 UART1(或任何其他 UART)进行串行通信。但是所有的 shell 命令都必须在我的应用程序中执行。我怎样才能做到这一点?

4

1 回答 1

1

我找到了解决方案。我将它发布给任何可能需要它的人。

1) 将具有 Android 映像的 SD 卡安装到您的 PC

2)打开控制台并挂载rootfs分区

3) 使用 nano 命令打开 init.rc

nano init.rc

4)有shell命令,在引导部分运行。将以下 shell 命令添加到您选择的位置:

chmod 0666 /sys/kernel/debug/omap_mux/uart1_rxd
write 20 /sys/kernel/debug/omap_mux/uart1_rxd 20
chmod 0666 /sys/kernel/debug/omap_mux/uart1_txd
write 0 /sys/kernel/debug/omap_mux/uart1_txd 0

5) 保存文件并使用 SD 卡启动 Beaglebone。

现在您有权读取/写入 /sys/kernel/debug/omap_mux/uart1_txd 和 /sys/kernel/debug/omap_mux/uart1_rxd。并且它们的模式设置为 MODE0。

于 2013-10-30T13:51:30.847 回答