MS-RTOS 板级支持包
本章将介绍 MS-RTOS 板级支持包 BSP 相关接口的使用。
MS-RTOS 移植介绍
当移植 MS-RTOS 到某一款芯片上,需要实现一个板级支持包 BSP,BSP 里面主要包括了启动代码、链接脚本、驱动程序和 MS-RTOS 依赖于硬件平台需要实现的一些函数,MS-RTOS 定义了这些函数的接口、功能规范,开发者需要实现这些接口方能使得 MS-RTOS 能够在该芯片上运行起来,但这些函数并非强制需要全部都实现(参考函数列表的依赖)。
BSP 相关函数
下表展示了 BSP 相关的函数的依赖:
函数 | 依赖 |
---|---|
ms_bsp_reboot | 无 |
ms_bsp_shutdown | 无 |
ms_bsp_printk | 无 |
ms_bsp_log_write | 日志系统 |
ms_bsp_int_enable | 中断管理 |
ms_bsp_int_disable | 中断管理 |
ms_bsp_int_is_enable | 中断管理 |
ms_bsp_device_name | Trace |
ms_bsp_cpu_freq | Trace |
ms_bsp_timestamp_freq | Trace |
ms_bsp_int_trace_desc | Trace |
ms_bsp_tick_less_param | Tick-less |
ms_bsp_tick_less_sleep | Tick-less |
ms_bsp_pm_set_run_mode | 电源管理 |
ms_bsp_pm_notify | 电源管理 |
ms_bsp_pm_sleep | 电源管理 |
ms_bsp_pm_timer_start | 电源管理 |
ms_bsp_pm_timer_stop | 电源管理 |
ms_bsp_pm_timer_elapsed | 电源管理 |
ms_bsp_hm_notify | 健康监控设备驱动 |
ms_bsp_mmu_pre_enable | 带有 MMU 的 CPU |
ms_bsp_mpu_pre_enable | 带有 MPU 的 CPU |
ms_bsp_reboot()
描述 机器重启
函数原型
void ms_bsp_reboot(void);
参数 无
返回值 无
注意事项 无
示例 无
ms_bsp_shutdown()
描述 关机
函数原型
void ms_bsp_shutdown(void);
参数 无
返回值 无
注意事项 无
示例 无
ms_bsp_printk()
描述 打印一则内核消息
函数原型
void ms_bsp_printk(const char *buf, ms_size_t len);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | buf | 需要打印的消息 |
[in] | len | 需要打印的消息的长度 |
返回值 无
注意事项 无
示例 无
ms_bsp_log_write()
描述 记录一则 LOG 日志
函数原型
void ms_bsp_log_write(const char *buf, ms_size_t len);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | buf | 需要记录的日志 |
[in] | len | 需要记录的日志的长度 |
返回值 无
注意事项 无
示例 无
ms_bsp_int_enable()
描述 使能指定的中断
函数原型
ms_err_t ms_bsp_int_enable(ms_irq_t irq);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | irq | 中断号 |
返回值 MS-RTOS 内核错误码
注意事项 中断管理使能时需要实现,BSP、驱动开发请使用中断安全版本函数
ms_int_enable
。示例 无
ms_bsp_int_disable()
描述 屏蔽指定的中断
函数原型
ms_err_t ms_bsp_int_disable(ms_irq_t irq);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | irq | 中断号 |
返回值 MS-RTOS 内核错误码
注意事项 中断管理使能时需要实现,BSP、驱动开发请使用中断安全版本函数
ms_int_disable
。示例 无
ms_bsp_int_is_enable()
描述 判断指定的中断是否使能
函数原型
ms_bool_t ms_bsp_int_is_enable(ms_irq_t irq);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | irq | 中断号 |
返回值 MS_TRUE:使能,MS_FALSE:被屏蔽
注意事项 中断管理使能时需要实现,BSP、驱动开发请使用中断安全版本函数
ms_int_is_enable
示例 无
ms_bsp_device_name()
描述 获得设备名
函数原型
const char *ms_bsp_device_name(void);
参数 无
返回值 设备名
注意事项 Trace 使能时需要实现
示例 无
ms_bsp_cpu_freq()
描述 获得 CPU 主频
函数原型
ms_uint32_t ms_bsp_cpu_freq(void);
参数 无
返回值 CPU 主频
注意事项 Trace 使能时需要实现
示例 无
ms_bsp_timestamp_freq()
描述 获得时间戳的频率
函数原型
ms_uint32_t ms_bsp_timestamp_freq(void);
参数 无
返回值 时间戳的频率
注意事项 Trace 使能时需要实现
示例 无
ms_bsp_int_trace_desc()
描述 获得中断的 trace 描述信息
函数原型
const char *ms_bsp_int_trace_desc(void);
参数 无
返回值 中断的 trace 描述信息
注意事项 Trace 使能时需要实现
示例 无
ms_bsp_tick_less_param()
描述 获得 tick-less 模式相关工作参数
函数原型
void ms_bsp_tick_less_param(ms_tick_t *max_tick, ms_tick_t *min_tick,
ms_uint32_t *timer_cnt_per_tick,
ms_uint32_t *timer_stop_compensation);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[out] | max_tick | 硬件定时器支持的最大 tick-less 时间 |
[out] | min_tick | 至少休眠多少个 tick 时才进入 tick-less CPU 休眠模式 |
[out] | timer_cnt_per_tick | 每个 tick 多少个硬件定时器的计数值 |
[out] | timer_stop_compensation | 硬件定时器停止时的计数值补偿量 |
返回值 无
注意事项 tick-less 模式使能时需要实现
示例 无
ms_bsp_tick_less_sleep()
描述 进入 tick-less CPU 休眠模式
函数原型
void ms_bsp_tick_less_sleep(ms_tick_t expected_tick, ms_arch_sr_t sr);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | expected_tick | 期望 CPU 休眠多少个 tick |
[in] | sr | CPU 进入休眠前需要调用 ms_arch_int_resume 函数恢复 CPU 中断状态的参数 |
返回值 无
注意事项 tick-less 模式使能时需要实现
示例 无
ms_bsp_pm_set_run_mode()
描述 设置 CPU 运行模式
函数原型
void ms_bsp_pm_set_run_mode(ms_pm_run_mode_t run_mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | run_mode | CPU 运行模式 |
返回值 无
注意事项 电源管理使能时需要
示例 无
ms_bsp_pm_notify()
描述 响应电源管理的通知事件
函数原型
void ms_bsp_pm_notify(ms_pm_sleep_mode_t sleep_mode, ms_pm_event_t event);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sleep_mode | CPU 休眠模式 |
[in] | event | 电源管理的通知事件 |
返回值 无
注意事项 电源管理使能时需要
示例 无
ms_bsp_pm_sleep()
描述 让 CPU 进入指定的休眠模式
函数原型
void ms_bsp_pm_sleep(ms_pm_sleep_mode_t sleep_mode, ms_arch_sr_t sr);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | sleep_mode | 需要进入的 CPU 休眠模式 |
[in] | sr | CPU 进入休眠前需要调用 ms_arch_int_resume 函数恢复 CPU 中断状态的参数 |
返回值 无
注意事项 电源管理使能时需要
示例 无
ms_bsp_pm_timer_start()
描述 启动低功耗定时器
函数原型
void ms_bsp_pm_timer_start(ms_tick_t tick);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | tick | 低功耗定时器到期时间(tick 单位) |
返回值 无
注意事项 电源管理使能时需要
示例 无
ms_bsp_pm_timer_stop()
描述 停止低功耗定时器
函数原型
void ms_bsp_pm_timer_stop(void);
参数 无
返回值 无
注意事项 电源管理使能时需要
示例 无
ms_bsp_pm_timer_elapsed()
描述 获得 CPU 休眠期间低功耗定时器流逝的嘀嗒数
函数原型
ms_tick_t ms_bsp_pm_timer_elapsed(void);
参数 无
返回值 CPU 休眠期间低功耗定时器流逝的嘀嗒数
注意事项 电源管理使能时需要
示例 无
ms_bsp_hm_notify()
描述 响应健康监控的通知事件
函数原型
void ms_bsp_hm_notify(ms_pid_t pid, ms_hm_handle_mode_t mode);
- 参数
输入/输出 | 参数 | 描述 |
---|---|---|
[in] | pid | 健康异常的进程 ID |
[in] | mode | 健康异常处理模式 |
返回值 无
注意事项 健康监控设备驱动使能时需要
示例 无
ms_bsp_mmu_pre_enable()
描述 MMU 使能前的处理(一般用于 IO 寄存器重映射)
函数原型
void ms_bsp_mmu_pre_enable(void);
参数 无
返回值 无
注意事项 无
示例 无
ms_bsp_mpu_pre_enable()
描述 MPU 使能前的处理
函数原型
void ms_bsp_mpu_pre_enable(void);
参数 无
返回值 无
注意事项 无
示例 无