bspLib.c其他接口介绍
经过前面的学习,我们已经实现了bspLib.c中的中断和TICK相关的接口,在这个文件中还有一些其他的接口,下面我们就一起来看看这些接口的功能。
1. BSP信息获取相关接口
这些接口主要获取BSP的基本信息,比如cpu信息、板级包信息、内存基址等等,大部分的接口直接使用默认的实现即可:
其中需要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开发者可以实现这些接口:
其中bspReboot 接口是用来重启系统的,一般都是通过硬件看门狗来复位整个硬件系统达到重启的目的。在SylixOS命令行下输入ctrl + x 组合键最终会调用到bsp中的bspReboot 接口实现系统重启。
3. CPU和多核接口
这些接口都是控制cpu的,比如启动从核、cpu休眠和唤醒等等:
- bspMpInt:用来产生一个核间中断。
- bspCpuUp:启动一个cpu核。
- bspCpuDown:关闭一个cpu核。
- bspSuspend:系统进入休眠。
- bspCpuPowerSet:设置cpu运行等级。
- bspCpuPowerGet:获取cpu运行等级。
在使用多核时,我们需要实现前三个接口,后三个接口一般情况下不实现,使用默认设置即可。
4. 操作系统时间相关接口
这里面主要就是系统TICK的接口,因为系统延时类接口需要以TICK作为时间基准,TICK初始化我们在之前的章节中已经实现:
- bspTickHighResolution:高精度时间修正。SylixOS系统提供了普通时间和高精度时间两类接口,普通时间接口的时间精度和TICK相关,如果TICK设置为100,那么精度就是10ms,如果TICK设置1000,精度就是1ms。而高精度时间的时间精度和定时器的计数间隔有关,一般都能达到ns级别,高精度时间可以用额外的定时器实现也可以直接使用TICK的定时器实现,但是不管使用哪种方式,都需要在底层做时间精度上的修正,这个我们在下一章节详细讲解。
- bspDelayUs:延时微妙接口,如果需要可以实现,一般不用,使用默认实现即可。
- bspDelayNs:延时纳秒接口,同上个接口一样,如果需要可以实现。
5.其他接口
这些接口是配合编译器或者有其他用途,使用默认即可:
评论