MS-RTOS APP 启动器
本章将介绍 MS-RTOS APP 启动器 launcher 的使用。
libmslauncher 使用
BSP 需要链接 libmslauncher.a
静态库,即 bspxxx.mk
的 LOCAL_DEPEND_LIB
需要添加 -lmslauncher
。
launcher 相关 API
下表展示了 launcher 相关的 API 在两个权限空间下是否可用:
API | 用户空间 | 内核空间 |
---|---|---|
ms_launcher_init | ● | |
ms_apps_update | ● | |
ms_app_start | ● | ● |
ms_apps_start | ● | ● |
ms_launcher_init()
描述 初始化 launcher
函数原型
ms_err_t ms_launcher_init(const void *sign_key, ms_size_t sign_key_len);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sign_key | APP 数字签名公钥,空指针时不使用 APP 数字签名 |
[in] | sign_key_len | APP 数字签名公钥长度 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例
在 BSP 中,一般由启动线程 boot_thread
来调用:
/* Autogenerated by imgtool.py, do not edit. */
const unsigned char rsa_pub_key[] = {
...
};
const unsigned int rsa_pub_key_len = 270;
static void boot_thread(ms_ptr_t arg)
{
// do something
ms_launcher_init(rsa_pub_key, rsa_pub_key_len);
// do something
}
ms_apps_update()
描述 完成 APP 镜像、启动参数文件等的升级
函数原型
ms_err_t ms_apps_update(const char *update_req_path, const char *log_path);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | update_req_path | 升级请求文件的路径 |
[in] | log_path | 升级日志文件的路径 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例
在 BSP 中,一般由启动线程 boot_thread
来调用:
static void boot_thread(ms_ptr_t arg)
{
// do something
ms_launcher_init(rsa_pub_key, rsa_pub_key_len);
ms_apps_update("/nor/update/firmware/update_req", "/nor/update/firmware/update_log");
// do something
}
ms_apps_start()
描述 解析指定的启动参数文件,完成启动参数文件指定的共享内存、管道、全局 IPC 设备的创建,依次启动具有自动启动属性的 APP
函数原型
ms_err_t ms_apps_start(const char *boot_param_file);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | boot_param_file | 启动参数文件的名字,不能为空指针 |
返回值 MS-RTOS 内核错误码
注意事项 无
示例
在 BSP 中,一般由启动线程 boot_thread
来调用:
static void boot_thread(ms_ptr_t arg)
{
// do some thing
ms_launcher_init(rsa_pub_key, rsa_pub_key_len);
ms_apps_update("/nor/update/firmware/update_req", "/nor/update/firmware/update_log");
ms_apps_start("ms-boot-param.dtb"); /* boot_param_file 参数为已安装到 flash 目录下的启动参数文件 */
// do some thing
}
在 APP 中:
int main(int argc, char *argv[])
{
ms_apps_start("ms-boot-param.dtb");
return 0;
}
ms_app_start()
描述 启动指定启动参数文件中的指定的 APP
函数原型
ms_err_t ms_app_start(const char *boot_param_file, const char *app_name, ms_pid_t *pid);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | boot_param_file | 启动参数文件的名字,不能为空指针 |
[in] | app_name | APP 的名字,不能为空指针 |
[out] | pid | 进程的 ID |
返回值 MS-RTOS 内核错误码
注意事项 无
示例
在 APP 中:
int main(int argc, char *argv[])
{
ms_pid_t pid;
ms_app_start("ms-boot-param.dtb", "app1", &pid); /* app_name 为启动参数中 APP 的名字,而不是镜像文件名 */
// do some thing
return 0;
}