|
|
本帖最后由 xusheng 于 2025-4-10 17:24 编辑
硬件平台:Hi3751V352
软件版本:Android 9
1. 问题
客户在调试视频问题时,需要将VPSS模块输出的帧数据导出,便于进一步分析。按文档输入下述命令
- # echo saveyuv 0 0 8 > /proc/msp/vpss_ctrl00
复制代码 帧数据文件没有生成,在调试串口终端中打印了下述错误信息:
command save_frame success
[ERROR-HI_VPSS]:save_sp420_to_file_10bit[624]:write file '/sdcard/vpss_p0_1920_x1080_29_hz_.yuv' fail!
type=1400 audit(1653299053.109:47): avc: denied { search } for pid=1818 comm="mediaserver" name="block" dev="tmpfs" ino=461 scontext=u:r:mediaserver:s0 tcontext=u: object_r:block_device:s0 tclass=dir permissive=0
type=1400 audit(1653299093.780:48): avc: denied { search } for pid=1124 comm="hi_vpss_process" name="default" dev="tmpfs" ino=5810 scontext=u:r:kernel:s0 tcontext=u: object_r:storage_file:s0 tclass=dir permissive=0
[ERROR-HI_VPSS]:save_sp420_to_file_10bit[624]:write file '/sdcard/vpss_p0_1920_x1080_29_hz_.yuv' fail!
[ERROR-HI_VPSS]:save_sp420_to_file_10bit[624]:write file '/sdcard/vpss_p0_1920_x1080_29_hz_.yuv' fail!
[ERROR-HI_VPSS]:save_sp420_to_file_10bit[624]:write file '/sdcard/vpss_p0_1920_x1080_29_hz_.yuv' fail!
2. 分析
- 怀疑是 /sdcard 目录是只读的,进入该目录、能成功创建文件, 排除此原因;
- 查看上述错误信息,提示是进程hi_vpss_process 审核(audit)许可权限(permissive)为0(不允许),定位是权限原因
3. 解决
- # echo saveyuv 0 0 8 > /proc/msp/vpss_ctrl00
复制代码
- 在单板/sdcard目录下可以看到导出的yuv文件
- /sdcard # ls -l
- -rw-rw---- 1 root sdcard_rw 40435200 2022-05-23 20:02 vpss_p0_1920_x1080_29_hz_.yuv
复制代码
4. 背景知识(Android安全模型)
从Android4.3开始,引入SELinux(Security-Enhanced Linux)增强安全约束,对所有的进程实施强制访问控制(MAC),即使是root权限的进程也不例外。保护设备免受恶意软件或缺陷代码的影响。
SELinux有以下两种工作模式:
- Enforcing:强制模式,所有违反安全策略的动作都会被拒绝
- Permissive:宽容模式,允许违法安全策略的动作
获取当前模式:
设置宽容模式:
设置强制模式:
|
|