MS-RTOS APP 启动器

更新时间:
2023-08-09
下载文档

MS-RTOS APP 启动器

本章将介绍 MS-RTOS APP 启动器 launcher 的使用。

libmslauncher 使用

BSP 需要链接 libmslauncher.a 静态库,即 bspxxx.mkLOCAL_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_keyAPP 数字签名公钥,空指针时不使用 APP 数字签名
[in]sign_key_lenAPP 数字签名公钥长度
  • 返回值 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_nameAPP 的名字,不能为空指针
[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;
}
文档内容是否对您有所帮助?
有帮助
没帮助