第一次开机初始化指示灯

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.

时间: 2024-10-13 19:39:23

第一次开机初始化指示灯的相关文章

Android系统之路(初识MTK) ------ 默认第一次开机屏幕亮度/日期格式/picture makeer model

今天给大家分享下关于修改MTK平台下系统首次开机的默认屏幕背光亮度,系统语言默认英语情况下修改日期格式,修改拍照属性,具体修改的地方不清楚或者没人告知的 话,请参照之前几篇博客的方法分享,现在直接进入主题 首先我们来修改第一次开机的屏幕亮度 ①修改首次开机的系统默认屏幕背光亮度,我是在该java下修改的------(把注释的地方都去掉,因为注释的地方都是修改了的) packages\apps\Settings\src\com.mediatek.settings\RestoreRotationRe

分析:Android系统刷机后,第一次开机启动很慢的原因

在做Android内核开发的过程中,我们会发现,每次编译完系统源码,烧录到设备/手机中后,第一次启动都会很慢很慢,要好几分钟甚至十几分钟,为什么会出现这样的现象呢?系统刷机后第一次启动与后面再次启动有什么不同呢? 要解答这个问题,首先我们需要了解一下Android Dalvik虚拟机,以及Dalvik-cache. 由于嵌入式设备内存有限.CPU处理器不够强大.功耗敏感等原因,Google没有使用标准的JVM虚拟机,而是为Android单独开发了Dalvik虚拟机. Dalvik虚拟机与JVM虚

国内某公有云 linux云主机开机初始化过程分析和他的镜像制作过程

最近学习了国内某公有云的linux云主机启动之后,在镜像内部的初始化过程,分享出来,仅供参看. 一.开机过程 可以看到开机时候按照数字顺序执行了一连串的脚本,其中也提示的该公有云厂商的名字的ucloud,最后一条显示做了清理工作.进系统一看 果然找不到这些脚本了. 二.进单用户模式找出这些脚本 想让开机的时候不让最后一步 999-clwanup.sh执行的办法很多,我采取的的办法是单用户模式,简单上个图,具体方法大家谷歌下. 成功进入单用户模式,并复制他的初始化脚本 三 初始化过程分析 (一)

[UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库

利用应用程序设置来实现此功能. 1.首先,获取APP设置的容器: ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; 由于获取容器的时候并没有给key为FirestStart的赋值,所以下面就直接判断是不是为null,为null就是第一次运行APP, 然后在else里给key为FirestStart的赋值,那么else的代码就只能执行一次了.当然以后在UI上可以添加一个switchButt

国行XBoxOne第一次开机配置主要问题备忘

1,Kinect可以在设置中关闭. 2,彻底关闭主机,需要长按主机上的开关键,将主机彻底关机,同时开机只要轻触一下主机开关机键即可 3,不能更新问题:3.1检查网络已连接3.2检查路由器,将DNS中的一个改为8.8.8.8,因为一般的DNS可能解析xbox的服务器有问题,全盘google的8.8.8.8能解决问题.3.3可能一些人不能或不会改路由器,可以使用wifi共享软件在电脑上开一个共享,将本地链接的DNS中的一个改为8.8.8.8也地,本人就是用这种方法的. 4,手柄配对:4.1按下(不要

解决linux部署项目后,第一次访问初始化数据源的时候很慢的问题

先说一下场景 测试环境是linux - centos6.5,项目是分布式的,分别搭建到linux上 数据货使用的是阿里巴巴数据源 每次重启后的第一次访问会比较慢,查看日志发现 卡在这个地方 ...{dataSource-1} inited... 网上找了一些问题,发现有个别人有这问题但是都没解决,后来都换了数据源,我觉得这个问题不是数据源的问题 猜测是linux或者mysql问题 首先修改linux配置,由于每次使用ssh登录会很慢,就修改了配置,登录速度提升,但是这不是根本原因 修改mysql

BeagleBone Black 开机初始化操作

0:下载BeagleBone Black操作系统镜像: https://debian.beagleboard.org/images/ 当前最新的是: https://debian.beagleboard.org/images/bone-debian-9.2-iot-armhf-2017-10-10-4gb.img.xz 下载后,解压得到:bone-debian-9.2-iot-armhf-2017-10-10-4gb.img 用dd命令或者Win32DiskImager写入到TF卡中,建议大于等

Android开机启动过程分析

首先android是基于Linux的内核,只有先加载了kernel才能启动安卓,对于Linux来说android只是其上的一个应用程序.Android的启动大致可以形象的划分为三个过程: Init->init.rc->zygote.从事嵌入式开发的人都知道,Linux加载完内核驱动后会挂载'/'根文件系统,挂载完成后会执行'/init'二进制程序,这也是内核启动后执行的第一个用户程序,android里面也是这样.这个程序的main函数位于android/system/core/init/ini

掌上快递之开机启动篇

启动篇 主要分为开机和功能导航俩部分来总结 先上部分截图图直观感受下 1.开机部分 开机图片比较简单,有个开机图片,图片放在了R.layout.start布局文件中,刚开始老是出现适配问题,后来索性放到LinearLayout的background属性中,然后使用Hnadler创建了一个子线程延时子线程加载后续的跳转Activity(第一次开机跳转功能导航,非第一次跳转主界面)开机的布局文件 R.layout.start(适配比较好) <span style="font-family:Mi