基于Android系统的车载系统的快速启动方法

文档序号:6504673阅读:3056来源:国知局
基于Android系统的车载系统的快速启动方法
【专利摘要】本发明提供了一种基于Android系统的车载系统的快速启动方法,包括:对原生Android系统的引导程序、内核和用户域的启动方式进行优化,以使优化后的启动时间小于原生Android系统的默认启动时间;以优化后的方式加载并启动所述引导程序;以优化后的方式加载并启动所述内核;以优化后的方式加载并启动所述用户域。本发明能够缩短车载系统的启动时间,有利于改善用户体验。
【专利说明】基于Android系统的车载系统的快速启动方法

【技术领域】
[0001]本发明涉及车载系统的启动技术,尤其涉及一种基于Android系统的车载系统的 快速启动方法。

【背景技术】
[0002]现有的基于Android系统的车载娱乐系统保留了 Android系统的诸多优点,例如 良好的可移植性和定制性、丰富的应用软件生态环境等,但同时也一并继承遗留了 Android 系统开机启动时间过长的缺点。
[0003] 原生的Android系统的开机启动过程如图i所示,启动过程按照引导程序 (bootloader) 11、内核(kernel) 12和用户域(user space)的顺序先后加载启动,其中用户 域的加载启动按照初始化程序/启动脚本(init/init.rc) 131、孵化器(Zygote) 132、系统 服务(System Server) 133和桌面启动器(Launcher) 134的顺序先后加载启动。
[0004]其中,用户域的加载启动的详细过程如图2所示,首先加载启动初始化程序/启 动脚本(init/init· rc) 21,然后启动本地服务22,之后启动Android服务23,最后加载启 动Android应用24。其中,在原生的Android系统中,本地服务22包括rild、netd、媒体 (media)、醉化器(zygote)以及其他服务;Android服务包括电源管理器(Power Manager)、 内容管理器(Content Manager)、打包器管理器(Packager Manager)以及其他服务。
[0005]现有的基于Android系统的车载系统的启动时间比较长,例如冷开机时间普遍都 超过30秒。在车载系统领域,这样漫长的开机等待时间给用户使用带来了不便,导致了非 常差的用户体验。


【发明内容】

[0006]本发明要解决的技术问题是提供一种基于Android系统的车载系统的快速启动 方法,能够缩短车载系统的启动时间,有利于改善用户体验。
[0007]为解决上述技术问题,本发明提供了一种基于Android系统的车载系统的快速启 动方法,包括:
[0008]对原生Android系统的引导程序、内核和用户域的启动方式进行优化,以使优化 后的启动时间小于原生Android系统的默认启动时间;
[0009]以优化后的方式加载并启动所述引导程序;
[0010]以优化后的方式加载并启动所述内核;
[0011 ]以优化后的方式加载并启动所述用户域。
[0012]根据本发明的一个实施例,对所述引导程序、内核和用户域的启动方式进行优化 包括:根据所述车载系统的软硬件配置对所述引导程序、内核和用户域的启动方式进行优 化。
[0013]根据本发明的一个实施例,根据所述车载系统的软硬件配置对所述引导程序的启 动方式进行优化包括以下操作中的一项或多项:
[0014] 裁减所述引导程序中与网络相关的模块;
[0015] 减小读取uramdisk. img区域和ulmage区域的空间,使其小于原生Android系统 的默认值;
[0016] 减小MMC驱动中发送命令的延迟时间,使其小于原生Android系统的默认值并与 所述车载系统的硬件配置适配。
[0017] 根据本发明的一个实施例,对所述引导程序的启动方式进行优化还包括以下操作 中的一项或多项:
[0018] 去除加载所述内核之前的等待时间;
[0019] 对于同一 MMC硬件仅调用一次MMC初始化程序;
[0020]将是否进入还原模式的判断方式修改为通过读取预设偏移位置的裸数据来判断。
[0021] 根据本发明的一个实施例,根据所述车载系统的软硬件配置对所述内核的启动方 式进行优化包括以下操作中的一项或多项:
[0022] 减小Pty设备节点的数量,使其小于原生Android系统的默认值并与所述车载系 统的软硬件配置适配;
[0023] 延迟所述内核中的initcall机制,以将所述内核的多个驱动中的一部分转移至 所述用户域的启动过程进行初始化;
[0024] 对电源管理芯片的初始化过程进行优化,以去除与所述车载系统的硬件配置不相 关的部分;
[0025] 裁减所述车载系统的硬件配置以外的设备驱动;
[0026]裁减所述车载系统未使用的文件系统。
[0027] 根据本发明的一个实施例,对所述内核的启动方式进行优化还包括:去除内核的 打印信息。
[0028] 根据本发明的一个实施例,根据所述车载系统的软硬件配置对所述用户域的启动 方式进行优化包括以下操作中的一项或多项:
[0029] 删除所述车载系统未使用的Android服务;
[0030] 对预加载的类列表做裁减优化,将所述车载系统未使用的类从所述预加载的类列 表中删除;
[0031] 裁减以太网服务;
[0032] 移除Sensor Manager和Battery Service内部的全部操作并保留接口。
[0033]根据本发明的一个实施例,对所述用户域的启动方式进行优化还包括以下操作中 的一项或多项:
[0034] 将Entropy Service对文件的读写修改为异步的;
[0035] 将Package Manager Service对配置文件的写操作修改为异步的;
[0036]增大垃圾收集的阈值,以减小垃圾收集的次数;
[0037]将桌面启动器和系统用户界面设置为优先于其他应用启动;
[0038] 将init. rc文件中对/dev/路径下设备节点权限的修改转移至uevent. rc文件 中;
[0039] 预先在uramdisk中创建挂载点目录,以避免动态创建;
[0040] 关闭Java本地调用的检查;
[0041] 压缩所述桌面启动器中的界面图片资源。
[0042] 与现有技术相比,本发明具有以下优点:
[0043]本发明实施例的基于Android系统的车载系统的快速启动方法中,首先对 Android系统的引导程序、内核和用户域的启动方式进行优化,之后按照常规的顺序,以优 化后的方式加载并启动引导程序、内核和用户域,从而缩短启动时间,改善用户体验。
[0044]进一步而言,对于引导程序、内核和用户域的优化可以是根据车载系统的软硬件 配置来进行的,使得优化过程更加有针对性。

