RK3568笔记四十四:OLED 屏幕驱动(硬件I2C_3)

若该文为原创文章,转载请注明原文出处。

本篇记录使用硬件I2C驱动OLED屏幕,显示界面效果如下。

使用硬件I2C比使用GPIO模拟简单多了,不用自己写I2C协议。

一、硬件接线

使用I2C3即GPIO1_A0和GPIO1_A1两个引脚

接线如下:

oled 引脚 引脚
VCC 3.3V 电源
GDN GND
SCL I2C3_SCL_M0  GPIO1_A1
SDA I2C3_SDA_M0  GPIO1_A0

SSD1306 的 I2C 地址通常是 0x3C 或 0x3D

<think>嗯,用户的问题是关于Android系统编译后设备型号显示不一致的情况。首先,我需要理解用户提供的配置信息。他们在代码里设置了PRODUCT_DEVICE为ly1024p_ly102c_rk3568_r,但同时用PRODUCT_PROPERTY_OVERRIDES覆盖了ro.product.device为LY_FG123。用户编译后,通过adb获取到的ro.product.device确实是LY_FG123,但系统设置里显示的还是原来的ly1024p_ly102c_rk3568_r。这说明可能有多个地方在设置设备型号属性,或者系统设置读取的属性不同。 接下来,我需要回忆Android构建系统中关于产品属性的配置方式。通常,PRODUCT_NAME、PRODUCT_DEVICE等变量会在build/target/product/core.mk或者其他产品配置文件中定义,这些变量会被用来生成系统属性,比如ro.product.name和ro.product.device。不过,用户可能通过PRODUCT_PROPERTY_OVERRIDES来覆盖这些属性。但是系统设置中的设备型号可能读取的是另一个属性,比如ro.build.product或者ro.product.model,而用户这里PRODUCT_MODEL设置为原来的值,可能没有被覆盖。 另外,Android系统中有多个属性文件,比如system.prop、default.prop等,可能在不同的地方被加载。用户可能只在某个地方覆盖了ro.product.device,而其他地方还存在旧的配置。或者,系统设置应用可能使用了其他属性,比如ro.product.model,而这个属性用户并没有修改,仍然保持原来的ly1024p_ly102c_rk3568_r。 可能还需要检查是否有其他模块或配置文件再次覆盖了这些属性。例如,有些设备会在设备特定的mk文件中设置这些属性,或者在BoardConfig.mk中进行配置。如果用户在后期通过PRODUCT_PROPERTY_OVERRIDES添加属性,是否会被其他部分的代码覆盖? 另外,编译系统处理变量的顺序也可能影响最终结果。PRODUCT_PROPERTY_OVERRIDES可能被后续的赋值覆盖,或者没有被正确应用到所有分区中。例如,有些属性可能只在system分区生效,而系统设置可能从其他分区读取信息。 还需要考虑系统缓存的可能,但用户已经重新编译并刷机,所以缓存的可能性较低。不过,系统设置可能需要重启或者清除数据才能更新显示,但用户应该已经尝试过这些步骤。 总结可能的解决步骤:首先确认PRODUCT_MODEL是否被正确覆盖,因为系统设置可能显示的是ro.product.model。用户当前的PRODUCT_MODEL仍然是原来的值,所以需要同时覆盖ro.product.model。其次,检查所有可能设置设备属性的地方,确保没有遗漏的配置。最后,验证构建后的build.prop文件,确认所有属性是否正确设置。</think>根据您的描述,您在Android 11代码中配置了产品属性但出现显示不一致的问题,以下是逐步分析及解决方案: **一、现象分析** 1. **代码配置**: ```makefile PRODUCT_NAME := ly1024p_ly102c_rk3568_r PRODUCT_DEVICE := ly1024p_ly102c_rk3568_r PRODUCT_MODEL := ly1024p_ly102c_rk3568_r PRODUCT_PROPERTY_OVERRIDES += ro.product.name=POWER ro.product.device=LY_FG123 ``` 2. **实际表现**: - `adb getprop ro.product.device` 返回 `LY_FG123` ✅ - 系统设置显示 `ly1024p_ly102c_rk3568_r` ❌ **二、根本原因** 1. **属性优先级冲突**: - `PRODUCT_MODEL` 变量会直接映射到 `ro.product.model` 属性 - 系统设置界面 (Settings.apk) 优先读取的是 `ro.product.model` 而非 `ro.product.device` 2. **未覆盖关键属性**: 您虽然覆盖了 `ro.product.name` 和 `ro.product.device`,但未覆盖 `ro.product.model` **三、解决方案** 1. **同步修改 PRODUCT_MODEL**: ```makefile PRODUCT_MODEL := LY_FG123 # 原始值为 ly1024p_ly102c_rk3568_r ``` 2. **显式覆盖所有相关属性**: ```makefile PRODUCT_PROPERTY_OVERRIDES += \ ro.product.name=POWER \ ro.product.device=LY_FG123 \ ro.product.model=LY_FG123 ``` **四、验证步骤** 1. 编译后检查 `out/target/product/<device>/system/build.prop`: ```properties ro.product.name=POWER ro.product.device=LY_FG123 ro.product.model=LY_FG123 ``` 2. 烧录后执行: ```bash adb shell "getprop | grep ro.product" ``` **五、补充说明** - **属性继承关系**: $$ro.product.model = PRODUCT\_MODEL$$ $$ro.product.device = PRODUCT\_DEVICE$$ $$ro.product.name = PRODUCT\_NAME$$ - **系统设置显示逻辑**:多数Android实现会优先使用 `ro.product.model` 作为用户可见的设备型号 **六、扩展建议** 若仍不生效,检查以下位置: 1. **vendor层覆盖**:`device/rockchip/ly1024p_ly102c_rk3568_r/` 是否存在硬编码配置 2. **系统应用行为**:确认Settings.apk是否自定义了型号获取逻辑(查看源码中读取的属性名) 通过上述修改,系统设置显示的设备型号应与ADB查询结果保持一致。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷忆枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值