MTK 11B Bootup

 1 Introduction

Bootup module controls the flow from user presses power key, MMI received the power-on indication, until entering idle. Bootup module is responsible for:
1.Provide mode decision screen. E.g., flight mode query or SIM selection screen
2.Disk sanity check
3.Initialize applications
4.Boot protocol layer
5.Security verifications and related screens. E.g., phone lock, PIN, PUK, … etc.
6. Invoke necessary setting UI. E.g., pen calibration
7. Play power-on animation
8.Other additional steps before idle screen
9.Launch idle

启动模块控制从用户按下电源键流,MMI收到上电指示,直到进入闲置。启动模块负责:
1.提供模式决定屏幕。例如,飞行模式选择屏幕查询或SIM
2.Disk完整性检查
3.初始化应用
4.启动协议层
5. 安全核查和相关屏幕上。例如,电话锁,PIN,PUK,...等
6.调用必要的设置界面。例如,笔校准
7.播放上电动画
8.在待机屏幕的其他额外的步骤
9.启动待机

2 Functional Description
2.1 Work flow
Following introduces the works of current bootup design.
L4 will send POWER_ON_IND to notify MMI to activate for power-on. MMI will determine type of power-on. If the type is KEYPAD, implies user launch phone by pressing End key or Power key, bootup module takes the control. Besides bootup module for normal booting, there are still other booting modes. For example, USB or charger mode. And there are corresponding modules, say, USB module and charger module. Each module is only responsible for the specific mode. The bootup module intended here is in charge of normal bootup. Here is the work flow of MMI normal booting.

以下介绍了当前启动设计的流程。
L4将发送POWER_ON_IND通知MMI来激活上电。 MMI将决定电源的类型。如果类型是键盘,意味着按结束键或电源键用户推出的手机,启动模块作为控制。除了正常的启动引导模块,还有其他的引导模式。例如,USB或充电模式。而且有相应的模块,例如USB模块和充电器模块。每个模块只对特定的模式负责。这里的目的是启动模块在正常启动充电。这里是MMI的正常工作流程启动。

2.2 Functional Overview
1. Start to Bootup
After received POWER_ON_IND(KEYPAD) from L4C, bootup should still wait for GPIO indication. If GPIO indication had arrived, the bootup flow can be triggered. Otherwise, wait for the GPIO indication at most 2 seconds. Once the indication comes or timeout, go next step.
2. Early initialization
Enters disk check. After the check, emit EARLY_INIT event to applications.
3. Initialize SIM / query SIM status

Wait  for L4 to update SIM status. We can know which SIMs are inserted here.
4. Mode decision
If it is single SIM project, user may turn on flight mode query. If the query is enabled, a query screen will be displayed. Otherwise, the flight mode sub-module will answer directly without screen to pass the mode decision step.
For multiple SIM project, SIM selection screen will displayed for more than one SIMs are inserted. Or this module may determines mode directly and skip the selection if proper.
4. Initialization in animation
a. Boot protocol. After mode is decided, the mode will be sent to L4C to boot protocol. Bootup module should wait for the response: PASSWORD_REQUIRED_IND or SMU_FAIL_IND.

If this stage, bootup app will request the service to boot protocol, and bootup service  waits for the SMU_PASSWORD_REQUIRED_INDs/SMU_FAIL_INDs from all protocol sides(L4C_x). This procedure ends only if all protocol sides have replied.
b. Play animation. Animation should be launched before the normal initialization. Because animation request will not block MMI task, but the normal initialization will.
c. Notify applications to initialize. Call NORMAL_INIT entries.
5. Pen calibration
If touch panel is supported and pen calibration is required, invoke phone setting’s pen calibration. For non-touch projects or not need pen calibration, this step should be skipped.
6. Battery check
If it is low-power status, popup an message to prompt user.
7. Security check
L4 replied PASSWORD_REQUIRED_IND or SMU_FAIL_IND for 4.1. These 2 messages carry the information of verification: NO_REQUIRED, PHONELOCK, PIN1, BLOCKED, NO_SIM_INSERTED or others. If password is required for bootup, show the verification screens here. If not required or verification passed, go through this step.
8. Preinstall widget
If gadget widget feature is turned on, gadget module will shows a screen to preinstall widgets. See gadget documents for details.
9. Idle screen
Before entering idle, emit BEFORE_IDLE event. Then launch idle. Finally, emit BOOTUP_COMPLETED event.

