• 在T3开发板上实现SylixOS最小系统(一)创建BSP工程


    一、创建BSP工程

      在实际的项目中,如果需要开发一款新的BSP,一般都是拿一个已有的BSP在此基础上做修改而成。在这里,我们完全从头开始创建一个空的BSP模板来一步一步实现SylixOS的BSP开发,最后实现SylixOS最小系统的功能。
      首先我们要熟悉RealEvo-IDE的基本使用,比如创建base和bsp工程等,这里可以去看看博主的其他博客有仔细介绍过。
      由于我们的T3开发板是cortex-a7架构的,所以创建base工程的时候我们要选择这个架构的。
    在这里插入图片描述

    在创建bsp工程依赖的base工程时,我们选择刚刚在workspace目录下创建的BASE_T3工程
    在这里插入图片描述
    然后选择arm-none
    在这里插入图片描述
    这个选项会创建一个最基础的BSP模板,不包含任何的开发板相关代码,有助于我们在此基础上添加代码:
    在这里插入图片描述
    生成的BSP工程如上图所示

    1 bsp工程目录介绍

    1.1 Includes 文件

    Includes 文件主要包含 BSP 工程在编译 BASE 和编译工具链中需要用到的头文件。

    1.2 SylixOS目录

    1.2.1 bsp目录

    bsp目录下包含了最重要的几个文件:

    1. bspInit.c:SylixOS 系统启动初始化文件,在这个文件中会初始化系统的一系列内核组件和外设驱动。
    2. bspLib.c:SylixOS的 BSP 接口文件,这个文件中包含了一系列的内核会使用的接口,需要根据不同的芯片去实现这些接口。比如关闭/使能中断向量号、获取BSP信息、系统TICK初始化等等。
    3. bspMap.h:系统物理地址和虚拟地址空间映射关系文件,这个文件中用两个表来描述了系统需要使用的物理地址空间和虚拟地址空间如何映射。
    4. config.h:直接包含SylixOS/config.h的config.h。
    5. startup.S:SylixOS内核入口初始化文件,主要包含了架构相关的一些设置,比如中断向量表设置、栈设置等等。由于这些设置都是架构相关的,所以使用汇编来实现的。

    1.2.2 driver目录

    这个目录下主要包含整个操作系统运行时需要用到的底层硬件的驱动代码,放BSP开发者需要实现的各种外设的驱动,比如中断控制器、串口、网络等等。然后在bspInit.c中会去调用这些驱动的初始化函数。在BSP最小系统的开发中,我们需要实现串口、中断控制器和定时器这三个驱动。

    1.2.3 user目录

    这个目录里面只有一个main.c文件 ,整个 main.c 里只有一个t_main接口,用于在操作系统系统成功启动之后,创建出一个tshell 终端。来让使用者和SylixOS进行交互。实际的使用中,这个文件保持原样即可,一般不需要进行改动。

    1.3 config.h

    这个文件中主要包含了物理内存空间的划分,主要就是内核代码段、数据段、DMA内存段、APP内存段这四个空间的大小配置,这个我们会在后面还会用到。

    1.4 bsp_T3.mk、config.mk和makefile

    bsp_T3.mk、config.mk和Makefile是控制着BSP编译的三个文件,在实际的项目中,可能由于一些需求需要手动修改这些文件,在我们这个项目中,这几个文件默认即可,不需要进行额外修改。

    1.5 链接脚本

    config.ld和SylixOSBSP.ld这两个文件控制着SylixOS内核镜像如何进行链接,在实际使用中很少需要改动这个两个文件,一般默认即可。

  • 相关阅读:
    基于倍福CX5120和温度采集模块实现闭环算法的温度控制
    图深度学习_谱图论和图上的信号处理
    一分钟!图片生成32种动画;Adobe绘画工具大升级;复盘Kaggle首场LLM比赛;VR科普万字长文 | ShowMeAI日报
    微信小程序自动化采集方案
    PMP_第10章章节试题
    最长重复子数组
    Python中的装饰器、迭代器、生成器、推导式、匿名函数和高阶函数
    Spring Boot的自动装配原理
    Python使用修饰函数判断执行时间
    2022.11.8每日刷题打卡
  • 原文地址:https://blog.csdn.net/graceyun/article/details/125800535