Matrix653 内核接口

更新时间:
2023-11-16
下载文档

Matrix653 内核接口

本节将介绍 Matrix653 内核接口的使用。本节详细定义在 mx_core.h, mx_spinlock.h, mx_time.h 头文件中。

内核相关 API

下表展示了内核相关的 API:

API描述
mx_logo获得 Matrix653 图形标志字符串
mx_version获得 Matrix653 版本号
mx_version_string获得 Matrix653 版本号
mx_build_timeMatrix653 SDK 编译时间字符串
mx_license获得 Matrix653 license 字符串
mx_shutdown关机
mx_reset重启机器
mx_panic打印信息并重启
mx_init初始化 Matrix653 内核和各种子系统
mx_start启动 Matrix653 调度
mx_secondary_start从核启动 Matrix653 调度
mx_stop停止 Matrix653 调度
mx_spinlock_init初始化一个自旋锁结构体
mx_spinlock_lock_irq自旋锁加锁并关中断
mx_spinlock_unlock_irq自旋锁加锁并恢复中断
mx_time_inc维护内核心跳时间

mx_logo()

  • 描述 获得 Matrix653 图形标志字符串

  • 函数原型

const char *mx_logo (void);
  • 参数

  • 返回值 Matrix653 图形标志字符串

  • 注意事项

  • 示例

mx_version()

  • 描述 获得 Matrix653 版本号

  • 函数原型

MX_UINT32 mx_version (void);
  • 参数

  • 返回值 Matrix653 版本号

  • 注意事项

  • 示例

int xxx(void)
{
    MX_UINT32 version = mx_version();

    // do some thing

    return 0;
}

mx_build_time()

  • 描述 获得 Matrix653 SDK 编译时间字符串

  • 函数原型

const const char *mx_build_time (void);
  • 参数

  • 返回值 Matrix653 SDK 编译时间字符串

  • 注意事项

  • 示例

int xxx(void)
{
    const char *name = mx_build_time();

    // do some thing

    return 0;
}

mx_license()

  • 描述 获得 Matrix653 license 字符串

  • 函数原型

const char *mx_license(void);
  • 参数

  • 返回值 Matrix653 license 字符串

  • 注意事项

  • 示例

int xxx(void)
{
    const char *license = mx_license();

    // do some thing

    return 0;
}

mx_shutdown()

  • 描述 关机

  • 函数原型

void mx_shutdown (void);
  • 参数

  • 返回值

  • 注意事项

  • 示例

mx_reset()

  • 描述 重启机器

  • 函数原型

void mx_reset (void);
  • 参数

  • 返回值

  • 注意事项

  • 示例

ms_panic()

  • 描述 打印信息并重启

  • 函数原型

void mx_panic (
        /*in */ const char  *info);
  • 参数

  • 返回值

  • 注意事项

  • 示例

mx_init()

  • 描述 初始化 Matrix653 内核和各种子系统

  • 函数原型

RETURN_CODE_TYPE  mx_init (
        /*in */ const MX_BOARD_CONFIG_TYPE          *board_config,
        /*in */ void                                *argument);
  • 参数
输入/输出参数描述
[in]board_config板级配置类型指针
[in]argument参数字符串(未使用)
  • 返回值 Matrix653 内核错误码

  • 注意事项 只能在 CPU 复位后初始化基本硬件设施后调用一次

  • 示例

void mx_bsp_init(void)
{
    // Init hardware

    mx_init(&__mx_board_config, MX_NULL);

    // Do something

    mx_start();
}

mx_start()

  • 描述 启动 Matrix653 调度

  • 函数原型

RETURN_CODE_TYPE  mx_start (void);
  • 参数

  • 返回值 Matrix653 内核错误码

  • 注意事项 在 Matrix653 初始化后调用,不能重复调用

  • 示例 请参考 mx_init 函数

mx_secondary_start()

  • 描述 从核启动 Matrix653 调度

  • 函数原型

RETURN_CODE_TYPE  mx_secondary_start (
        /*in */ const MX_BOARD_CONFIG_TYPE          *board_config);
  • 参数
输入/输出参数描述
[in]board_config板级配置类型指针
  • 返回值 Matrix653 内核错误码

  • 注意事项 在重核启动后调用,不能重复调用

  • 示例

void mx_bsp_secondary_init(void)
{
    mx_secondary_start(&__mx_board_config);
}

mx_stop()

  • 描述 停止 Matrix653 调度,并调用 _mx_bsp_stop() 回调函数,最后重启机器。

  • 函数原型

void mx_stop (void);
  • 参数

  • 返回值

  • 注意事项

  • 示例

mx_spinlock_init()

  • 描述 初始化一个自旋锁结构体

  • 函数原型

void mx_spinlock_init (
        /*in */ MX_SPINLOCK_TYPE  *spinlock);
  • 参数
输入/输出参数描述
[in]spinlock自旋锁结构体指针
  • 返回值

  • 注意事项 多核互斥访问时使用

  • 示例

mx_spinlock_lock_irq()

  • 描述 自旋锁加锁并关中断

  • 函数原型

MX_INT_REG mx_spinlock_lock_irq (
        /*in */ MX_SPINLOCK_TYPE  *spinlock);
  • 参数
输入/输出参数描述
[in]spinlock自旋锁结构体指针
  • 返回值 关中断前,中断寄存器的值

  • 注意事项 多核互斥访问时使用

  • 示例

mx_spinlock_unlock_irq()

  • 描述 自旋锁解锁并恢复中断

  • 函数原型

void mx_spinlock_unlock_irq (
        /*in */ MX_SPINLOCK_TYPE  *spinlock,
        /*in */ MX_INT_REG        int_reg);
  • 参数
输入/输出参数描述
[in]spinlock自旋锁结构体指针
[in]int_reg中断寄存器的值
  • 返回值

  • 注意事项 多核互斥访问时使用

  • 示例

mx_time_inc()

  • 描述 维护内核心跳时间

  • 函数原型

RETURN_CODE_TYPE mx_time_inc (
       /*in */ SYSTEM_TIME_TYPE         increment);
  • 参数
输入/输出参数描述
[in]increment经过了多少个纳秒
  • 返回值 Matrix653 内核错误码

  • 注意事项 只能由硬件定时器中断服务函数或中断入口函数调用

  • 示例

static void timer_isr(void)
{
    // do some thing 

    mx_time_inc(BSP_CFG_NS_PER_TICK);

    // do some thing
}
文档内容是否对您有所帮助?
有帮助
没帮助