1. 开始引导过程
后收到POWER_ON_IND从L4C(键盘),启动时还是应该等待GPIO指示。如果GPIO的指示来了,在启动时流量可以被触发。否则,等待指示GPIO最多​​两秒钟。一旦来指示或超时,去下一个步骤。
2. 早期初始化
进入磁盘检查。经过检查,发出EARLY_INIT事件给应用程序。
3. 初始化SIM卡/ SIM卡状态查询
为L4等待更新SIM卡的状态。我们可以知道哪个SIM卡插入这里。
4. 模式决定
如果是单SIM卡项目,用户可以打开飞行模式查询。如果启用了查询,查询屏幕将显示出来。否则,飞行模式子模块会回答没有直接通过屏幕模式决定的一步。
对于多个SIM卡项目,SIM卡选择屏幕将显示一个以上的SIM卡插入。或者,该模块可决定直接跳过模式选择,如果正确的。
4. 初始化动画
A.引导协议。模式决定后,该模式将被发送到L4C引导协议。启动模块应该等待响应:PASSWORD_REQUIRED_IND或SMU_FAIL_IND。
如果这个阶段,启动程序会要求服务引导协议,并启动服务为SMU_PASSWORD_REQUIRED_INDs /从所有协议双方(L4C_x)SMU_FAIL_INDs等待。这个过程结束只有当所有协议双方已回答。
B.播放动画。动画应该是正常的初始化之前发射。因为动画的要求不会阻止MMI任务,但正常的初始化。
C.通知应用程序初始化。呼叫NORMAL_INIT项。
5. 笔校准
如果是支持触摸屏和笔校准是必需的,调用手机设置的笔下校准。对于非项目或不需要触摸笔校准,这一步应该可以跳过。
6. 电池检查
如果是低功耗状态,弹出an消息提示用户。
7. 安全检查
L4回答PASSWORD_REQUIRED_IND或4.1 SMU_FAIL_IND。这两个消息进行核查的信息:NO_REQUIRED,PHONELOCK,PIN1,封锁,NO_SIM_INSERTED或他人。如果密码是需要引导,屏幕上显示的验证这里。如果没有规定或验证通过,经过这一步。
8. 预安装部件
如果小工具小工具功能开启时,小工具模块将显示屏幕预装部件。详见小工具文件。
9. 待机屏幕
在进入待机,发出BEFORE_IDLE事件。然后启动待机。最后,发出BOOTUP_COMPLETED事件。

 3 System Architecture
This chapter describes the architecture of bootup module.
3.1 Overview
Bootup module is divided into 2 layers:
Customizable layer
This part is put on upper layer, and designed to be easily customizable. If customization is required, we usually only need to modify this part. This layer is so-called bootup app. This part includes UI screens, UI control and flow control. The bootup flow control is based on framework procedure model, so we can easily add new step or add new waiting item in the flow.
Service layer
This part is responsible to communicate with L4C, and contains stable APIs and events to other application.

3.2 Assumptions

3.3 Functionality of Individual Components
Bootup service
This submodule contains 3 functional blocks and miscellaneous stable behavior of bootup.
Main
Stores context and provides state query functions to other applications.
Security
This submodule is responsible for processing, on-behalf querying of security information and pass verifying to protocol layer(L4C ~  L4C_4). Usually this submodule only serves bootup internal; however, for some special requirements, such as verify PIN/PUK after bootup, it also provides required functions for the module in charge.
Protocol
This submodule queries L4 about protocol information. It also manages the booting processes of protocol layers, including L4C ~ L4C_4.
Bootup/security wrapper
Because of historical reason, PASSWORD_REQUIRED_IND or SMU_FAIL_IND contains lots of information. Both bootup and SIM module requires them. So there is a wrapper(adaptor) to dispatch the message to bootup and SIM module. This wrapper is not visible to upper applications.
Bootup flow control
This submodule manages whole bootup flow. It communicates with other components which are necessary in booting, decide the execution sequential and grants the control to components. Finally, it will give the control to idle screen and complete bootup procedure. The design is based on procedure model, which is very flexible and scalable.
Mode decision
This submodule contains the UI of flight mode query and SIM selection menu, and the code to collect required information. Flight mode query is present only if flight mode compile option is turned on; SIM selection menu exists only for multiple-SIM projects.
Disk check
Before power-on, storage sanity check is required. This submodule is responsible for calling file system’s API to check disk. And if any error, popup message or show format screen.
Animation
To play power-on animation.
Animation UI

