This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM62P:TI AM62P Android 15 上的 GPIO 控制的 SELinux 策略问题

Guru**** 2574495 points
Other Parts Discussed in Thread: AM62P

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1563521/processor-sdk-am62p-selinux-policy-issue-with-gpio-control-on-ti-am62p-android-15

器件型号:PROCESSOR-SDK-AM62P
主题:AM62P 中讨论的其他器件

工具/软件:

您好、AM62P Android Champ!

本报告详细介绍了在运行 Android 15 的 TI AM62P EVM 板上尝试控制 GPIO 引脚时遇到的问题。

gpioset从控制台正确运行的命令在从init.am62x.rc脚本调用时无法执行。

由于hal_gpio_default域无法访问 GPIO 设备、因此怀疑此问题是 SELinux 策略违规造成的。

问题描述

libgiiod库存在于 TI AM62P 的 Android 15 源代码中、并且标准 GPIO 命令(如,和)gpioinfogpiogetgpioset在命令行中按预期运行。

工作命令:

gpioset gpiochip2 49=1

此命令成功控制 EVM 电路板上的 LED。

实施失败:

在中添加了一条device/ti/init.am62x.rc在引导时执行此命令的行:

exec u:r:hal_gpio_default:s0 -- /system/bin/gpioset gpiochip2 49=1

但是、此命令无法控制 LED、表明存在权限问题。

分析

该故障可能是由于 SELinux 访问控制违例所致。 hal_gpio_default域(即执行命令的环境)没有访问和操作/dev/gpiochip2设备的必要权限。

尝试通过在中添加 SELinux 策略来解决此问题/system/sepolicy/private会导致错误、表明策略规则格式不正确或放置不正确。

请求协助

我们需要有关创建允许hal_gpio_default域执行gpioset命令和控制 GPIO 引脚的 SELinux 策略的正确方法的指导。

请提供正确的 SELinux 策略规则以及将其集成到构建系统中的正确位置。 此外、如能深入了解 GPIO 器件访问所需的特定权限、敬请期待。

谢谢。
此致、  

插孔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    让我将此线程重新分配给 Android 专家。 请留出一些时间进行回复。

    谢谢、

    Anshu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、我会查看并回复您。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jack、抱歉耽误了时间、

    不建议使用从供应商 init (am62x init RC) 调用 gpioset 的方法。 供应商代码不应执行系统分区二进制文件

    我需要查看完整的 hal_gpio_default 实现、以验证已采取了哪些措施来提供更好的指导。

    我建议设置 GPIO 引脚的方法是实施 AIDL HAL、该 HAL 通过供应商二进制文件公开函数、从而向正确的端点发出 ioctl 命令。

    在这种情况下、hal_gpio_default  将是需要访问 GPIO_device:chr_file 等内容的供应商域。

    下面是 aidl 接口的示例:

     @VintfStability
     接口 IGpio{
       /**
        *设置 GPIO 引脚值
        *  
        *@参数芯片 GPIO 芯片器件路径(例如,“/dev/gpiochip2 “)
        *@参数行 GPIO 行号
        *@参数值引脚值(0 =低电平、1 =高电平)
        */
       void setGpio(在字符串芯片中,在 int 行中、在 int 值中);
     }

    就会显示 GPIO 二进制程序  

    NDK::ScopeedAStatus GPIO:::setGpio(const std::string & chip、int32_t 行、int32_t 值)  

    请分享您的 SEpolicies 和实施情况。 不应直接从供应商 INIT 调用 gpioset 命令。