【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。
系列文章目录
1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下
2.开发环境的选择和调试(从零开始,加油)
3.欲速则不达,今天是对RA2E1 基础知识的补充学习。
4.e2 studio 使用教程
5.Keil配置使用(使用 RASC 生成 Keil 工程)
6.Keil配置使用(使用 RASC 生成 Keil 工程)
7.(电脑重装系统)学习RA产品家族选型手册
8.问题解决、学习RA寄存器、用寄存器的方式点亮第一个LED灯。
9.继续学习RA寄存器
文章目录
目录
系列文章目录
前言
一、FSP层次架构?
二、FSP工程架构
三、FSP库的一些重要概念
总结
前言
昨天学习了RA寄存器的基础和使用,今天学习FSP固件库的基础和使用,并使用FSP固件库点亮第一个灯。其实在环境搭建的时候已经点亮了LED,今天是系统的学习,之前是囫囵吞枣,做出来就开心了,知其然更要知其所以然。
一、FSP层次架构?
RA MCU
位于最底层的是 RA 系列微控制器硬件。不同系列的 RA 微控制器之间具有非常一致、高度兼容的外设硬件, 这为软件开发人员提供了极大的便利。
BSP
往上一层是板级支持包(BSP)。BSP 处于 FSP 软件的底层,是 FSP 的功能基础。 BSP 负责 MCU 复位后初始化系统使程序执行进入 main 函数,并为上层软件提供其他服务。
BSP 函数名称以 R_BSP_ 开头,BSP 宏以 BSP_ 开头,数据类型定义以 _bsp 开头, 以便于与 FSP 的其他部分区分开来。
HAL
在 BSP 之上是硬件抽象层(Hardware Abstraction Layer (HAL)), 它以较小的内存占用量为外设提供高效的设备驱动程序,实现易于使用的接口, 使开发人员不必直接处理单片机的寄存器组,并使处于 HAL 层以上的软件更容易在整个 RA 产品家族中移植。 它是模块(Modules)的集合, 每个模块都是 RA 系列微控制器中可用的外设的驱动程序(比如 SPI、I2C、ADC), 其名称以 r_ 开头。所有这些模块本质上均与 RTOS 无关。 HAL 层除了“模块”以外还有:“接口”、“实例” 等关键概念。
HAL 层的函数的名称以 R_ 开头,格式一般为 R_<MODULE>_<Function>。 默认情况下,所有驱动函数都是非阻塞的,并返回执行状态。驱动函数本身不分配任何内存,调用时需要将内存传递给函数。
操作系统和中间件
FSP 库首选支持 FreeRTOS,可以通过软件快速配置。 FreeRTOS 是非常流行的实时操作系统,支持多任务调度、任务通知、队列、互斥、信号量和软件计时器等功能, 其系统开销非常小,占用的内存也很小,性能可靠,经常被用于内存资源十分有限且需要实时响应处理的操作环境。
中间件介于 HAL 硬件抽象层和用户应用层之间,为应用层提供服务。 FSP 的中间件支持包括:TCP/IP协议栈、USB协议栈、WiFi和蓝牙BLE协议栈、电容式触摸、FAT文件系统、图形库、加密等等。 FSP 中间件函数的名称命名格式一般为:RM_<MODULE>_<Function>。
应用层
该层为 FSP 层次划分的最顶层,包含了用户的应用代码。 用户通过 FSP 底层提供的直观、简单和统一的 API 接口调用下面各层,从而访问 FSP 的所有功能, 这样用户就能以非常简单和直接的方式编写易于理解、维护简单、移植方便的代码。
以上知识由 野火 官方提供,写的很详细,欢迎大家学习。
二、FSP工程架构
第一部分为 FSP 库及其配置,包括 ra、ra_cfg、ra_gen 这3个文件夹,它们由软件生成。
第二部分为用户代码,包括 src 文件夹。
第三部分为编译输出文件,包括 Debug 或 Release 文件夹
Project
├─ ra
│ ├─ arm 包含 ARM CMSIS 代码
│ └─ fsp 包含 FSP 库本体
│ ├─ inc
│ │ ├─ api FSP 接口 (FSP Interfaces)(接口包含 API 定义)
│ │ └─ instances FSP 实例 (FSP Instances)(接口的实例)
│ └─ src
│ ├─ bsp BSP 层 (Board Support Package)
│ │ ├─ cmsis 包含寄存器定义文件和启动文件
│ │ └─ mcu 包含 BSP 代码
│ └─ r_<module> FSP 模块 (FSP Modules)(接口由模块实现,模块通过接口提供通用功能)
├─ ra_cfg 包含用户的 FSP 配置
├─ ra_gen 包含 FSP 配置
├─ Debug/Release 包含编译后生成的中间文件和最终可执行文件等
└─ src└─hal_entry.c 包含了用户裸机应用程序的入口函数 hal_entry。当没有使用 RTOS 的时候,hal_entry 函数由C语言 main 函数调用,所以其作用基本等同于 main
以上的这些都是,有软件自动生成,只是我们需要做一个了解,由(RASC)自动生成,RASC在往期文章中已经讲过,大家可以自行翻阅。
三、FSP库的一些重要概念
使用FSP库开发,会极大的提高我们写程序的效率,使用一个新的东西,学习一个新的东西必然是密不可分一些理论知识,所以以下的基础概念需要了解,在往期文章中也提过:
模块(Modules):模块可以是外设驱动程序、纯软件或介于这两者之间,并且是 FSP 的构建模块。 模块通常是独立的单元,但它们可能依赖于其他模块。可以通过组合多个模块来构建应用程序,为用户提供所需功能。
模块实例(Module Instance):单个、独立的实例化(配置)模块。 例如,USB 端口可能需要使用 r_dmac 模块的两个实例与其他端口之间来回传输数据。
接口(Interfaces):接口包含 API 定义,具有相似功能的模块可以共用这些 API 定义。 模块通过这些定义提供通用功能。通过这些 API 定义,使用相同接口的模块可以互换使用。 可以将接口视为两个模块之间的合同,两个模块均同意使用合同中达成一致的信息进行协作。 接口只是定义,并不会增加代码的大小。
实例(Instances):接口规定所提供的功能,而接口的实例则真正实现了这些功能。 每个实例都与特定的接口关联,并使用接口中的枚举、数据结构和 API 原型。这样,应用程序便可以在需要时交换实例。
堆叠(Stacks):FSP 架构所采用的设计方式是,模块可以堆叠起来协同工作,从而形成了一个 FSP 堆。 将一个模块所能提供的功能与另一个模块所需要的功能相匹配,这就是堆叠过程。堆由顶层模块及其所有依赖项组成。
应用程序(Application):归用户所有并由用户维护的代码。
回调函数(Callback Functions):当有事件发生时(例如,USB 接收到一些数据时),将调用这些函数。 它们是应用程序的组成部分,如果是在中断使用,应尽量简短,因为它们将在中断服务程序内运行,会阻碍其他中断执行。
以上知识来源于 野火 瑞萨开发,值得学习和转发,写的很详细,让每一个初学者不会在 迷茫。
总结
这里对FSP库层次架构进行了一个系统的讲述,明天开始编程实战!!!
月明星稀
【致敬未来的攻城狮计划】— 连续打卡第十天:FSP固件库开发及FSP配置详解。相关推荐
- 《致敬未来的攻城狮计划》 第2期正式开启报名。。。
<致敬未来的攻城狮计划> 第2期 摘要: 一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师! 1 活动计划初衷 <致敬未来的攻城狮计划>来源于架构师李肯的一个念想,我一直 ...
- 【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)
系列文章目录 系列文章目录 前言 一.瑞萨MCU(CPK_RA2E1是瑞萨RA系列开发板)是什么? 首先引入是什么? 他的优势在哪? 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处? 瑞萨 ...
- [致敬未来的攻城狮计划 1] 使用 “FSP Configuration”(FSP 配置)透视配置器设置运行环境
开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(http://yyds.recan-li.cn)和 瑞萨MCU (瑞萨电子 (Renesas Electronics Corpora ...
- 《致敬未来的攻城狮计划》| 文末赠书3本
<致敬未来的攻城狮计划>-- 文末有福利 摘要: 一个崭新的计划,寻找那群有志于向嵌入式发展的未来工程师! 文章目录 1 活动计划初衷 2 活动计划形式 3 活动计划收获 4 活动计划要求 ...
- 【致敬未来的攻城狮计划】第1期 作业汇总贴 + 获奖公布
文章目录 一.写在前面 二.种子学员介绍 三.作业贴汇总 四.小小总结 五.获奖公布 六.学员有话说 七.特别致谢 一.写在前面 时间过得真快,距离 [致敬未来的攻城狮计划]第1期 的发起,已经过 ...
- 【致敬未来的攻城狮计划】第2期定向赠书《RT-Thread设备驱动开发指南》+ 《GD32 MCU原理及固件库开发指南》
开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(超链接:http://yyds.recan-li.cn)和 瑞萨MCU (超链接:瑞萨电子 (Renesas Electronics ...
- 【致敬未来的攻城狮计划】--RA2E1 开发板测评(4)UART通讯
前言 (1)首先感谢 李肯前辈的活动,从而申请到了RA2L1开发板的测评. (2)学习本文之前要具备的知识: [致敬未来的攻城狮计划]--RA2E1 开发板测评(1)keil环境配置: [致敬未来的攻 ...
- 【致敬未来的攻城狮计划】— 连续打卡第三天:欲速则不达,今天是对RA2E1 基础知识的补充学习。
系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 文章目录 目录 系列文章目录 文章目录 前言 一.RA是什 ...
- 【致敬未来的攻城狮计划】--RA2E1 开发板测评(2)LED闪烁
前言 (1)首先感谢 李肯前辈的活动,从而申请到了RA2L1开发板的测评. (2)注意,学习本文之前要学习 瑞萨Renesas RA2L1 开发板测评(1)--keil环境配置: (3)我们拿到开发板 ...
最新文章
- [move_base-24] process has died [exit code -6, cmd lib/move_base/move_base odom:=mobile_base_control
- git-commit
- 数据结构与算---重点复习知识
- bartender的安全策略不允许指定的用户执行此操作_Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令...
- RocketMQ(七)——消息的消费
- 集群间动态扩展和删除hdfs的datanode和hbase的regionserver
- linux课程设计ftp概要设计,Ftp客户端概要设计
- Activity启动模式singleTask的理解
- sfm点云代码_PCL点云显示sfm数据
- MySQL中Packet for query is too large (1327736 1048576)错误
- 使用ZYNQ实现单LUT内容的动态修改(一)PL端OOC设计流程
- aven 项目 pom.xml 第一行报错 Unknow。。。。。。。解决办法
- 基于BRNN的政务APP评论端到端方面级情感分析方法
- Spring框架-IOC
- PR AE PS安装资源包
- 高德地图-初始化地图
- 单片机C51复习题(课后习题及答案)
- JSM之ActivityMQ
- “胜兵先胜而后求战,败兵先战而后求胜”—如何通过系统分析师考试
- 小旋风asp服务器安装了还是打不开asp文件,小旋风AspWebServer - 本地架设ASP网站
热门文章
- idea写sql的xml中,使用映射时property字段报红提示Inspection info:Under construction
- Google Word2vec 学习手札
- VMware vSphere ESXi6.7 的安装及基本使用
- 从0到1腾讯云服务器使用教程(新手入门)
- WIN10系统右下角时间区显示秒数 批处理
- 从IBM、甲骨文、SAP合作中分析,互操作网络的重要性
- 通过pygame实现的python飞机大战项目
- js页面加载完成后自动执行指定方法
- 特征点的检测与匹配(ORB,SIFT,SURFT比较)[opencv-python]
- encrypt 加密解密