Animation utility which is shared by bootup and shutdown. This module wraps the common part of animation resource handling and category parameters.
Security check
It collects security UI related information and decides which screen to be shown, such as PIN, PUK or SIM-ME lock screens. It requests password CUI to show password input screens. On SIM hot-swap project, this module also shares the process to verify newly-plugged-in SIM for security application.
App Init
Maintains a set of callback registered by applications. On each stage of booting, bootup flow will wake up this module to inform application to initialize.
Count-down UI
A UI utility to show count-down screen.

 

3系统架构
本章介绍了启动模块架构。
3.1概述
启动模块分为两个层次:
定制层
这部分是放在上层,并设计可以很容易地定制。如果需要定制,我们通常只需要修改这部分。这一层是所谓的启动应用程序。这部分包括UI屏幕,UI控制和流量控制。在启动流量控制是基于框架的过程模型,因此我们可以很容易地添加新的步骤或添加在流动的新项目等待。
服务层
这部分是负责沟通L4C,并含有稳定的API和其他应用程序事件。

3.2假设

3.3功能的单独的组件
启动服务
这个子模块包含三个功能模块和杂项的启动稳定的行为。
主程序
存储方面,提供状态查询功能,其他应用程序。
安全
这是负责处理子模块,上代表的安全信息和验证,以协议层传递(L4C ~ L4C_4)查询。通常这只会启动子模块内部,但是,对于一些特殊要求,如确认,PIN / PUK启动后,它也提供了所需的功能模块负责。
协议
这个子模块查询有关协议信息L4。它还负责管理协议层的引导包括L4C~L4C_4流程。
启动/安全包装
由于历史原因,PASSWORD_REQUIRED_IND或SMU_FAIL_IND包含大量信息。双方启动和SIM模块需要他们。因此,有一个包装(适配器)派遣的消息,启动和SIM模块。此包装是不可见的上层应用。
启动流量控制
这个子模块管理整个开机流程。它是在通信与必要的引导,决定执行的顺序和赠款的控制元件等组成。最后,它将给控制待机屏幕和完整的启动过程。该设计是基于过程的模型,这是非常灵活和可扩展性。
模式决定
这个子模块包含了飞行模式查询和SIM选择菜单,和代码来收集所需信息的用户界面。航班模式查询是目前只有在飞行模式下编译的选项是打开的; SIM选择菜单只为多SIM项目的存在。
磁盘检查
在接通电源时,存储完整性检查是必需的。这个子模块负责调用文件系统的API来检查磁盘负责。如果任何错误,弹出消息或显示格式屏幕。
动画
要播放上电动画。
动画UI

动画工具,它是启动和关闭共享。该模块封装了动画类资源处理和参数的共同部分。
安全检查
它收集有关信息安全的用户界面,并决定哪个屏幕显示,如PIN,PUK或SIM - ME锁定屏幕。它要求密码崔显示密码输入画面。在SIM卡热插拔项目,该模块还参股进程新插入的SIM卡验证安全应用。
应用程序初始化
保持一个回调由应用程序注册。在每个阶段的引导,启动流将唤醒这个模块通知应用程序初始化。
计数式UI
一个UI工具来显示倒计时屏幕。

4 Module Interactions
This chapter describes the interactions between submodule in bootup.
4.1 Trigger and early initialization
Once user pressed power key, L4C will send POWER_ON_IND to MMI. MMITask will determine the type and dispatch to appropriate module. Bootup module only accepts KEYPAD mode for normal booting.

