Spansion(原 Fujitsu)MB91460 演示
[RTOS 移植]
此页面显示了适用于 32 位 Spansion MB91460 系列 RTOS 移植的 FreeRTOS 演示应用程序。
此演示经过预配置可在 Spansion 的 SK-91F467-FLEXRAY 入门套件上运行,
并使用套件 CD 上携带的 Softune 编译器、调试器和 IDE。 入门套件
配备 MB91467D MCU。
重要提示!Spansion MB91460 演示使用说明
使用此 RTOS 移植之前,请阅读以下所有要点。
- 源代码组织
- 演示应用程序
- RTOS 配置和使用详情
另请参阅常见问题:我的应用程序未运行,问题可能出在哪里?
源代码组织
MB91460 演示的 Softune 工作区称为 91467d_FreeRTOS.wsp,位于 Demo/MB91460_Softune 目录下。
FreeRTOS zip 文件下载包含所有移植和演示应用程序项目的文件。 因此其包含的文件
远多于此演示使用的文件。 请参阅源代码组织部分,获取
下载文件的描述和有关创建新项目的信息。
演示应用程序
演示应用程序设置
必须正确设置入门套件跳线,以便与 Softune IDE 成功进行 RS232 通信。 所需的确切跳线设置取决于
您个人的设置。 请参阅入门套件手册,获取更多信息。
演示应用程序包含受中断驱动的 UART 测试,其中一个任务传输字符,该字符随后由另一个任务接收。 对于此功能的正确操作,
必须将环回连接器安装到 SK-91F467-FLEXRAY 板的 UART 2 (X1) 连接器上
(9 路连接器上的引脚 2 和 3 必须连接在一起)。
演示使用内置在入门套件上的 LED ,因此不需要进一步的特定硬件设置。
构建演示应用程序
- 在 Softune IDE 中打开 Demo/MB91460_Softune/91467d_FreeRTOS.wsp 工作区。
- 在 IDE 的 Project 菜单中选择 "Build",编译演示应用程序时不应含有错误或警告。
启动调试会话
本页提供的说明使用了 Spansion 调试监视器,该监视器应已编程到入门套件外部的闪存中。
如果已擦除或覆盖闪存,则首先需要还原调试监视器。 此操作的说明
在入门套件手册中已提供。
要启动调试监视器:
- 在入门套件板上找到 S5,这是一组 5 个微型开关。 确保开关 1 处于开启位置,其余 4 个开关处于关闭位置。
- 启动或重置入门套件。 如果LED D2、D4 和 D8 亮起,则调试监视器已准备好接收演示应用程序下载。
下载演示应用程序:
- 确保调试监视器如上所述运行。
- 用入门套件所需的 RS232 电缆将入门套件上的端口 UART 4 (X4) 连接到主机计算机。
- 在 Softune “Project” 菜单中选择 “Setup Project” 以打开项目设置对话框。
- 在项目设置对话框中,选择 “Debug” 选项卡、“Setup” 类别,并确保所选设置名称对于主机计算机正确无误。
下图演示了使用在 57K6 baud 的 COM1 与调试监视器进行通信的设置。
设置与 Spansion 调试监视器进行通信的方法。
- 在 Softune 的 “Debug” 菜单中选择 “Start Debug”。 RTOS 演示应用程序将被下载到入门套件 RAM 中,并在 main() 函数的开始之前执行。
控制调试会话:
- Softune提供了预期的单步执行、单步跳过、条件断点、断点等调试器功能。
- 不能使用 Softune IDE 暂停在启动工具包硬件上自由运行的程序。 自由运行的应用程序
可以通过按下入门套件板上的 INT 0 (SW2) 按钮来中断——这将暂停程序执行,并将控制权返回给
Spansion 调试监视器。
演示应用程序功能
演示应用程序可创建 8 个协程,44 个持久性任务,并定期动态创建和销毁另外 2 个任务。 这些任务主要包含标准
演示应用程序任务(有关个别任务的详细信息,请参阅演示应用程序部分)。
除了标准演示任务外,应用程序还创建了以下任务和测试:
- 寄存器测试任务
这是一组两项任务,每项任务都用已知值填充 MCU 寄存器,然后立即检查寄存器
是否包含预期(写入)值——意外值表示 RTOS 上下文切换机制中出现错误。
每个任务使用不同的值,因为优先级较低的任务将经常被中断。
- Check 任务
“检查”任务负责确保所有标准演示任务
都按预期执行。检查任务通常每 3 秒执行一次,但
其在系统内具有最高优先级,因此保证能够获得执行时间。检查任务发现的任何错误
都会被锁定,直到处理器重置。在
每个周期结束时,检查任务会切换 LED。 如果所有任务执行时都不出错,LED 将每 3 秒钟切换一次;
无论何时只要有任务报错,则切换速率会增加到 500 毫秒
[可在执行演示时移除回环连接器来测试该机制,
这样做是故意在
"com test" 任务中生成一个错误]。
- 跟踪任务
跟踪任务是将执行跟踪和任务状态信息写入 UART 5 的用户交互式任务。 要查看菜单和提供的信息,请将 UART 5 (X8) 连接到
主机上的终端程序(例如超级终端)。 其传输速率为 9600 baud。
如果演示应用程序正确执行,其表现如下:
- “检查”函数将每 3 秒钟切换一次 LED D8。
- 跟踪任务会通过 UART 5 向终端程序发送菜单选项。
- LED D1、D2 和 D3 由标准 "flash" 任务控制。 每个 LED 将以不同的固定频率切换,
频率不同, 其中 LED D1 频率最高,LED D3 频率最低。。
- LED D9 至 D16 由 "flash" 协程控制。 同样,每个都将以不同的固定频率切换。
- LED D5 由 'ComTest' Tx 任务控制。 它将在每次传输字符时进行切换。
- LED D6 由 'ComTest' Rx 任务控制。 它将在每次收到字符时进行切换。
RTOS 使用的资源
重新加载定时器 0 会生成 RTOS tick。
RTOS yield 函数会使用软件中断 64 (0x40)。
ISR 功能的 RTOS yield 会利用延迟中断。
看门狗 (Watchdog)
演示应用程序演示了为看门狗提供服务的三种方法:
- 从 tick 中断内清除看门狗。
- 从专用看门狗任务内清除看门狗。
- 正在闲置任务中清除看门狗。
可在 Demo/MB91460_Softune/SRC/watchdog/watchdog.h 的设置中选择要使用的方法。
注意:这三种方法仅用于演示目的,因为这三种实现都过于简单,无法提供安全的看门狗机制。
如果需要安全的看门狗机制,则需要在看门狗定时器重置之前执行多种系统检查。
RTOS 移植特定配置
此演示的特定配置项位于 Demo/MB91460_Softune/Src/FreeRTOSConfig.h 中。 此文件中定义的常量
在本文件中定义的常量,以适配您的应用程序。 特别是-
每个移植会定义 (#define) 'BaseType_t' 为该处理器的最有效数据类型。 本移植将
BaseType_t 定义为长整型(32 位)。
请注意,vPortEndScheduler() 尚未实现。
中断服务程序
与大多数移植不同,导致上下文切换的中断服务程序没有特殊要求,可以根据编译器文档进行编写。
宏 portYIELD_FROM_ISR() 可用于从 ISR 内请求上下文切换。 请参阅 Demo/MB91460_Softune/Src/serial/serial.c,
查看示例。
在抢占式和协同式 RTOS 内核之间切换
将 Demo/MB91460_Softune/Src/FreeRTOSConfig.h 内的定义 configUSE_PREEMPTION 设置为 1,可使用抢占式调度;
设置为 0,则可使用协作式。
编译器选项
与所有的端口一样,使用正确的编译器选项至关重要。 确保这一点的最佳方法是基于提供的演示应用程序项目
搭建您的应用程序。
内存分配
Source/Portable/MemMang/heap_3.c 包含在演示应用程序项目中,
以提供 RTOS 内核所需的内存分配。
请参阅 API 文档的内存管理部分,
获取完整信息。
串行驱动程序
请注意,提供的串行驱动器示例旨在演示 RTOS 内核的某些功能,并非表示最佳解决方案。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.