【专利附图】

【附图说明】
[0045]图1是原生Android系统的启动流程示意图;
[0046]图2是原生Android系统的用户域的详细启动流程示意图;
[0047]图3是本发明实施例的基于Android系统的车载系统的快速启动方法的流程示意 图。

【具体实施方式】
[0048] 下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制本发明的保 护范围。
[0049] 参考图3,本实施例中,基于Android系统的车载系统的快速启动方法包括如下步 骤:
[0050] 步骤S31,对原生Andro i d系统的引导程序、内核和用户域的启动方式进行优化, 以使优化后的启动时间小于原生Android系统的默认启动时间;
[0051] 步骤S32,以优化后的方式加载并启动所述引导程序;
[0052] 步骤S33,以优化后的方式加载并启动所述内核;
[0053] 步骤S34,以优化后的方式加载并启动所述用户域。
[0054] 本实施例保留了原生Android系统原有的启动阶段(包括引导程序、内核和用户 域)和顺序不变,但针对车载系统本身的特点对各个启动阶段进行了优化和改良,从而缩短 了车载系统的开机启动时间。在一实例中,采用该方法可以使得车载设备的开机时间降低 至13秒。
[0055] 进一步而言,对各个启动阶段的优化包括根据车载系统的软硬件配置进行优化, 以及其他通用的优化。下面对各个启动阶段的具体优化方法进行详细说明。
[0056] 首先介绍对于引导程序的优化。
[0057] 首先可以裁减引导程序中于网络相关的模块。例如在一实例中,车载系统被配置 为无需使用原生Andro i d系统提供的网络,那么可以裁减FTP上传/下载相关的模块,还可 以裁减网络挂载分区的NFS命令等。
[0058] 另外,还可以减小读取uramdisk· img区域和ulmage区域的空间大小,使其小于原 生Android系统的默认值。例如,在一实例中,可以将读取uramdisk. img区域和ulmage区 域这两个区域的空间减小至约2· 6M。
[0059] 另外还可以优化MMC驱动性能,减小MMC驱动中发送命令的延迟时间,使其小于原 生Android系统的默认值并与车载系统的硬件配置适配。例如可以从loooo纳秒减小至1 纳秒,示意性的实现代码如下:
[0060] esdhc_send_cmc^sfiritet mmc *mmc, struct mmc cmd *cmd, struct mmc data *data) * N?te: This is way more than 8 cycles, but 1ms seems to # a-es?lve timing issues with some cards - udelayCaOGii; //删除 + udelay(l); //添加 /* Set up for a lata transfer if we have one if (data) void set^sysctl(struct mmc *mmc, uint clock) tmp = (readi(&regs->sysctl) & ( SYSCTL CLOCK MASK)) | elk; writel(tmp, &regs->sysctl); - udelay( 10000); //删除 + udelay(3000); //添加 ·
[0061] 另外,还可以去除引导程序启动过程中的延迟等待时间,也就是引导程序启动过 程的结尾至加载内核之前的等待时间。在原生Android系统中,该等待时间通常为 3s,本实 施例中可以将其设置为0。例如可以通过下述方式实现:
[0062] -#define CONFIG-B00TDELAY 3 //删除
[0063] +#define CONFIG_B〇〇TDELAY 0 //添加
[0064] 另外,通过优化,可以对于同一 MMC硬件仅调用一·次MMC初始化程序(mmc_init), 而原生Android系统在每一次10之前都会调用一次MMC初始化程序。示意性的实现方式 如下:
[0065] struct mmc | struct mmc cmd *cmd, struct mmc_4ata void (*set_ios)(struct mmc int (*init)(struct mmc *mmc); ? int initialized; //添加 !; static ini ollii£i_startiip{struct mmc *mmc) (ffl卿::->cid[2] :>>:24.) & Oxf); iuitj)art(&mmc->block_dev); #- mftC^Initialized = //添加 leturn 0, ini mrac_init(struct mmc *mmc) { l· if(mmc->initializrf) //添加 ? leturn //添加 err
[0066] 另外,还可以将是否进入还原(recovery)模式的判断方式修改为通过读取偏移位 置的裸数据来判断,而不再通过开机启动读取高速缓存( cache)分区里某文件的方式判断 是否进入还原模式。示意性的实现方式如下:
[0067] v_eheck-recovery-mode(void) setup recoveryb_env(); #endif
[0068] !' - else if (check_recovery_cTnd_file〇 || check_recoveixj)arai?^mi0| I mwr + else if (check_recoveryjparams_cmdQ| | "溱加 . puts("Recovery command file founded!\n"|; setup-recovery_env〇:
[0069] 下面对内核的启动方式的优化进行详细描述。
[0070] 首先可以减小pty设备节点的数量,使其小于原生Android系统的默认值并与所 述车载系统的软硬件配置适配。在一实例中,可以将原生Android系统默认动态分配的256 个pty设备节点减小至32。进一步而言,可以通过增加启动参数pty. legacy_count=32来 实现。
[0071] 此外,还可以去除内核的打印信息,例如可以增加启动参数quiet来实现。
[0072] 另外,还可以延迟内核中的initcall机制,将部分驱动转移至用户域的启动过程 再触发初始化。
[0073] 另外,还可以对电源管理芯片(PMIC)的初始化过程进行优化,将与车载系统的硬 件配置不相关的部分跳过。示意性的实现方式如下:
[0074] static int hc3589_regulator_probe(struct platform device *pdev) ..Jr I* roister fqgulator */ -: rdev = regulatoi^jegister(&ltc3589-reg[pde¥->id|5. &pdev->dev, #_除 .+. /* rdev = regulator-i,egister(&ltc3 589-reg[pdev->id.],,.,藥ρ?群-〉dev, //添加 pdev->dev.pialfbim_data, de¥_getdrvclata(&pdev->dev)); if (IS_ERR(rdev)) { dev_err(&pdev->dev, "failed to register ? 〇s' n", ltc3589_reg[pdev->id].name); return PTR_ERR(rdev).;. :? I //删除
[0075] + 職加 ,ie35觀_set,?w_rate(福ev,Lffi3 纖 JRRC1R:亂 //删除 +/*ltc3589_set_slew_rate(rdev,LTC3589 VRRCR SLEW RATE 7P00MV_^S), */ ;/雜加
[0076] 另外,还可以将车载系统的硬件配置以外的设备驱动裁减掉,也就是将车载系统 并未使用的硬件的设备驱动移除。例如可以将驱动頂PUT_ISL 29〇23裁减掉,实现方式可以 是:Disable INPUT一ISL29023。另外,可以将没有使用到的LCD驱动裁减掉,例如:
[0077] A· Disable CONFIG_FB_MXC_EPSON_VGA-SYNC_PANEL
[0078] B. Disable CONFIG_FB_MXC_CLAA_WVGA_SYNC_PANEL
[0079] C. Disable CONFIG_FB_MXC_SEIKO_WVGA_SYNC_PANEL
[0080] D.Disable CONFIG-FB_MXC_SII902X
[0081] E. Disable C0NFIG_FB_MXC_CH7026
[0082] F. Disable CONFIG_FB_MXC_EINK_PANEL
[0083] 此夕卜,还可以裁减掉MAX17135, MAG3110,MMA8451驱动。示意性的实现方式如下·
[0084] Disable MFD_MAX17135, REGULAT0R_MAX17135 '
[0085] Disable sensor drivers MAX17135, MAG3110, MMA8451.
[0086] 此外,还可以将DA9052驱动裁减掉,实现方式如下:
[0087] Disable all drivers on DA9052〇
[0088] 此外,还可以将以太网(ethernet)驱动裁减掉,实现方式如下.
[0089] Disable all drivers of ethernet。
[0090] 还可以将APM battery驱动裁减掉,实现方式如下:
[0091] Remove all APM battery drviers〇
[0092] 还可以将红外(IR)设备相关的设备驱动裁减掉,实现方式如下·.
[0093] Disable CONFIG-RC-MAP;
[0094] Disable CONFIG-IR-RC5-DECODER;
[0095] Disable CONFIG-IR-RC6-DECODER;
[0096] Disable CONFIG-IR-JVC-DECODER;
[0097] Disable CONFIG一IR-SONY-DECODER;
[0098] Disable CONFIG-RC-MAP;
[0099] Disable C0NFIG_VIDE0-IR_I2C。
[0100] 还可以将所有CAN相关的设备驱动移除,实现方式如下:
[0101] Disable C0NFIG_CAN, C0NFIG_CAN_RAff and C0NFIG_CAN B〇M
[0102] 还可以将键盘驱动 KEYBOARD-GPI0 和 KEYB0ARDJ1XC 裁g掉二 n、、
[0103] Disable KEYB0ARD_GP 10 and KEYB0ARD_MXC。 '头义万式如下:
[0104] 此外,还可以将电源管理模块DVFS裁减掉。
[0105] 另外,还可以将车载系统未使用的文件系统裁减掉,例如可以将文件系统UBIFS 模块裁减掉。
[0106] 下面详细介绍用户域启动方式的优化。 >
[0107] 首先,可以删除车载系统未使用的原生Android服务。例如,可以采用如下方式删 除相关的原生Android服务:
[0108] A. remove Headset Observer;
[0109] B. remove HDMI Observer;
[0110] C. remove Dock Observer;
[0111] D. remove Recognition Manager Service;
[0112] E. remove Vibrator Service;
[0113] F. remove Backup Service〇
[0114] 另外,可以将Entropy Service中对文件的读写修改为异步的,以防止阻塞。
[0115] 另外,可以将Package Manager Service对配置文件的写操作修改为异步的,以防 止阻塞。
[0116] 此外,还可以取消对/vendor/app目录的扫描。
[0117] 另外,可以对预加载的类列表进行裁减优化,将车载系统未使用的类从预加载的 类列表中删除,例如:
[0118] A. remove javax. net. ssl. ^
[0119] B. remove libcore. *
[0120] C. remove org. apache, http. conn. ssl. ^
[0121] D. remove org. apache, http. impl. client. Abstract Http Client
[0122] E. remove android, webkit. Web View Core
[0123] F. remove android, media. Exif Interface
[0124] G. remove Bluetooth class;
[0125] 此外,可以将一些较为耗时的操作从预加载类时执行转移到创建对象时再执行。
[0126] 此外,还可以调整垃圾收集(GC)的阈值,使其大于原生Android系统的默认值,以 减小垃圾收集的次数。需要说明的是,该调整仅影响预加载类阶段的垃圾收集操作,在预加 载类结束后,垃圾收集的阈值将被调回默认值。
[0127] 另外,可以调整用户域中各个应用的启动顺序,首先启动桌面启动器(launcher ) 和系统用户界面(systemui),其余的应用(例如电话、拼音输入法等)例如可以延迟2秒后 再启动。而在原生Android系统中,上述全部应用都是同时启动的,影响了启动速度。
[0128] 另外还可以对启动脚本(init.rc)进行优化,具体而言,可以包括如下内容:
[0129] A.删除车载系统不需要的操作,如不需要的环境变量的设置等;
[0130] B.将对/dev/下设备节点权限的修改全部移到uevent. rc文件中;
[0131] C·预先在uramdisk中创建挂载点目录,而不在启动时动态创建。
[0132]针对 Package Manager service 的优化可以包括:
[0133] A.用户(user)版本针对/SyStem/app下的apk应用不再做odex文件的生成,而 是在编译时就生成odex文件;
[0134] B.分阶段扫描apk应用,重要的apk应用优先扫描加载,例如先系统级,再非系统 级。
[0135]另外,可以裁减掉以太网服务。
[0136] 另外,还可以移除Sensor Manager和Battery Service内部的所有操作,并保留 接口。 '
[0137] 此外,可以关闭Java本地调用(JNI)的检查,实现方式如下:
[0138] JNI check off。
[0139] 对于桌面启动器(launcher)应用的优化可以包括:
[0140] A.在不影响UI效果前提下,压缩界面图片资源,使得界面图片资源所占空间尽可 能小;
[0141] B.耗时的操作转移至π界面显示出来后再执行。
[0142]综上,本实施例的快速启动方法在原生Android系统的基础上并没有增加额外的 启动阶段,没有减少或者重排原始的启动次序,改良后的系统维护和升级工作与优化前相 比并没有变化,引入的具体优化方法都易于理解、移植以及维护。
[0143]本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技 术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保 护泡围应当以本发明权利要求所界定的范围为准。
【权利要求】
1. 一种基于Android系统的车载系统的快速启动方法,其特征在于,包括: 对原生Android系统的引导程序、内核和用户域的启动方式进行优化,以使优化后的 启动时间小于原生Android系统的默认启动时间; 以优化后的方式加载并启动所述引导程序; 以优化后的方式加载并启动所述内核; 以优化后的方式加载并启动所述用户域。
2. 根据权利要求1所述的方法,其特征在于,对所述引导程序、内核和用户域的启动方 式进行优化包括:根据所述车载系统的软硬件配置对所述引导程序、内核和用户域的启动 方式进行优化。
3. 根据权利要求2所述的方法,其特征在于,根据所述车载系统的软硬件配置对所述 引导程序的启动方式进行优化包括以下操作中的一项或多项: 裁减所述引导程序中与网络相关的模块; 减小读取uramdisk. img区域和ulmage区域的空间,使其小于原生Android系统的默 认值; 减小MMC驱动中发送命令的延迟时间,使其小于原生Android系统的默认值并与所述 车载系统的硬件配置适配。
4. 根据权利要求2所述的方法,其特征在于,对所述引导程序的启动方式进行优化还 包括以下操作中的一项或多项: 去除加载所述内核之前的等待时间; 对于同一 MMC硬件仅调用一次MMC初始化程序; 将是否进入还原模式的判断方式修改为通过读取预设偏移位置的裸数据来判断。
5. 根据权利要求2所述的方法,其特征在于,根据所述车载系统的软硬件配置对所述 内核的启动方式进行优化包括以下操作中的一项或多项: 减小pty设备节点的数量,使其小于原生Android系统的默认值并与所述车载系统的 软硬件配置适配; 延迟所述内核中的initcall机制,以将所述内核的多个驱动中的一部分转移至所述 用户域的启动过程进行初始化; 对电源管理芯片的初始化过程进行优化,以去除与所述车载系统的硬件配置不相关的 部分; 裁减所述车载系统的硬件配置以外的设备驱动; 裁减所述车载系统未使用的文件系统。
6. 根据权利要求2所述的方法,其特征在于,对所述内核的启动方式进行优化还包括: 去除内核的打印信息。
7. 根据权利要求2所述的方法,其特征在于,根据所述车载系统的软硬件配置对所述 用户域的启动方式进行优化包括以下操作中的一项或多项: 删除所述车载系统未使用的原生Android服务; 对预加载的类列表做裁减优化,将所述车载系统未使用的类从所述预加载的类列表中 删除; 裁减以太网服务; 移除Sensor Manager和Battery Service内部的全部操作并保留接口。
8.根据权利要求2所述的方法,其特征在于,对所述用户域的启动方式进行优化还包 括以下操作中的一项或多项: 将Entropy Service对文件的读写修改为异步的; 将Package Manager Service对配置文件的写操作修改为异步的; 增大垃圾收集的阈值,以减小垃圾收集的次数; 将桌面启动器和系统用户界面设置为优先于其他应用启动; 将init. rc文件中对/dev/路径下设备节点权限的修改转移至uevent. rc文件中; 预先在uramdisk中创建挂载点目录,以避免动态创建; 关闭Java本地调用的检查; 压缩所述桌面启动器中的界面图片资源。
【文档编号】G06F9/445GK104252363SQ201310255835
【公开日】2014年12月31日 申请日期:2013年6月25日 优先权日:2013年6月25日
【发明者】王磊, 赵亚立 申请人:上海博泰悦臻电子设备制造有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1