As bootup srv received the power-on indication, it set the flag is_launched to true first. Some other modules may receive primitives before power-on, for example, GPIO_DETECT_IND. In this case, it check the property to know whether UI screen can be shown or it can act specific behavior.
Then bootup srv notifies bootup flow control to initiate bootup. Bootup flow control takes over the whole bootup flow until all actions completed. Bootup flow control interacts with other related modules frequently, manages them, interleaves necessary steps to form the whole flow.
First of all, bootup should check disk’s sanity and initialize framework, important service. It launches early-init module to execute first.

4.2 SIM slot info & mode decision
After early init, mode decision may request SIM slot info (to know which SIMs are inserted) from bootup service. For mode decision step, bootup flow control grants the execution right to mode decision, so that it can show screens, flight mode query or SIM selection menu to user, and wait for user’s response. This step complete once booting mode is decided, means user has selected an mode or the mode can be decided automatically.
To decide mode, if need to ask user, mode decision submodule will controls the UI component., displays query screen to user. If not needed to ask user, for example, apply default mode setting, the submodule answers directly.

4.3 Animation
During animation stage, mode decision will request protocol service to boot protocol layers by given mode. Then the animation will start to play. Finally, NORMAL_INIT will be emitted. Notice that NORMAL_INIT will be executed in MMI and it takes long time, so protocol booting and animation should be triggered before this procedure.

4.4 Post-animation
For touch projects, pen calibration may be required before entering Idle. If lower power is detected, it will display a popup to user.

4.5 Security check
In following figure, bootup security controls the displaying of password UI and the security service. Bootup security querys service the verification required, invokes password UI by the information. Once user inputted, it sends the request to the service, and the service will pass the request to L4. The result will be responded from L4, through bootup service to the app-level security module. App-level security module display prompt for the result, the decide to continue the verification or start next stage.

4.6 Complete
After all, bootup flow control should request the event emitter to emit BEFORE_IDLE event. Then launch idle, notify bootup srv all procedure has been done. Bootup srv will set the completed flag to true. Finally emit COMPLETED event.

 4模块的相互作用
本章介绍在启动子模块之间的相互作用。
4.1触发和早期初始化
一旦用户按下电源键,L4C将发送POWER_ON_IND到MMI。 MMITask将决定派遣的类型和相应的模块。启动模块只接受键盘正常启动模式。
由于启动SRV收到上电指示,它设置为true is_launched首先标志。其他一些模块可能会收到之前上电原语,例如,GPIO_DETECT_IND。在这种情况下,它的属性,以检查是否知道UI屏幕可以显示,也可以采取行动的具体行为。
然后启动SRV通知启动流量控制开始启动。启动流量控制采取的一切行动,直到完成了整个启动流程。启动流量控制与其他相关模块进行交互频繁,管理他们,交织必要的步骤,从而形成整个流程。
首先,启动时应该检查磁盘的完整性和初始化框架,重要的服务。它发射的早期初始化模块首先执行。     
4.2 SIM卡插槽信息与决策模式
经过早期初始化,模式决定可能要求启动服务的SIM插槽信息(知道哪个SIM卡插入)。对于模式的决策步骤,启动流量控制执行权授予方式的决定,以便它可以显示屏幕,飞行模式查询或SIM用户选择菜单,等待用户的响应。这一步完成后启动模式决定,意味着用户已经选择了一个模式或自动模式可以决定。
要确定模式,如果需要询问用户,模式决定子模块将控制UI组件。,屏幕显示查询到用户。如果没有需要询问用户,例如,应用默认模式设置,子模块直接回答。
4.3动画
在动画阶段,模式决定将请求协议所给予的服务,引导模式协议层。然后,动画将开始播放。最后,NORMAL_INIT将被排放。请注意,NORMAL_INIT将在MMI执行,它需要很长时间,所以协议的引导和动画应该在此之前的程序引起的。
4.4后动画
对于触摸项目,笔校准可能需要在进入空闲。如果检测到低功耗,它会显示一个用户弹出。
4.5安全检查
如下图,启动安全控制密码的用户界面和安全服务展示。启动安全querys服务的核查要求,调用由信息密码的用户界面。一旦用户输入,它发送请求到服务,该服务将请求传递到L4。其结果将是回应从L4,通过启动服务,应用程序级的安全模块。应用程序级的安全模块显示结果提示,决定继续核查或明年开始阶段。
4.6完成
毕竟,启动流量控制应要求事件发射器发出BEFORE_IDLE事件。然后启动闲置,通知启动SRV所有程序已经完成。启动SRV将完成标志设置为true。最后发出完成事件。

