码迷,mamicode.com
首页 > 其他好文 > 详细

第一次开机初始化指示灯

时间:2017-08-01 16:31:23      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:copy_file   根据   driver   exec   count   xml文件   product   dev   tar   

1.LK中读写oem分区中的特殊字符串

2.LK传递kernel cmdline参数firstboot,

3.kernel解析cmdline参数,通过判断firstboot=来判断是否是第一次开机

4.lk中判断和记录第一次开机,再告知kernel会产生的问题

   开机初始化中,LK成功走过,但是kernel启动失败,会认为已经成功经历了第一次开机,造成后续刷软件后的“第一次开机”指示灯不亮

   避免这种影响,添加oem分区,每次刷软件后都能恢复到第一次开机的状态:每次刷完软件指示灯都点亮一次。

4.drivers/leds-aw2015.c中根据是否是第一次开机有不同的行为

5.如何擦除oem分区

5.1 修改CP中的分区定义文件AMSS/common/config/partition.xml

指定了oem分区对应的文件:

-       <partition label="oem" size_in_kb="65536" type="7db6ac55-ecb5-4e02-80da-4d335b973332" bootable="false" readonly="false" filename="" />
+       <partition label="oem" size_in_kb="65536" type="7db6ac55-ecb5-4e02-80da-4d335b973332" bootable="false" readonly="false" filename="oem.mbn" />

5.2 编译CP生成rawprogram0.xml,用它替换掉AP中的vendor/qcom/proprietary/tools/rawprogram0.xml

其中指定了oem分区对应oem.mbn文件

6. 制作一个都是0的文件oem.mbn

dd bs=512 count=1024 if=/dev/zero of=device/qcom/msm8952_64/oem.mbn

/dev/zero产生0字节,块大小512,一共1024个块,文件大小512K

7.修改makefile  copy oem.mbn到out目录下

device/qcom/msm8952_64/msm8952_64.mk

+
+# oem partition
+ PRODUCT_COPY_FILES += \
+     device/qcom/msm8952_64/oem.mbn:oem.mbn

oem.mbn复制到out/target/product/msm8952_64/oem.mbn

7.如何生成的rawprogram0_unsparse.xml文件,

make SPARSEIMAGE

build/core/Makefile文件中指定了target,使用python脚本checksparse.py通过rawprogram0.xml生成了rawprogram0_unsparse.xml文件

.PHONY: SPARSEIMAGE
SPARSEIMAGE: $(INSTALLED_SPARSEIMAGE_FILES)
        @echo "unsparse the sparse ext4 image"
        python $(HOST_OUT_EXECUTABLES)/checksparse.py \
        -i $(HOST_OUT_EXECUTABLES)/rawprogram0.xml \
        -o $(PRODUCT_OUT)/rawprogram0_unsparse.xml \
        -s $(PRODUCT_OUT) \
        -t $(PRODUCT_OUT)
checksparse.py脚本在目录vendor/qcom/proprietary/tools/checksparse.py下,会被复制到

out/host/linux-x86/bin/checksparse.py

生成的rawprogram0_unsparse.xml文件中应该指定oem分区所对应的文件oem.mbn,验证确实如此:

  <program SECTOR_SIZE_IN_BYTES="512" file_sector_offset="0" filename="oem.mbn" label="oem" num_partition_sectors="131072" physical_partition_number="0" size_in_KB="65536.0" sparse="false" start_byte_hex="0xd6188000" start_sector="7015488" />

CP中的partition.xml通过编译CP生成了rawprogram0.xml,把这个xml复制到AP目录中,make SPARSEIMAGE会生成rawprogram0_unsparse.xml,用来最后刷手机

8.

第一次开机初始化指示灯

标签:copy_file   根据   driver   exec   count   xml文件   product   dev   tar   

原文地址:http://www.cnblogs.com/steadfast/p/7268942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!