坑人的Device下的overlay文件

本文介绍了解决Android平台上CellBroadcast默认开启频道50的问题。通过排查发现,设备目录下的config.xml文件错误地设置了show_brazil_setting为true,导致系统开机时自动打开频道50。文章详细记录了问题定位过程及解决方案。

     这两天在高通的Android平台上调试cell boardcast, 客户要求channel 50做为缺省的channel,在高通的代码中,有针对channel 50作特殊处理,即如果有在config.xml文件配置使用了这个show_brazil_setting 为true,系统在开机时会自动将channel 50打开,因此即使在短讯的cell boardcast设置中没有使能channel 50这个设置,在开机时系统一样会收到来自channel 50的CB.

        检查代码发现在本应用资源下面的config.xml文件并没有设置show_brazil_setting,而在开机log中可以看到channel 50打开了,在对所有的源代码进行搜索之后,发现在device目录下有一个overlay的目录中有这个cofing.xml文件的配置,其中将show_brazil_setting设置为true, 从而导致出现此问题。

  因为在前段时间系统的device目录下没有此文件,后因为升级patch而增加了这个文件,因此一直没有意识到此处我问题,这是一个教训。

### 设备树 Overlay 文件概述 设备树(Device Tree)是一种数据结构,用于描述硬件配置而不依赖于操作系统内核源码修改。设备树overlay文件是对基础设备树的一种补充或修改形式,允许动态加载额外的硬件定义而无需重新编译整个设备树二进制文件。 #### 用途 设备树overlay主要用于向现有的设备树中添加新节点或是修改已有节点属性,从而支持新增加到系统的外设或者是改变现有外设的行为模式[^1]。这种方式使得开发者可以在不改动原始固件的情况下轻松调整硬件设置,提高了开发效率并简化了维护工作。 #### 创建方法 创建一个设备树overlay通常涉及以下几个方面: - **编写DTS (Device Tree Source)**:使用特定语法书写描述所需更改的文本文件。这包括指明要影响哪些路径下的节点以及如何变更这些节点的内容。 - **编译成DTBO**: 使用`dtc`(device tree compiler)工具将上述撰写的`.dts`文件转换为可被Linux内核解析使用的`.dtbo`格式文件。 ```bash $ dtc -@ -I dts -O dtb -o my-overlay.dtbo my-overlay.dts ``` - **放置适当位置**:生成后的`.dtbo`文件应当放在系统能够识别的位置以便后续加载操作;对于某些嵌入式平台而言,可能是指定分区内的某个固定目录下。 #### 应用方式 应用设备树overlay可以通过多种途径完成: - **命令行手动加载**:利用`dtoverlay`命令或者直接调用sysfs接口来即时生效所需的overlay配置。 ```bash $ echo "my_overlay" > /sys/devices/platform/soc/overlays/my_overlay/path_to_dtbo_file ``` - **引导参数自动加载**:编辑bootloader传递给kernel的启动参数列表(`cmdline.txt`),加入相应选项让系统初始化阶段就载入指定overlay。 - **脚本批量处理**:编写shell脚本来自动化部署一系列预定义好的overlay组合方案,适用于复杂场景或多变需求场合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值