下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

Flashlite 186 移植
[RTOS 移植]

flshlite.jpg

Flashlite 186 是一款高性价比的单板计算机,提供 RS232、 RS485 和数字 IO 端口。它使用 AMD 嵌入式 186 寄存器,兼容 33.3 MHz RDC8822 处理器的指令集。

该单板计算机的只读内存中预安装了免版税版本的 DOS,开盒即用。 DOS 系统将控制台 IO 重定向到串行端口,或从串行端口重定向, 因此可以可以从一个标准中断程序(比如 HyperTerminal)来访问熟悉的 DOS 命令行界面。

该计算机还提供了一个闪存文件系统,可以通过将 DiskOnChip 插入到单板计算机提供的插槽中来将该系统扩展到 16 MB。

要构建提供的演示应用程序,可以使用开源的 Open Watcom 开发工具, 或 Flashlite 186 入门套件配套的 Borland 工具。


重要提示!使用 186 RTOS 移植的注意事项:

使用此移植之前,请阅读以下所有要点。

  1. 源代码组织
  2. 演示应用程序
  3. 配置和使用详情
另请参阅常见问题:我的应用程序未运行,问题可能出在哪里?

源代码组织

FreeRTOS 下载文件包含所有 FreeRTOS 移植的源代码。

请参阅源代码组织部分, 下载文件的描述和有关创建新项目的信息。

Flashlite 186 项目文件(Open Watcom 和 Borland) 位于 Demo/Flshlite 目录。



演示应用程序

FreeRTOS 源代码下载文件包含一个用于 80x186 RTOS 移植的完全抢占式多任务演示应用程序。

演示应用程序硬件设置

演示应用程序包括通过串行端口发送和接收字符的任务。 一个任务发送的字符 需要另一个任务来接收,如果任何字符被遗漏或接收顺序错误,则标记错误情况。 串行端口上 需要一个环回连接器才能让此机制正常运行(只需在串行端口连接器上将引脚 2 和 3 连接在一起)。

演示应用程序使用单板计算机上内置的 LED。 该 LED 足够用于检查 演示是否正常运行,但为了达到最佳效果,可以在 F 端口加装 8 个 LED。


构建 RTOS 演示应用程序

支持 Borland V4.52 和 Open Watcom 开发工具。 项目文件位于 Demo/Flshlite 目录,可从相应的 IDE 中打开。 应当按照 Flashlite 操作手册中的说明,下载由此产生的 RTOSDemo.exe 文件并在 SBC 上执行。 在下载之前对可执行文件进行压缩,可以将下载时间减半。 请参阅 UPX 项目页面 以获取合适的压缩实用工具。


功能

演示应用程序创建所有标准演示应用程序实时任务 (请参阅演示应用程序部分,了解各个任务的详细信息)。

端口 F 上的 LED 由 "flash" 任务控制。 每个 LED 将以恒定的但不同的频率闪烁, 闪烁频率的描述位于演示应用程序文档中。 每个 LED 都由不同的任务控制。

并非所有任务都会改变 LED,所以没有可见的指示来表明它们运行正常。 因此,系统创建了一个检查 (Check) 任务,用于确保所有其他任务中没有检测到任何错误。 SBC 内置的 LED 由检查任务控制。 该任务 每 5 秒检查一次系统中的所有任务,以确保任务均在正确执行,没有错误, 然后 检查任务会切换 LED。 如果 LED 每 5 秒切换一次,则表示未检测到错误。 如果切换频率提高到 100 毫秒,则表示检查任务发现了 至少一个错误。 可以通过将环回连接器从串行端口(如上述)移除来检查此机制, 因为这样做是在故意制造一个错误。



配置和用法详情

RTOS 移植特定配置

此移植的特定配置项目位于 Demo/Flshlite/FreeRTOSConfig.h (如果 使用的是 Borland 编译器,则位于 Demo/Flshlite/FRConfig.h)。 可以编辑此文件中定义的常量 编辑此文件中定义的常量。 特别是,可通过定义 configTICK_RATE_HZ 来设置 RTOS 滴答的频率。 演示项目提供的数值 1000 Hz 可用于测试 RTOS 内核功能,但 此速度超过了大部分应用程序的要求。 降低此值将提高效率。

每个移植都会将 "BaseType_t" 定义为该处理器的最有效数据类型。 本端口将 BaseType_t 定义为短整型。


在抢占式和协同式 RTOS 内核之间切换

Demo/Flshlite/FreeRTOSConfig.h 内的定义 configUSE_PREMPTION 设置为 1,可使用抢占式调度(如果 使用的是 Borland 编译器,则在 Demo/Flshlite/FRConfig.h 中设置);设置为 0 以 使用协同式。


开发工具选项

与所有移植一样,使用正确的编译器选项至关重要。 若要确保这一点,最佳方法是基于 提供的 RTOS 演示应用程序项目来构建您的应用程序。


代码大小

删除对任何 stdio.h 定义的函数的引用会显著增加下载时间,并会删除任何可能 导致实时性能下降的因素。 宏定义 USE_STDIO(在 IDE 项目文件中定义) 可用于在有或无控制台 IO 的情况下进行条件编译。 我的建议是只有当需要诊断时 才包括控制台 IO。


串口驱动程序

此外还需注意的是,编写串行驱动程序是为了测试部分实时内核功能,并不是 优化的解决方案, 尤其是,没有使用 DMA 设施。

我从来没有尝试过使用 COM1,只用过 COM2。 COM1 的设置可能略有不同。


浮点

当前,执行 Open Watcom 生成的包含浮点型变量的应用程序时有一个问题。 这个问题与 RTOS 内核无关。 因为,Flashlite 186 演示应用程序现在 并不执行任何浮点运算。 此问题只在 使用 Open Watcom 编译器时出现;使用 Flashlite 186 开发套件中由 JK Microsystems 提供的 Borland 编译器时不会出现 上述问题。 Borland 浮点仿真不是可重入的,但有大量证据证明存在一些技巧 使其具有可重入性。


内存分配

Source/Portable/MemMang/heap_2.c 包含在 Flashlite 演示应用程序项目中,用以提供实时内核所需的 内存分配。 请参阅 API 文档的内存管理部分, 获取完整信息。


演示应用程序串行驱动程序

编写串行端口驱动器是为了演示和测试某些实时内核功能,它并非一个优化的 解决方案。







Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.