在实际的项目中,如果需要开发一款新的BSP,一般都是拿一个已有的BSP在此基础上做修改而成。在这里,我们完全从头开始创建一个空的BSP模板来一步一步实现SylixOS的BSP开发,最后实现SylixOS最小系统的功能。
首先我们要熟悉RealEvo-IDE的基本使用,比如创建base和bsp工程等,这里可以去看看博主的其他博客有仔细介绍过。
由于我们的T3开发板是cortex-a7架构的,所以创建base工程的时候我们要选择这个架构的。
在创建bsp工程依赖的base工程时,我们选择刚刚在workspace目录下创建的BASE_T3工程
然后选择arm-none
这个选项会创建一个最基础的BSP模板,不包含任何的开发板相关代码,有助于我们在此基础上添加代码:
生成的BSP工程如上图所示
Includes 文件主要包含 BSP 工程在编译 BASE 和编译工具链中需要用到的头文件。
bsp目录下包含了最重要的几个文件:
这个目录下主要包含整个操作系统运行时需要用到的底层硬件的驱动代码,放BSP开发者需要实现的各种外设的驱动,比如中断控制器、串口、网络等等。然后在bspInit.c中会去调用这些驱动的初始化函数。在BSP最小系统的开发中,我们需要实现串口、中断控制器和定时器这三个驱动。
这个目录里面只有一个main.c文件 ,整个 main.c 里只有一个t_main接口,用于在操作系统系统成功启动之后,创建出一个tshell 终端。来让使用者和SylixOS进行交互。实际的使用中,这个文件保持原样即可,一般不需要进行改动。
这个文件中主要包含了物理内存空间的划分,主要就是内核代码段、数据段、DMA内存段、APP内存段这四个空间的大小配置,这个我们会在后面还会用到。
bsp_T3.mk、config.mk和Makefile是控制着BSP编译的三个文件,在实际的项目中,可能由于一些需求需要手动修改这些文件,在我们这个项目中,这几个文件默认即可,不需要进行额外修改。
config.ld和SylixOSBSP.ld这两个文件控制着SylixOS内核镜像如何进行链接,在实际使用中很少需要改动这个两个文件,一般默认即可。