5 Message Sequence
This chapter shows the message sequence between L4C during bootup.
5.1 Start

First of all, L4C sends a primitive MMI_EQ_POWER_ON_IND to MMI, with type POWER_ON_KEYPAD. MMI task receives this primitive, determines the type, then invoke normal bootup module.

Bootup flow control will take over following execution from bootup service. It is responsible for the whole flow. Usually, we still wait for MMI_EQ_GPIO_DETECT_IND. This indication implies earphone and other required hardware has been detected and initialized. This primitive is not strongly required by MMI bootup. However, if we boot before receive this primitive, the animation sound may play from the loudspeaker for a while before the detection completed, even if the earphone is plugged.

5.2 SIM status indication
On multiple SIM projects, we have to know the status of SIM insertion before showing mode query  screen. L4C is responsible to collect them and send SIM_STATUS_UPDATE_IND to MMI after POWER_ON_IND. The field sim_inserted_status in the message indicates the status of all SIM slots.

5.3 Boot protocol
After MMI decides which mode to boot, flight mode or normal mode, the network to be enabled, MMI has to notify protocol layer the decision so that protocol starts to initialize.

On single SIM projects, we send CFUN_STATE_REQ to L4C. If the cfun_state field in the message is 1, means enable the RF. Otherwise if cfun_state = 4, means disable the RF.
On multiple SIM projects, including dual SIM,  we send only EFUN_STATE_REQ to L4C. This message indicates which RFs should be enabled and which RFs should be disabled. L4C will be responsible to dispatch the command to all sides.

Information indications
After mode decided and start to boot protocol, information indications will start to be produced from protocol layer.

MMI_NW_SEL_MODE_IND
The setting of network selection mode: manual mode or automatic mode.
MMI_NW_START_INFO_IND
Emergency call number and default language setting from SIM

MMI_NW_CFUN_STATE_RSP / MMI_NW_EFUN_STATE_RSP
The response of MMI_NW_CFUN_STATE_REQ/MMI_NW_EFUN_STATE_REQ. We ignore this response because it is useless to residual bootup flow. However, mode switching may need to know the coming of this message, to allow another CFUN_STATE_REQ/EFUN_STATE_REQ.
MMI_SMU_PASSWORD_REQUIRED_IND
If any verification, e.g., phone lock or PIN lock, is required or all verifications are passed, L4C will report this message to MMI. After user inputted the password, MMI shall send MMI_SMU_VERIFY_PIN_REQ to L4C. L4C will report new status via another MMI_SMU_PASSWORD_REQUIRED_IND(passed or not) or MMI_SMU_FAIL_IND(error).
MMI_SMU_FAIL_IND
If any error occurs, L4C will report this message to MMI. This message implies an abnormal case, e.g., fatal error or SIM not inserted.
MMI_NW_RX_LEVEL_IND
The camp-on band and signal strength indication. This message will report frequently during connecting to a network.
MMI_NW_ATTACH_IND
Any network status change, excepting camp-on band and signal strength, will be reported by this message.
MMI_SMU_CIPHER_IND
Indicates the network is ciphered or not.
MMI_CPHS_MMI_INFO_IND
This message contains CPHS information MMI requires, such as operator name, short operator name, IMSI, and so on.
MMI_SMU_SUPPORT_PLMN_LIST
Number of PLMN list that protocol layer supports.
5.4 Security check
If security check is required, L4C will report MMI_SMU_PASSWORD_REQUIRED_IND to indicate which type of password required.

Protocol layer will try to connect to a network first for emergency call. So there will be RX_LEVEL_IND, ATTACH_IND, CIPHER_IND reported from protocol layer during verification. L4C uses PASSWORD_REQUIRED_IND to describes which type of verification currently required. MMI should get password from user and verify by VERIFY_PIN_REQ with pin_type = MMI_TYPE_UNSPECIFIED. Then L4C will report new verification information by another PASSWORD_REQUIRED_IND. Or report
SMU_FAIL_IND if any error occurs.

 

