下载
中文
注册

业务包加载

原理介绍

将不同的业务包加载到相应的Device的详细实现流程如下图所示。

图1 Device启动时业务包加载流程
  1. Host启动时启动客户自定义实现的Daemon进程,接收Device侧消息。
  2. Device启动时,拉起客户自定义实现的Client进程,Client进程通过HDC连接到Host侧的客户Daemon进程,并通知Host Daemon进程Device已启动。
  3. Host侧的Daemon进程接收到Device已启动的消息后,通过HDC文件传输功能把相应的业务包拷贝到Device,并通知Device侧的Client进程进行业务包的安装和启动。
  4. Device侧Client进程收到业务包安装消息后,进行业务包安装操作。

    首先进行业务包的解密和签名校验(可选,用户根据需要自行实现业务包的解密/签名校验),然后解压业务包,执行安装脚本进行安装,安装成功后执行启动脚本启动业务进程。

  5. Device侧业务包安装完成后,通知Host侧Daemon进程完成业务包的安装操作。

开发步骤

  1. 业务包开发。

    建议按照业务包中目录结构进行业务包的文件部署,包含库文件、可执行文件、安装脚本、卸载脚本以及业务进程启动脚本。

  2. Host侧Daemon进程开发。

    用户自定义实现Host侧的Daemon进程,Daemon进程需要包含如下功能:

    • 通过HDC接收Device侧Client进程发送的消息,并获取发送消息的Device ID。
    • 当接收到Device侧Client进程发送的Device已启动消息后,能够根据Device ID将业务包通过HDC的文件传输功能加载到Device侧;然后通知Device侧Client进程进行业务包的安装。

    详细代码示例请参见HDC样例

  3. 将Daemon进程启动脚本写入Host操作系统的启动脚本,实现Host启动时自动启动Daemon进程。

    参考方法如下:

    1. 在Host侧操作系统的/etc/init.d目录下创建一个Shell脚本,例如命名为Daemon_init.sh。
    2. 在Daemon_init.sh中写入Daemon进程的启动命令。
    3. 为Daemon_init.sh脚本添加可执行权限。

    以上步骤即可以实现Daemon进程的开机启动。

  4. Device侧Client进程开发。

    用户自定义实现Device侧Client进程,Client进程需要包含如下功能:

    • 通过HDC连接Host侧Daemon进程,并发消息到Daemon进程,并能接收Host侧Daemon进程发送的消息。

      功能实现代码示例可参见HDC样例

    • 进行业务包的解密、签名校验(可选,用户根据需要自行实现业务包的解密/签名校验)。
    • 调用业务包的安装脚本进行业务包的安装。
    • 安装完成后,启动业务进程。

    Client进程开发完成后,需要将其打包到Device侧文件系统中,文件系统的修改方法请参见定制文件系统

  5. 将Client进程启动脚本写入Device系统启动脚本,实现Device启动时自动启动Client进程。

    您可以将Client进程启动命令写入Device系统的rcS启动脚本中(/etc/rc.d/init.d/rcS文件)。

    rcS文件需要通过修改Device侧文件系统的方式进行修改,文件系统的修改方法请参见定制文件系统