SylixOS BSP开发(十七)

gewenbin
gewenbin
gewenbin
188
文章
15
评论
2021年4月5日13:14:55 评论 1,627

bspLib.c其他接口介绍

经过前面的学习,我们已经实现了bspLib.c中的中断和TICK相关的接口,在这个文件中还有一些其他的接口,下面我们就一起来看看这些接口的功能。

1. BSP信息获取相关接口

这些接口主要获取BSP的基本信息,比如cpu信息、板级包信息、内存基址等等,大部分的接口直接使用默认的实现即可:

SylixOS BSP开发(十七)

其中需要bspInfoHwcap 这个接口需要根据实际硬件特性进行设置:

ULONG  bspInfoHwcap (VOID)
{
    /*
     * TODO: 返回硬件特性 (如果支持硬浮点, 可以加入 HWCAP_VFP , HWCAP_VFPv3 , HWCAP_VFPv3D16 , HWCAP_NEON)
     */
    return  (HWCAP_VFP | HWCAP_VFPv4 | HWCAP_NEON | HWCAP_LPAE);
}

2. BSP钩子接口

一些重要的系统接口会预留钩子接口,比如线程创建、删除等,用户可以在钩子接口中添加自己的处理代码,其中有一些钩子接口是定义在bspLib.c中的,如果有需要,BSP开发者可以实现这些接口:

SylixOS BSP开发(十七)

其中bspReboot 接口是用来重启系统的,一般都是通过硬件看门狗来复位整个硬件系统达到重启的目的。在SylixOS命令行下输入ctrl + x 组合键最终会调用到bsp中的bspReboot 接口实现系统重启。

3. CPU和多核接口

这些接口都是控制cpu的,比如启动从核、cpu休眠和唤醒等等:

SylixOS BSP开发(十七)

  • bspMpInt:用来产生一个核间中断。
  • bspCpuUp:启动一个cpu核。
  • bspCpuDown:关闭一个cpu核。
  • bspSuspend:系统进入休眠。
  • bspCpuPowerSet:设置cpu运行等级。
  • bspCpuPowerGet:获取cpu运行等级。

在使用多核时,我们需要实现前三个接口,后三个接口一般情况下不实现,使用默认设置即可。

4. 操作系统时间相关接口

这里面主要就是系统TICK的接口,因为系统延时类接口需要以TICK作为时间基准,TICK初始化我们在之前的章节中已经实现:

SylixOS BSP开发(十七)

  • bspTickHighResolution:高精度时间修正。SylixOS系统提供了普通时间和高精度时间两类接口,普通时间接口的时间精度和TICK相关,如果TICK设置为100,那么精度就是10ms,如果TICK设置1000,精度就是1ms。而高精度时间的时间精度和定时器的计数间隔有关,一般都能达到ns级别,高精度时间可以用额外的定时器实现也可以直接使用TICK的定时器实现,但是不管使用哪种方式,都需要在底层做时间精度上的修正,这个我们在下一章节详细讲解。
  • bspDelayUs:延时微妙接口,如果需要可以实现,一般不用,使用默认实现即可。
  • bspDelayNs:延时纳秒接口,同上个接口一样,如果需要可以实现。

5.其他接口

这些接口是配合编译器或者有其他用途,使用默认即可:

SylixOS BSP开发(十七)

 

gewenbin
  • 本文由 发表于 2021年4月5日13:14:55
  • 转载请务必保留本文链接:http://www.databusworld.cn/10210.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: