SylixOS BSP 分为两大部分:
- 基础支持程序
- 驱动程序
其中【基础支持程序】主要是实现系统的启动流程与硬件板最基础的功能实现,例如中断控制器管理,TICK 定时器管理,初始内存映射管理等等。【驱动程序】主要是实现操作系统对外部设备的管理。
此篇博客主要介绍 SylixOS BSP 文件的构成。SylixOS BSP 可通过 RealCoder(SylixOS 集成开发环境,可 点击这里申请下载)创建,创建出来的 BSP 模板分为三个文件夹:bsp、driver、user。
- bsp 文件夹下的文件对应的就是【基础支持程序】;
- driver 文件夹下的文件对应的就是【驱动程序】;
- user 目录为 t_main 内核线程实现,可以根据项目需要加入自己的代码。
bsp 文件夹下存在至少 5 个源文件,他们分别是:config.h、startup.S、bspInit.c、bspLib.c、bspMap.h。当然 SylixOS 并不严格规定 BSP 必须这样写,只是长期以来形成的习惯。
- config.h 文件包含板子的基本配置情况,如果本 bsp 包含对多种板子的支持,则可以在 bsp 目录下再建立一些针对各种板子的文件夹。
- startup.S 文件是系统的启动入口。
- bspInit.c 文件是 bsp 初始化入口,其中初始化函数为 bspInit(),此函数会被 startup.S 文件调用。
- bspLib.c 文件是【基础支持程序】主要实现部分,包括中断管理,TICK 初始化等等。
- bspMap.h 文件是操作系统内存布局设置与初始映射配置。
driver 文件夹下就是【驱动程序】的实现,内部分为很多子文件夹,每一个文件夹都是指定设备的驱动程序,例如 uart (或者 sio tty 等)是代表串口的驱动程序。这个在以后的博客中将会介绍具体的驱动程序编写方法。
user 目录包含 t_main.c 文件,系统完成所有的初始化后进入多任务模式,其中 t_main 是 BSP 创建的内核任务,SylixOS 既可以像 Linux 一样动态装载用户进程,也可以像其他小型 RTOS 一样直接将用户应用程序和 BSP 一起编译,运行在内核空间,如果选择将应用程序和 BSP 一起编译,t_main 任务可以认为是用户应用程序的入口,不过 SylixOS 还是不推荐这种方法,SylixOS 推荐开发者像使用 Linux 或者 Windows 一样,将指定的应用编译成独立进程,通过 SylixOS 装载器动态装载执行,方便升级与调试。