第一次開機初始化指示燈
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.
第一次開機初始化指示燈