Android O 将lk读取的Mipi屏ID存储至安卓属性ro里

时间:2024-03-16 08:51:47

Android O 将lk读取的Mipi屏ID存储至安卓属性ro里

由于项目需要兼容多款mipi屏幕,为了能够在应用层获取得到具体的屏幕,所以需要将ID保存下来,以便查找问题是可以快速定位,免去拆机麻烦。
我们在根文件系统下,可以使用shell命令查看lk传入的值
cat /proc/cmdline
Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
可以看到androidboot.serialno=xxxxx ,那么我们可以在源码里查找serialno的传值方式并仿照写代码。

bootable/bootloader/lk/app/aboot/aboot.c

  1. 增加一个属性名字
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
    我们也添加一个
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
    这里的androidboot很重要,下面说明。
  2. 增加一个存储buf
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
    同理
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
  3. 更新cmdline长度
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里

bootable/bootloader/lk/platform/msm_shared/mipi_dsi.c

声明一个全局变量保存lcm id
Android O 将lk读取的Mipi屏ID存储至安卓属性ro里

bootable/bootloader/lk/app/aboot/aboot.c

  1. 将保存的id传回给lcm_id_buf
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
  2. 将写入的ID写至cmdline
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
    同理
    Android O 将lk读取的Mipi屏ID存储至安卓属性ro里

这样,就顺利将lcm id传入至cmdline了,我们编译烧录,重新cat /proc/cmdline
Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
已经多了一个“androidboot.lcm_id=xxx”的赋值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200423111731621.png

将ID写入ro属性

最上面说到lk命名的属性值androidboot很重要,现在来解释一下
在 system/core/init/init.cpp 里
Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
cmd命令里的带androidboot都会被设置到ro.boot.xxxx的属性里,我们现在来验证一下:
Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
如果想存储成其他名称,就仿造这个接口的else if,再添加一个else if的判断条件

到此,ID存储至ro属性的的代码就全部完成。