Android O 将lk读取的Mipi屏ID存储至安卓属性ro里
由于项目需要兼容多款mipi屏幕,为了能够在应用层获取得到具体的屏幕,所以需要将ID保存下来,以便查找问题是可以快速定位,免去拆机麻烦。
我们在根文件系统下,可以使用shell命令查看lk传入的值
cat /proc/cmdline
可以看到androidboot.serialno=xxxxx ,那么我们可以在源码里查找serialno的传值方式并仿照写代码。
bootable/bootloader/lk/app/aboot/aboot.c
- 增加一个属性名字
我们也添加一个
这里的androidboot很重要,下面说明。 - 增加一个存储buf
同理
- 更新cmdline长度
bootable/bootloader/lk/platform/msm_shared/mipi_dsi.c
声明一个全局变量保存lcm id
bootable/bootloader/lk/app/aboot/aboot.c
- 将保存的id传回给lcm_id_buf
- 将写入的ID写至cmdline
同理
这样,就顺利将lcm id传入至cmdline了,我们编译烧录,重新cat /proc/cmdline
已经多了一个“androidboot.lcm_id=xxx”的赋值
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200423111731621.png
将ID写入ro属性
最上面说到lk命名的属性值androidboot很重要,现在来解释一下
在 system/core/init/init.cpp 里
cmd命令里的带androidboot都会被设置到ro.boot.xxxx的属性里,我们现在来验证一下:
如果想存储成其他名称,就仿造这个接口的else if,再添加一个else if的判断条件
到此,ID存储至ro属性的的代码就全部完成。