电子说
本应用笔记介绍了将 FIT 或固件集成技术用于板级支持包模块。该文档描述了概述、特性、配置、API 信息和功能,以及项目设置和手动添加 r_bsp。
概述
在运行用户应用程序之前,必须执行一系列操作才能正确设置 MCU。这些操作和操作次数将根据所使用的 MCU 而有所不同。常见示例包括:设置堆栈、初始化内存、配置系统时钟和设置端口引脚。无论应用程序如何,都需要遵循这些步骤。为了简化此过程,提供了 Renesas Board Support Package,缩写为 r_bsp。
在最低级别,r_bsp 提供了使用户的 MCU 从复位到其应用程序的 main() 函数启动所需的一切。r_bsp 还提供许多应用程序所需的通用功能。这方面的示例包括异常回调和启用或禁用中断的函数。
虽然每个应用程序在休息后都需要处理相同的步骤,但这并不意味着设置将相同。根据应用的不同,堆栈大小会有所不同,所使用的时钟也会有所不同。所有 r_bsp 配置选项都包含在一个头文件中,以便于访问。
许多客户开始在瑞萨开发板上进行开发,然后过渡到他们自己的定制板。当用户转向他们自己的定制硬件时,强烈建议他们在 r_bsp 内创建一个新的 BSP。通过遵循所提供的 BSP 所使用的相同标准和规则,用户可以尽早开始开发,因为他们知道他们的应用程序代码将很容易转移到他们的目标板上。
文件结构
r_bsp 文件结构如下图 1 所示。在根 r_bsp 文件夹下有 3 个文件夹和 2 个文件。第一个文件夹名为 doc,包含 r_bsp 文档。第二个文件夹,每个文件夹一个,支持的板。在每个板文件夹中,用户将找到特定于该板的源文件。还提供了一个名为 user 的文件夹。该文件夹只是一个占位符,用于提醒用户,建议他们创建自己的电路板文件夹。第三个文件夹是 mcu 文件夹,每个支持的 MCU 都有一个文件夹。在这个包含源代码的目录中还有一个名为 all 的文件夹,它对 r_bsp 中的所有 MCU 是通用的。虽然电路板文件夹具有特定于电路板的源文件,但 mcu 文件夹包含在同一 MCU 组中的 MCU 之间共享的源文件。这意味着,如果用户有两个不同的板,它们都使用 RX63N 的一个版本,那么每个板都有自己的板文件夹(即板>>my_board_1 和板>>my_board_2)但两者将共享相同的 MCU 文件夹(即单片机>>rx63n)。即使两个 RX63N MCU 具有不同的封装或内存大小,它们仍将共享相同的 mcu 文件夹。
文件 platform.h 供用户选择他们当前的开发平台。h,反过来,从板和 mcu 文件夹中选择所有正确的头文件以包含在用户的项目中。这将在后面的部分中更详细地讨论。readme.txt 文件是一个标准文本文件,随所有 FIT 模块提供,提供有关 r_bsp 的简要信息。
全局中断
RX MCU 上的中断因复位而被禁用。PowerON_Reset_PC() 函数将在调用用户应用程序之前启用中断。
RX 设备有两个向量表:可重定位向量表和固定向量表。顾名思义,可重定位向量表可以位于内存中的任何位置,而固定向量表位于内存映射顶部的静态位置。
可重定位向量表保存外设中断向量并由 INTB 寄存器指向。该寄存器在 PowerON_Reset_PC() 函数中的其余部分之后被初始化。可重定位向量表中的向量由 RX 工具链插入。RX 工具链通过在用户代码中使用“#pragma interrupt”指令来了解用户的中断向量。
固定向量表包含异常向量、复位向量以及一些基于闪存的选项寄存器。固定向量表与所有异常、NMI 中断、总线错误和未定义中断的默认中断处理程序一起在 vecttbl.c 中定义。用户可以选择使用 mcu_interrupts.c 中的功能为所有这些向量动态设置回调。vecttbl.c 文件还负责在适用时设置用户引导重置向量。
固定向量表中的所有向量都在 vecttbl.c 中处理。可重定位向量表中的所有向量都不会被处理,因为用户将定义这些向量,并且每个应用程序都会有所不同。这意味着在每个应用程序中都会有未填充的向量,以防意外触发中断。许多链接器支持使用静态函数填充未使用的向量。vecttbl.c 中的 undefined_interrupt_source_isr() 函数就是为此目的提供的,鼓励用户设置链接器以使用该函数的地址填充未使用的向量。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !