在Flex Gecko上添加MicriumOS的设计指南

描述

Silicon Labs(亦称“芯科科技”)制作的本系列博客是在Flex Gecko上添加MicriumOS的设计指南,并且至少可以在设备上运行一个任务。

开始

首先需要安装最新的Simplicity Studio,以避免随着时间的推移,软件更新造成的冲突。在安装该工具之后,甚至在尝试添加任何内容之前,必须确保拥有必要的SDK。以下是安装项目:

  • 32位MCU SDK - 5.5.0.0

  • Micrium OS - 5.4.0

  • Flex SDK - 2.3.0.0

然后,我将Flex Gecko EFR32FG12安装到Wireless Started Kit Mainboard(BRD4001A)上。之后,我使用提供的USB电缆将其连接到PC。Simplicity Studio认识连接到WSTK的Flex Gecko,并显示了Flex SDK中示例的链接(参见图1)。

Silicon Labs

图1 - 初始设置验证

加载Basic Flex SDK示例

作为开始,我决定使用Flex SDK的“RAIL:Simple RAIL without HAL”示例。您可以通过扩展“Silicon Labs Flex SDK示例”链接下的项目列表来找到该项目:

Silicon Labs

图2 - Flex SDK示例链接

然后找到并单击图3中显示的示例将其添加到您的工作区中:

Silicon Labs

将示例加载到工作区后,您可能会收到如图4所示的通知。只需单击“OK”即可。

Silicon Labs

图4 - 自动升级通知

然后您将看到simple_rail_without_hal.isc打开,您可以在其中配置RAIL。在我的情况下,我将所有内容都保留在默认值中,只需单击“Generate”,如图5所示。

Silicon Labs

图5 - RAIL项目配置

此时,您现在应该设置一个基本的Flex Gecko示例来构建和运行。但是,我发现默认的项目设置将编译器优化设置为“Optimizefor size (-Os)”,这最终会使项目调试变得困难。因此,我将优化切换为“None(-O0)”。

Silicon Labs

图6 - 编译器优化

Micrium OS添加到工作区

现在您已经构建并运行了一个基本的Flex Gecko示例,我们继续并开始将MicriumOS源文件添加到工作区中。首先,找到MicriumOS目录,它应该位于:

C:\SiliconLabs\SimplicityStudio\v4\developer\sdks\gecko_sdk_suite\v2.3\platform\micrium_os

现在在Simplicity Studio中将“micrium_os”文件夹拖放到您的项目(simple_rail_without_hal)中。在执行此操作时,请确保在单击“OK”之前选择了“Copyfiles and folders”,如图7所示。

Silicon Labs

图7 - 将Micrium OS文件夹添加到项目

然后您将不得不删除使用Micrium OS添加的所有不必要的文件(这很乏味)。

最后,编译器需要知道在哪里查找头文件,因此我们必须为项目设置添加两个编译器包含路径:

"${workspace_loc:/${ProjName}/micrium_os}""${workspace_loc:/${ProjName}/micrium_os/cfg}"

Silicon Labs

图8- 包含路径的Micrium OS编译器

配置Micrium OS

现在您已将Micrium OS作为您的项目的一部分,让我们继续对默认的MicriumOS配置进行一些小的调整。

修改main.c

我们将修改由“RAIL:SimpleRAIL without HAL”示例生成的默认main.c。 Micrium OS需要在main.c中包含以下路径,所以请继续并按如下所示添加它们:

#include 

#include 

#include 

#include 

#include    /* Private file, use should be limited */

我们将修改main.c来初始化MicriumOS并创建一个启动任务。为此,您需要指定任务堆栈大小和优先级。我们通常通过将它们定义为常量并将它们传递给OSTaskCreate()来实现这一点。启动任务还需要自己的堆栈和任务控制块(OS_TCB)以及其函数原型。

以下是StartTask函数的主体,其中内核tick被初始化,以及Common模块。请注意,该功能在结束时包含一个无限循环,延迟时间为1秒。这样做是为了让CPU时间用于其他正在或将最终在系统上运行的任务。

最后,让我们修改main()来初始化CPU,将中断处理程序重新分配为内核感知,初始化内核,创建启动任务并启动操作系统。

您现在被设置为构建并运行该项目。你可以在while循环里面的StartTask中放置一个断点,注意你会每秒钟触碰一次(或者按照你在OSTimeDly()中配置的延迟指定)。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分