CHEN QINGBIN (CN)
WANG BIN (CN)
CN106371839A | 2017-02-01 | |||
CN102486723A | 2012-06-06 | |||
CN105468376A | 2016-04-06 | |||
CN101140523A | 2008-03-12 |
权利要求书 一种模块初始化的方法, 其特征在于, 包括: 预设模块初始化程序; 设置所述模块初始化程序于非根分区; 添加启动所述模块初始化程序的语句至系统初始化脚本。 根据权利要求 1所述的一种模块初始化的方法, 其特征在于, 所述模 块初始化程序, 包括: 预设模块初始化顺序表; 所述模块初始化顺序表包括特定模块的名称 、 初始化脚本路径及配置信息; 依次获取所述模块初始化顺序表中一特定模块的初始化脚本路径; 通过套接字通信方式发送所述路径至系统初始化程序。 根据权利要求 2所述的一种模块初始化的方法, 其特征在于, 所述模 块初始化程序, 还包括: 添加新增模块的名称、 初始化脚本路径及配置信息至所述模块初始化 顺序表。 根据权利要求 2所述的一种模块初始化的方法, 其特征在于, 所述模 块初始化程序, 还包括: 获取待修改模块的名称; 修改所述模块初始化顺序表中所述待修改模块的相应的信息; 更新所述模块初始化顺序表。 根据权利要求 1所述的一种模块初始化的方法, 其特征在于, 还包括 启动所述模块初始化程序; 系统的初始化程序解析特定模块的初始化脚本, 获取处理动作; 添加 所述处理动作至队列; 依次执行所述队列中的处理动作。 [权利要求 6] 根据权利要求 3所述的一种模块初始化的方法, 其特征在于, 启动所 述模块初始化程序, 具体为: 启动系统的初始化程序; 所述系统的初始化程序执行系统的初始化脚本; 执行所述系统的初始化脚本中的启动模块初始化程序的语句。 [权利要求 7] —种模块初始化的系统, 其特征在于, 包括: 第一预设模块, 用于预设模块初始化程序; 设置模块, 用于设置所述模块初始化程序于非根分区; 第一添加模块, 用于添加启动所述模块初始化程序的语句至系统初始 化脚本。 [权利要求 8] 根据权利要求 7所述的一种模块初始化的系统, 其特征在于, 还包括 第二预设模块, 用于预设模块初始化顺序表; 所述模块初始化顺序表 包括特定模块的名称、 初始化脚本路径及配置信息; 第一获取模块, 用于依次获取所述模块初始化顺序表中一特定模块的 初始化脚本路径; 发送模块, 用于通过套接字通信方式发送所述路径至系统初始化程序 [权利要求 9] 根据权利要求 7所述的一种模块初始化的系统, 其特征在于, 还包括 第二添加模块, 用于添加新增模块的名称、 初始化脚本路径及配置信 息至所述模块初始化顺序表; 第二获取模块, 用于获取待修改模块的名称; 修改模块, 用于修改所述模块初始化顺序表中所述待修改模块的相应 的信息; 更新模块, 用于更新所述模块初始化顺序表。 [权利要求 10] 根据权利要求 7所述的一种模块初始化的系统, 其特征在于, 还包括 第二执行模块, 用于执行所述系统的初始化脚本中的启动模块初始化 程序的语句; 系统初始化模块, 用于使系统的初始化程序解析特定模块的初始化脚 本, 获取处理动作; 添加所述处理动作至队列; 依次执行所述队列中 的处理动作。 |
技术领域
[0001] 本发明涉及系统初始化领域, 尤其涉及一种模块初始化的方法及系统。
背景技术
[0002] 随着安卓系统在手机上所占份额越来越大, 支付终端也幵始使用安卓系统, 各 厂商相应推出了智能终端。 在安卓系统中, 初始化过程是通过 init程序执行 iniLrc 及其包含的各种初始化脚本完成的。 而 iniLrc和相关脚本, 以及 init程序, 都位于 根分区中, 根分区是 ramdisk分区, 通常和 Linux内核编译在一起进行使用。 在使 用安卓系统的支付终端中, 各外设驱动 (比如打印、 卡、 通讯方式等) 的内核 模块和后台服务加载都需要在根分区的初始化 脚本中定义相关操作。 各外设驱 动如果按模块单独维护, 则一旦需要修改模块初始化过程, 相应需要升级整个 安卓系统, 系统模块化程度差。 如果将外设驱动目标代码也加入安卓系统一起 维护, 则更新一个模块则需要更新整个安卓系统, 下载吋间长且需要更多下载 流量费用。
技术问题
[0003] 本发明所要解决的技术问题是: 提供一种模块初始化的方法及系统, 实现提高 系统的模块化程度。
问题的解决方案
技术解决方案
[0004] 为了解决上述技术问题, 本发明采用的技术方案为:
[0005] 本发明提供一种模块初始化的方法, 包括:
[0006] 预设模块初始化程序;
[0007] 设置所述模块初始化程序于非根分区;
[0008] 添加启动所述模块初始化程序的语句至系统初 始化脚本。
[0009] 本发明还提供一种模块初始化的系统, 包括:
[0010] 第一预设模块, 用于预设模块初始化程序; [0011] 设置模块, 用于设置所述模块初始化程序于非根分区;
[0012] 第一添加模块, 用于添加启动所述模块初始化程序的语句至系 统初始化脚本。
发明的有益效果
有益效果
[0013] 本发明的有益效果在于: 现有技术中, 当系统启动吋, 会自动执行位于根分区 的系统初始化程序, 系统初始化程序先配置各模块的信息, 再调用系统初始化 脚本启动各模块。 本发明通过模块初始化程序依次执行各模块的 初始化程序和 初始化脚本, 并在系统初始化脚本中添加启动模块初始化程 序的语句, 使得当 系统初始化脚本被执行吋, 会调用模块初始化程序从而达到初始化各模块 的目 的。 通过将模块的初始化过程从系统初始化程序中 分离出来, 并将模块初始化 程序设置于非根分区, 实现当需要修改模块的初始化过程吋, 无需更新相应的 系统, 从而提高系统的模块化程度。
对附图的简要说明
附图说明
[0014] 图 1为本发明一种模块初始化的方法的流程框图
[0015] 图 2为本发明一种模块初始化的系统的结构框图
[0016] 标号说明:
[0017] 1、 第一预设模块; 2、 设置模块; 3、 第一添加模块; 4、 第二预设模块; 5、 第一获取模块; 6、 发送模块; 7、 第二添加模块; 8、 第二获取模块; 9、 修改 模块; 10、 更新模块; 11、 启动模块; 12、 第一执行模块; 13、 第二执行模块 ; 14、 系统初始化模块。
具体实施方式
[0018] 本发明最关键的构思在于: 通过将模块的初始化过程从系统初始化程序中 分离 出来, 实现当需要修改模块的初始化过程吋, 无需更新相应的系统, 提高系统 的模块化程度。
[0019] [0020] 如图 1所示, 本发明提供一种模块初始化的方法, 包括:
[0021] 预设模块初始化程序;
[0022] 设置所述模块初始化程序于非根分区;
[0023] 添加启动所述模块初始化程序的语句至系统初 始化脚本。
[0024] 进一步地, 所述模块初始化程序, 包括:
[0025] 预设模块初始化顺序表; 所述模块初始化顺序表包括一特定模块的名称 、 初始 化脚本路径及配置信息;
[0026] 依次获取所述模块初始化顺序表中一特定模块 的初始化脚本路径;
[0027] 通过套接字通信方式发送所述路径至系统初始 化程序。
[0028] 由上述描述可知, 所述模块初始化程序可依次将模块初始化顺序 表中各个模块 的初始化脚本路径发送给系统初始化程序, 由系统初始化程序执行相应的模块 初始化脚本, 从而达到初始化模块的目的。
[0029] 进一步地, 所述模块初始化程序, 还包括:
[0030] 添加新增模块的名称、 初始化脚本路径及配置信息至所述模块初始化 顺序表。
[0031] 由上述描述可知, 实现当系统新增模块吋, 只需将新增模块的信息添加至由模 块初始化程序维护的模块初始化顺序表即可, 无需更新系统。
[0032] 进一步地, 所述模块初始化程序, 还包括:
[0033] 获取待修改模块的名称;
[0034] 修改所述模块初始化顺序表中所述待修改模块 的相应的信息;
[0035] 更新所述模块初始化顺序表。
[0036] 由上述描述可知, 实现当需要修改模块的信息吋, 只需修改由模块初始化程序 维护的模块初始化顺序表即可, 而无需更新系统。 进一步地, 还包括:
[0037] 启动所述模块初始化程序;
[0038] 系统的初始化程序解析特定模块的初始化脚本 , 获取处理动作; 添加所述处理 动作至队列; 依次执行所述队列中的处理动作。
[0039] 由上述描述可知, 系统的初始化程序可通过解析特定模块的初始 化脚本完成初 始化特定模块的操作。
[0040] 进一步地, 启动所述模块初始化程序, 具体为: [0041] 启动系统的初始化程序;
[0042] 所述系统的初始化程序执行系统的初始化脚本 ;
[0043] 执行所述系统的初始化脚本中的启动模块初始 化程序的语句。
[0044] 由上述描述可知, 当系统启动吋会自动启动系统的初始化程序, 由于已将启动 模块初始化程序的语句添加至系统的初始化脚 本, 使得当系统的初始化程序调 用系统的初始化脚本吋会启动模块初始化程序 , 从而实现当启动系统吋, 自动 初始化各模块。
[0045]
[0046] 如图 2所示, 本发明还提供一种模块初始化的系统, 包括:
[0047] 第一预设模块 1, 用于预设模块初始化程序;
[0048] 设置模块 2, 用于设置所述模块初始化程序于非根分区;
[0049] 第一添加模块 3, 用于添加启动所述模块初始化程序的语句至系 统初始化脚本 [0050] 进一步地, 还包括:
[0051] 第二预设模块 4, 用于预设模块初始化顺序表; 所述模块初始化顺序表包括特 定模块的名称、 初始化脚本路径及配置信息;
[0052] 第一获取模块 5, 用于依次获取所述模块初始化顺序表中一特定 模块的初始化 脚本路径;
[0053] 发送模块 6, 用于通过套接字通信方式发送所述路径至系统 初始化程序。
[0054] 进一步地, 还包括:
[0055] 第二添加模块 7, 用于添加新增模块的名称、 初始化脚本路径及配置信息至所 述模块初始化顺序表;
[0056] 第二获取模块 8, 用于获取待修改模块的名称;
[0057] 修改模块 9, 用于修改所述模块初始化顺序表中所述待修改 模块的相应的信息
[0058] 更新模块 10, 用于更新所述模块初始化顺序表。
[0059] 进一步地, 还包括:
[0060] 启动模块 11, 用于启动系统的初始化程序; [0061] 第一执行模块 12, 用于使所述系统的初始化程序执行系统的初始 化脚本;
[0062] 第二执行模块 13, 用于执行所述系统的初始化脚本中的启动模块 初始化程序的 语句;
[0063] 系统初始化模块 14, 用于使系统的初始化程序解析特定模块的初始 化脚本, 获 取处理动作; 添加所述处理动作至队列; 依次执行所述队列中的处理动作。
[0064]
[0065] 本发明的实施例一为:
[0066] 预设模块初始化程序;
[0067] 设置所述模块初始化程序于非根分区;
[0068] 添加启动所述模块初始化程序的语句至系统初 始化脚本;
[0069] 启动系统的初始化程序;
[0070] 所述系统的初始化程序执行系统的初始化脚本 ;
[0071] 执行所述系统的初始化脚本中的启动模块初始 化程序的语句;
[0072] 启动所述模块初始化程序;
[0073] 预设模块初始化顺序表; 所述模块初始化顺序表包括特定模块的名称、 初始化 脚本路径及配置信息;
[0074] 依次获取所述模块初始化顺序表中一特定模块 的初始化脚本路径;
[0075] 通过套接字通信方式发送所述路径至系统初始 化程序;
[0076] 系统的初始化程序解析特定模块的初始化脚本 , 获取处理动作; 添加所述处理 动作至队列; 依次执行所述队列中的处理动作。
[0077] 由上述描述可知, 本实施例实现了在系统启动吋初始化各个模块 。
[0078]
[0079] 本发明的实施例二为:
[0080] 预设模块初始化程序;
[0081] 设置所述模块初始化程序于非根分区;
[0082] 添加启动所述模块初始化程序的语句至系统初 始化脚本;
[0083] 添加新增模块的名称、 初始化脚本路径及配置信息至模块初始化顺序 表。
[0084] 由上述描述可知, 实现当系统新增模块吋, 只需将新增模块的信息添加至由模 块初始化程序维护的模块初始化顺序表即可, 无需更新系统。
[0085]
[0086] 本发明的实施例三为:
[0087] 预设模块初始化程序;
[0088] 设置所述模块初始化程序于非根分区;
[0089] 添加启动所述模块初始化程序的语句至系统初 始化脚本;
[0090] 获取待修改模块的名称;
[0091] 修改模块初始化顺序表中所述待修改模块的相 应的信息;
[0092] 更新所述模块初始化顺序表。
[0093] 由上述描述可知, 实现当需要修改模块的信息吋, 只需修改由模块初始化程序 维护的模块初始化顺序表即可, 而无需更新系统。
[0094]
[0095] 本发明的实施例四为:
[0096] 第一预设模块 1预设模块初始化程序;
[0097] 设置模块 2设置所述模块初始化程序于非根分区;
[0098] 第一添加模块 3添加启动所述模块初始化程序的语句至系统 始化脚本;
[0099] 启动模块 11启动系统的初始化程序;
[0100] 第一执行模块 12使所述系统的初始化程序执行系统的初始化 本;
[0101] 第二执行模块 13执行所述系统的初始化脚本中的启动模块初 化程序的语句;
[0102] 第二预设模块 4预设模块初始化顺序表; 所述模块初始化顺序表包括特定模块 的名称、 初始化脚本路径及配置信息;
[0103] 第一获取模块 5依次获取所述模块初始化顺序表中一特定模 的初始化脚本路 径;
[0104] 发送模块 6通过套接字通信方式发送所述路径至系统初 化程序;
[0105] 系统初始化模块 14使系统的初始化程序解析特定模块的初始化 本, 获取处理 动作; 添加所述处理动作至队列; 依次执行所述队列中的处理动作;
[0106] 第二添加模块 7添加新增模块的名称、 初始化脚本路径及配置信息至所述模块 初始化顺序表; [0107] 第二获取模块 8获取待修改模块的名称;
[0108] 修改模块 9修改所述模块初始化顺序表中所述待修改模 的相应的信息;
[0109] 更新模块 10更新所述模块初始化顺序表。
[0110]
[0111] 本发明的实施例五为:
[0112] 将配置打印机模块的信息及启动打印机模块的 操作集成至模块初始化程序 epay _init中。 并在安卓系统的程序初始化脚本 iniLrc中添加启动模块初始化程序的语 句, 安卓系统初始化过程中, 会自动启动模块初始化程序 ep a y_init。 该程序负责 依次初始化系统中的模块。 为了初始化打印机模块, 模块初始化程序 epayjnit先 执行打印机的初始化程序 printerjnit, 再通知安卓系统初始化程序 init, 完成打印 机模块初始化脚本 printer_init.rc的执行。
[0113] 为了使安卓系统初始化程序 init能够执行打印机模块的初始化脚本, 需要增加 模块初始化程序 epay_init与初始化程序 init的通讯机制。 本发明采用本地 socket方 式将打印机模块的初始化脚本路径 /system/bin/printer_init.rc通过 socket文件发送给 安卓系统的 init程序。 init程序收到打印机的初始化脚本路径后, 调用 init程序中 的函数 init_parse_config_file解析该脚本内容, 然后调用 action_for_each_trigger将 解析到的处理动作加入队列, init程序会在事件循环中依次处理加入队列的 令 , 这样就完成了打印机模块的初始化脚本的执行 。
[0114] 由上述描述可知, 本实施例实现了在安卓系统中初始化打印机模 块, 且安卓系 统的初始化程序不直接管理打印机模块, 提高了安卓系统的模块化程度。
[0115]
[0116] 综上所述, 本发明提供的一种模块初始化的方法及系统, 通过模块初始化程序 依次执行各模块的初始化程序和初始化脚本, 并在系统初始化脚本中添加启动 模块初始化程序的语句, 使得当系统初始化脚本被执行吋, 会自动调用模块初 始化程序从而达到初始化各模块的目的; 通过将模块的初始化过程从系统初始 化程序中分离出来, 并将模块初始化程序设置于非根分区, 实现当需要修改模 块的初始化过程吋, 无需更新相应的系统, 从而提高系统的模块化程度; 进一 步地, 所述模块初始化程序可依次将模块初始化顺序 表中各个模块的初始化脚 本路径发送给系统初始化程序, 由系统初始化程序执行相应的模块初始化脚本 , 从而达到初始化模块的目的; 进一步地, 系统的初始化程序可通过解析特定 模块的初始化脚本完成初始化特定模块的操作 ; 进一步地, 实现当系统新增模 块吋, 只需将新增模块的信息添加至由模块初始化程 序维护的模块初始化顺序 表即可, 无需更新系统; 进一步地, 实现当需要修改模块的信息吋, 只需修改 由模块初始化程序维护的模块初始化顺序表即 可, 而无需更新系统。