控制/MCU
8. Hello World! – Hi Blinky!
您将在本章中学到以下内容:
如何从头开始为EK-RA6M4评估板创建项目。
如何在FSP配置器中更改灵活配置软件包的设置。
如何编写代码以切换EK上的用户LED。
如何下载和测试程序。
大多数编程语言新手曾编写的第一个程序(现在仍是)就是将字符串“Hello World”输出到标准输出设备的程序。对我而言,就是在编辑器中键入“Writeln(‘Hello World’)”,如同我开始学习Pascal一样。从那时起,我用其他几种语言编写了类似的代码行,主要是为了对新开发环境的安装进行完整性检查。
20世纪80年代末,当我开始编写嵌入式系统时,没有可以接收字符串的屏幕。那么,如何指示处理器发出正常工作的信号?在这些应用中几乎找不到LED,因此,必须要切换仅有的I/O引脚之一并用示波器观察波形。
这些年来,LED成为了一种商品,我们在电路板上放置了大量的LED,将它们的闪烁作为新的“Hello World”。
这也是本章的目标:使用您在之前章节中学到的所有知识,切换RA6M4系列器件的评估板(EK)上的LED:您将(几乎)从头开始编写代码,使用配置器创建一个新项目,采用灵活配置软件包(FSP)的API,最后下载、调试并运行代码。这项练习将各个操作步骤集中到一起。
前提条件包括:e2 studio以及FSP应安装在Windows工作站上(有关详细信息,请参见第4章),您应当已验证设置是否如第7章中所述工作。对于之前进行过动手实验的人员:请理解一下作者,因为作者决定再次介绍先前已经探讨过的一些主题,以方便直接从目录转到本章的读者。
在本练习中,我们将再次使用EK-RA6M4,它允许您立即探究RA6M4单片机及其所有外设,因此非常适合此类任务。可以轻松连接外部硬件,因为大多数引脚均可通过MCU引脚访问区域中的公头引脚插针或电路板的系统控制和生态系统访问区域中的生态系统连接器进行访问。由于RA6M4系列MCU是RA产品家族MCU的RA6系列的超集器件,因此可以评估该系列的大多数功能,并随后将结果应用于该系列的较小同级产品。图8-1所示为电路板的框图,其中突出显示了主要元件。
图8-1:EK-RA6M4评估板的框图
本章目录:
使用项目配置器创建项目
使用FSP配置器设置运行环境
编写前几行代码
编译第一个项目
下载和调试第一个项目
8.1 使用项目配置器创建项目
如果尚未启动e2 studio,请从Windows工作站的“Start”(开始)菜单中打开e2 studio。开发环境启动并运行后,请关闭“Welcome”(欢迎)屏幕(如果它在显示),因为它会挡住其他窗口。
由于在e2 studio中为单片机编写新程序始终需要创建一个项目,因此这是您需要执行的第一步。为此,请转到“File → New → C/C++ Project”(文件 → 新建 → C/C++ 项目),或者在“Project Explorer”(项目资源管理器)视图中单击鼠标右键,然后选择“New → C/C++ Project”(新建 → C/C++ 项目)。两种方式都将打开一个对话框,询问要使用的模板。在左侧栏中选择Renesas RA,再从主窗口中选择“Renesas RA C/C++ Project”(瑞萨RA C/C++ 项目)(请参见图4-7)。然后单击“Next”(下一步)。
图8-2:第一步是调用项目配置器
出现“Project Configurator”(项目配置器)后,为项目命名(例如MyBlinkyProject),接受项目的默认位置(将作为e2 studio工作区),或将其更改为您偏好的文件夹。单击“Next”(下一步),转到“Device and Tools Selection”(器件和工具选择)屏幕。
图8-3:项目配置器的第一个屏幕主要询问项目的名称和位置
在“Device Selection”(器件选择)下,查找名为“FSP Version”(FSP版本)的字段:它应显示与之前下载的灵活配置软件包相同的版本。从“Board”(电路板)下的下拉列表中选择EK-RA6M4,因为这是我们用于小型“Hello World”程序的硬件。该列表通常将包含RA产品家族的评估板以及“Custom User Board”(定制用户板)条目,并通过为所选FSP版本安装的Renesas CMSIS包文件创建。验证R7FA6M4AF3CFB是否在“Device”(器件)旁显示,它应该已经自动插入。如果未显示,请浏览下拉列表,直到发现为止。在“Toolchains”(工具链)框中,验证是否列出了GCC ARM Embedded, 9.2.1.20191025或更高版本,以及“Debugger”(调试器)框中是否已选择J-Link Arm。这些字段应预先填入。如果未预先填入,请相应修改以匹配上面给出的值。
图8-4:可以在此页面中选择项目的电路板和器件
如果一切正常,请单击“Next”(下一步),打开“Project Type Selection”(项目类型选择)屏幕。在此处,可以选择您的项目应当为所谓的“扁平化项目”(即无需TrustZone隔离即可立即执行的项目)、包含安全启动代码和其他安全代码的安全TrustZone项目,还是包含与安全项目一起使用的非安全代码的非安全TrustZone项目。对于本章中的练习,选择“Flat(Non-TrustZone)Project”(扁平(非TrustZone)项目),然后单击“Next”(下一步)继续操作。
图8-5:使用“Project Type Selection”(项目类型选择)屏幕,可以在TrustZone和非TrustZone项目之间进行选择
下一页是“Build Artifact and RTOS Selection”(构建工件和RTOS选择)屏幕,可以在其中设置构建的类型。只有在上一个窗口中选择了非TrustZone器件或为扁平化项目选择了TrustZone器件时,才会显示此屏幕。
可用的选项包括用于创建独立ELF(可执行和可链接格式)可执行文件的“Executable”(可执行文件)、用于创建目标代码库的“Static Library”(静态库)以及用于创建配置为与静态库一起使用的应用程序项目的“Executable using an RA Static Library”(使用RA静态库的可执行文件)。在页面右侧的下拉列表中,为项目选择可选的实时操作系统RTOS)。
图8-6:我们要编译一个没有RTOS的可执行项目
图8-7:“Project Template Selection Page”(项目模板选择页面)将显示适合项目最初内容的模板
对于小型动手实验,请选择“Executable”(可执行文件)和“No RTOS”(无RTOS),然后单击“Next”(下一步)。
这将打开“Project Template Selection”(项目模板选择)页面,可以在其中选择初始项目内容的模板。项目模板可能包含多个条目;至少包括适合所选电路板/器件组合的板级支持包。有些模板甚至包括一个完整的示例项目,但“Project Configurator”(项目配置器)将仅显示与您在先前屏幕上所做选择匹配的模板。在本例中,选择“Bare Metal – Minimal”(裸机 – 最小化)条目,以加载评估板的板级支持包。单击“Finish”(完成),完成项目的配置。
“Project Configurator”(项目配置器)将关闭并在最后一步中创建项目所需的所有文件。完成此后处理后,将出现一个对话框,询问您是否要打开“FSP Configuration”(FSP配置)透视图。选择“Open Perspective”(打开透视图)。
8.2 使用FSP配置器设置运行环境
FSP配置器启动后,将为您提供项目的只读摘要和所选软件组件的简短概述。此外,它还提供了快捷方式,可方便地访问视频网站上的瑞萨RA频道、瑞萨官网上的瑞萨设计与支持页面(可在其中访问文档、知识库和Renesas Rulz论坛)以及硬盘上的FSP用户手册。
图8-8:e2 studio内部的“FSP Configuration”(FSP配置)透视图
在以下名为BSP的选项卡中,可以查看和编辑设置的多个方面,例如电路板和器件选择。在此选项卡的属性视图中,可以为板级支持包进行其他设置,例如,主堆栈的大小或MCU的某些安全功能。在之后的“Clocks”(时钟)选项卡中,可以为您的项目分配初始时钟配置。任何潜在的问题都将以红色突出显示,将鼠标悬停在突出显示的位置上将出现有关冲突或设置不完整的说明。
第四个选项卡“Pins”(引脚)涵盖了RA MCU的引脚分配。可以根据端口或外设列出引脚。如果设置不兼容或缺失,则配置器右侧的“Package View”(封装视图)会显示器件的封装,突出显示所配置的引脚并标记错误。“Problems”(问题)视图以及“Pin Conflicts”(引脚冲突)视图中也会显示这些内容。这样,便可将可能的错误减少到最低限度。
接下来是“Interrupts”(中断)选项卡。可以在此处指定用户定义的(即非FSP)驱动程序如何使用单片机的中断控制器单元(ICU),以及将哪个中断服务程序(ISR)与ICE事件(中断)相关联。此外,还可以在此处查看分配的所有ICU事件的完整列表,包括由在配置器的“Stacks”(栈)视图中创建的FSP模块实例生成的ICU事件。
“Event Links”(事件链接)选项卡具有类似作用。可以在此处指定驱动程序如何在RA项目中使用事件链接控制器(ELC),并且可以声明此类驱动程序可能通过一组外设功能产生一组ELC事件或使用一组ELC事件。
需要花费大部分时间的页面为“Stacks”(栈)页面,可以在其中创建RTOS线程和内核对象,以及FSP软件栈。可以添加不同的对象和模块,并且可以在“Properties”(属性)视图中修改其属性。所有这些对象和模块都将自动插入,直到降至需要用户干预的程度为止。在这种情况下,一旦鼠标悬停在模块上,便会将需要注意的模块标记为红色,同时给出必要设置或问题的说明。如果问题解决,模块将恢复为标准颜色。“Stacks”(栈)视图本身以图形方式显示各种栈,可让您轻松跟踪不同的模块。在我们的示例中,仅显示了一个具有一个模块的线程:在r_ioport上使用g_ioport I/O端口驱动程序的HAL/通用线程。它是由项目配置器自动插入的,允许我们仅用几行代码便可编写让LED闪烁的程序。
最后一个选项卡的名称是“Components”(组件),其中显示了不同的FSP模块并可对模块进行选择。它还列出了可用的RA CMSIS软件组件。不过,最好通过“Stacks”(栈)页面在当前项目中添加或删除模块,因为还可以在其中进行配置。
对于我们的项目,无需在FSP配置器中进行任何更改,因为项目配置器已经为我们进行了所有必要的设置。最后,需要创建基于当前配置的附加源代码。单击FSP配置器右上角的“Generate Project Content”(生成项目内容)按钮。此操作将从FSP中提取所需文件,将其调整为在配置器中进行的设置,然后将其添加到项目中。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !