业务包加载
原理介绍
将不同的业务包加载到相应的Device的详细实现流程如下图所示。
图1 Device启动时业务包加载流程

- Host启动时启动客户自定义实现的Daemon进程,接收Device侧消息。
- Device启动时,拉起客户自定义实现的Client进程,Client进程通过HDC连接到Host侧的客户Daemon进程,并通知Host Daemon进程Device已启动。
- Host侧的Daemon进程接收到Device已启动的消息后,通过HDC文件传输功能把相应的业务包拷贝到Device,并通知Device侧的Client进程进行业务包的安装和启动。
- Device侧Client进程收到业务包安装消息后,进行业务包安装操作。
首先进行业务包的解密和签名校验(可选,用户根据需要自行实现业务包的解密/签名校验),然后解压业务包,执行安装脚本进行安装,安装成功后执行启动脚本启动业务进程。
- Device侧业务包安装完成后,通知Host侧Daemon进程完成业务包的安装操作。
开发步骤
- 业务包开发。
建议按照业务包中目录结构进行业务包的文件部署,包含库文件、可执行文件、安装脚本、卸载脚本以及业务进程启动脚本。
- Host侧Daemon进程开发。
用户自定义实现Host侧的Daemon进程,Daemon进程需要包含如下功能:
- 通过HDC接收Device侧Client进程发送的消息,并获取发送消息的Device ID。
- 当接收到Device侧Client进程发送的Device已启动消息后,能够根据Device ID将业务包通过HDC的文件传输功能加载到Device侧;然后通知Device侧Client进程进行业务包的安装。
详细代码示例请参见HDC样例。
- 将Daemon进程启动脚本写入Host操作系统的启动脚本,实现Host启动时自动启动Daemon进程。
参考方法如下:
- 在Host侧操作系统的/etc/init.d目录下创建一个Shell脚本,例如命名为Daemon_init.sh。
- 在Daemon_init.sh中写入Daemon进程的启动命令。
- 为Daemon_init.sh脚本添加可执行权限。
以上步骤即可以实现Daemon进程的开机启动。
- Device侧Client进程开发。
用户自定义实现Device侧Client进程,Client进程需要包含如下功能:
- 通过HDC连接Host侧Daemon进程,并发消息到Daemon进程,并能接收Host侧Daemon进程发送的消息。
功能实现代码示例可参见HDC样例。
- 进行业务包的解密、签名校验(可选,用户根据需要自行实现业务包的解密/签名校验)。
- 调用业务包的安装脚本进行业务包的安装。
- 安装完成后,启动业务进程。
Client进程开发完成后,需要将其打包到Device侧文件系统中,文件系统的修改方法请参见定制文件系统。
- 通过HDC连接Host侧Daemon进程,并发消息到Daemon进程,并能接收Host侧Daemon进程发送的消息。
- 将Client进程启动脚本写入Device系统启动脚本,实现Device启动时自动启动Client进程。
您可以将Client进程启动命令写入Device系统的rcS启动脚本中(/etc/rc.d/init.d/rcS文件)。
rcS文件需要通过修改Device侧文件系统的方式进行修改,文件系统的修改方法请参见定制文件系统。
父主题: Device侧业务包加载