5消息序列
本章在引导过程中显示消息序列之间L4C。
5.1开始

首先,L4C发送原始MMI_EQ_POWER_ON_IND到MMI,型POWER_ON_KEYPAD。 MMI任务收到这个原始的,决定的类型,然后调用正常启动模块。

启动流量控制将接管启动服务后执行。它是对整个流程负责。通常情况下,我们仍然等待MMI_EQ_GPIO_DETECT_IND。这意味着指示耳机和其他所需的硬件已检测和初始化。这是原始的要求并不强烈MMI启动。但是,如果我们启动前收到此原始,动画声音可能从扬声器播放了一段时间的检测完成之前,即使是插耳机。

5.2 SIM卡状态指示
在多SIM项目中,我们必须知道在屏幕显示模式查询的SIM插入状态。 L4C负责收集它们,并派遣POWER_ON_IND SIM_STATUS_UPDATE_IND到MMI。在信息栏sim_inserted_status指示所有SIM卡插槽的状态。

5.3引导协议
经过MMI决定哪种模式启动,飞行模式或正常模式下,启用网络,MMI已经通知协议层的决定,以便该协议开始初始化。
在单SIM项目中,我们发送CFUN_STATE_REQ到L4C。如果在消息cfun_state领域之一,意味着使RF。否则,如果cfun_state = 4,表示禁用RF。
在多SIM卡项目,包括双SIM卡,我们只发送EFUN_STATE_REQ到L4C。此消息表明它应该启用差价合约差价合约,哪些应该被禁用。 L4C将负责调度命令各方。                                             
信息标志
模式决定后,开始启动协议,信息指示将开始从协议层产生。                            
MMI_NW_SEL_MODE_IND
手动模式或自动模式:网络选择模式设置。
MMI_NW_START_INFO_IND
紧急呼叫号码和默认语言设置从SIM                                      
MMI_NW_CFUN_STATE_RSP / MMI_NW_EFUN_STATE_RSP
该MMI_NW_CFUN_STATE_REQ / MMI_NW_EFUN_STATE_REQ响应。我们忽略这种反应,因为它是无用的残留启动流。然而,模式切换可能需要知道这个消息的到来,让另一CFUN_STATE_REQ / EFUN_STATE_REQ。
MMI_SMU_PASSWORD_REQUIRED_IND
如果任何验证,例如,电话锁或密码锁,或所有需要验证通过,L4C将这个消息报告给MMI。用户输入密码后,MMI须将MMI_SMU_VERIFY_PIN_REQ到L4C。 L4C将报告通过另一个MMI_SMU_PASSWORD_REQUIRED_IND(通过与否)或MMI_SMU_FAIL_IND(错误)的新地位。
MMI_SMU_FAIL_IND
如果出现任何错误,L4C将这个消息报告给MMI。此消息意味着一种不正常的情况下,例如,致命的​​错误或没有插入SIM卡。
MMI_NW_RX_LEVEL_IND
该营地上带和信号强度指示。此消息将报告经常在连接到网络。
MMI_NW_ATTACH_IND
任何网络状态的变化,除上营带和信号强度,将报告此消息。
MMI_SMU_CIPHER_IND
表示网络加密处理与否。
MMI_CPHS_MMI_INFO_IND
此消息包含CPHS信息MMI要求,如经营者名称,短期经营者的名称,IMSI,等等。
MMI_SMU_SUPPORT_PLMN_LIST
数PLMN列表,协议层支持。
5.4安全检查
如果安全检查是必需的,L4C将报告MMI_SMU_PASSWORD_REQUIRED_IND指出哪些类型所需的密码。
协议层将尝试连接到网络的第一个紧急呼叫。于是就有RX_LEVEL_IND,ATTACH_IND,CIPHER_IND报道从协议层中验证。 L4C使用PASSWORD_REQUIRED_IND来描述了当前需要的验证类型。 MMI应该从用户的密码和VERIFY_PIN_REQ核实pin_type = MMI_TYPE_UNSPECIFIED。然后L4C会报告另一个PASSWORD_REQUIRED_IND新的验证信息。或报告
SMU_FAIL_IND如果出现任何错误。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值