|
|
软件应用 硬件配置完成后,就可以开发软件应用了。如前所述,本示例使用FreeRTOS操作系统创建一个将数据上传到ThingSpeak的IoT传感器节点。同时还会创建一个UART桥,以允许用户手动向ESP8266模块发送AT命令。 功能说明 本节将简要介绍该示例程序中的四个主要任务。对FreeRTOS的一些了解将会有所帮助。 这个程序中的main()函数负责: ● 调用硬件外设(UART、I2C、GPIO)的初始化函数 ● 为两个UART创建接收任务 ● 创建任务来读取I2C传感器 ● 创建任务,将传感器数据发送到WiFi模块 ● 启动FreeRTOS调度程序 一旦调度程序启动,程序将在处理以下的任务和基于优先级的中断之间交替。 vTaskSpinLEDs()大约每85毫秒执行一次。它只是简单地切换SmartFusion 2的GPIO输出,为8个板载LED创建“旋转”效果。 每次通过UART接收到一个或多个字节时,都会执行vTaskUARTBridge()函数。 ● 当发生UART中断时,中断处理程序(prvUARTRxNotificationHandler)将“发出”任务通知,表明数据可供读取。当中断处理程序退出时,任务将立即开始执行。 ● 该任务尝试执行一个任务通知,就像信号量一样。如果没有可用的通知/数据,则任务将阻止,直到数据可用。 ● 收到通知时,数据将被复制到缓冲区并通过UART0上的终端连接回显。 ● 如果收到的数据来自UART0(终端),它将被累积在缓冲区中,直到接收到\ n字符。累加的字符串然后被发送到UART1上的ESP8266。 ● 如果收到的数据来自UART1(ESP8266),则会对其进行累计并检查“OK”或某种错误并通知上传任务。 只要数据可以从光传感器读取,vTaskUARTUploadData()每20秒执行一次。它只是将来自传感器的数据格式化为AT命令字符串,并将其发送到UART1上的ESP8266。下面是使用的AT命令。
vTaskReadLightSensor()在第一次执行时初始化I2C传感器。随后的每次执行都会轮询传感器以获取新数据。如果有新的数据存在,则从传感器读取数据,并将包含新数据的通知发送到上传任务以进行处理。然后该任务将阻止传感器的采样率(默认为500 ms)。 软件配置 在编写代码之前,按照SoftConsole v4.0发行说明中所述使用SoftConsole v4.0时,需要采取一些初始化步骤。 Libero中生成的固件内核也需要导入到项目中。 1. 打开SoftConsole并选择一个方便的目录作为工作区。 2. 在SoftConsole中,选择File → New → C Project。
3. 给该项目起个名字。确保选择Cross ARM GCC作为工具链。 4. 单击Next,选择默认的配置。 5. 确保工具链名称是GNU Tools for ARM Embedded Processors(arm-none-eabi-gcc)。点击Finish。 6. 项目创建完成后,在Project Explorer中右键单击它。选择Import。选择导入一个File System。 7. 浏览到Libero的固件导出目录。检查固件文件夹以包含其中的所有文件。
8. 选择复制到项目工作区中的名为firmware新文件夹。单击Finish将固件文件导入到项目中。 9. 在Project Explorer中右键单击项目。选择Properties。展开C/C++ Build选项卡,然后单击Settings。 10. 在Tool Settings → Cross ARM C Linker → General下,单击右上角的Add.. 按钮,选择链接器脚本。 该脚本位于firmware/CMSIS/startup_gcc/debug-in-microsemi-smartfusion2-esram.ld中。
11. 在Tool Settings → Cross ARM C Linker → Miscellaneous下,勾选Use newlib nano (--specs=nano.specs)复选框。 12. 在Tool Settings → Cross ARM C Compiler → Miscellaneous → Other compiler flag下,输入(不带引号)“--specs = cmsis.specs”。 13. 选择顶部的Toolchains选项卡。 在底部附近,勾选Create extended listing选项。 14. 单击OK,应用更改。 15. 选择Run → Debug Configurations。 双击GDB OpenOCD Debugging创建一个新的配置。 16. 单击Debugger选项卡。 将 Config options更改为“--command”set DEVICE M2S010“--file board / microsemi-cortex-m3.cfg”
17. 现在基本的设置已经完成了。 稍后,一旦项目构建完成后,可执行文件将被添加到配置中。 |
|
导入FreeRTOS 软件配置完成后,下一步就是将FreeRTOS源代码导入到项目中。使用SmartFusion 2时FreeRTOS不是必需的,但可以在将项目扩展到更高级的应用程序时使得多任务更容易。 1. 下载并解压FreeRTOS源码到一个合适的位置。 2. 在FreeRTOS的Demo目录中找到CORTEX_SmartFusion2_M2S050_SoftConsole文件夹。运行CreateProjectDirectoryStructure.bat文件设置项目。 3. 在SoftConsole中,右键单击该项目并选择Import。在General下,选择File System。导航到FreeRTOS源代码所在的文件夹。
4. 选中整个FreeRTOS-Source目录,并且也要导入RTOSDemo目录的FreeRTOSConfig.h。演示中的其他文件可能会包含在官方FreeRTOS演示中,以供参考,但对于此示例不是必需的。 5. 在工作区中选择一个文件夹导入这些文件,如../FreeRTOS。单击Finish将文件导入到项目中。 6. 现在,所有FreeRTOS源文件都应在项目中可以使用。 导入示例源代码 下面的链接下载示例项目的源代码: 按照上述步骤将文件导入SoftConsole。
Include路径 现在项目中应该已经包含了所有的文件,但尝试构建该项目会导致无法找到包含文件的错误。 SoftConsole需要被告知在哪里寻找所有刚导入的头文件。 1. 在项目上单击鼠标右键。选择Properties。 2. 展开C/C++ General部分。选择Paths and Symbols。 3. 通过使用 Add.. → Workspace → <Folder>,将以上导入的所有文件夹添加为包含路径。最终结果应该如下所示:
4. SoftConsole现在应该能够找到所有需要编译的头文件。 连接到ThingSpeak 要完成示例项目,需要一个免费的ThingSpeak帐户。 ThingSpeak是来自MathWorks的物联网数据记录平台。本节假定您已经创建了一个帐户。 1. 在ThingSpeak中创建一个至少有2个数据字段的频道。根据需要填写其他信息。由此产生的着陆页将如下所示,但没有任何数据条目。
2. 点击API Keys选项卡查看您的个人Write API Key。复制此密钥。 3. 在SoftConsole中打开uart.c。在函数vTaskUARTUploadData中,将ucGetReq []中的API密钥值更改为上面的密钥。
构建并运行该项目 此时,该项目应该准备好在开发板上构建并运行。如果汇编中收到任何错误,请返回并检查以确保所有内容均如示例中所示。 1. 在SoftConsole中,选择Project→ Build All (Ctrl + B)编译项目。 2. 构建完成后,选择Run → Debug Configurations。 3. 点击Search Project按钮查找刚创建的.elf文件。它应该是唯一的选项。
4. 使用提供的USB电缆将开发板连接到PC。 5. 单击Debug 以在硬件上启动该程序。您应该可以看到LED以“旋转”模式闪烁。 使用演示程序 首次启动演示程序时,负责将数据上传到ThingSpeak的FreeRTOS任务将被禁用。然后,SmartFusion仅作为PC终端和插入电路板的ESP8266模块之间的UART桥。其原因是允许用户在开始自动上传任务之前手动配置ESP8266以连接到WiFi接入点。当然,如果需要,用户可以将此功能添加到应用程序代码中。一旦模块连接到接入点,即使在电源重新上电后,它仍会继续尝试连接到该接入点。 打开您选择的终端程序。Maker-Board开发板应该在计算机上创建4个顺序的COM端口。 UART连接将会是第三个。 串口设置为波特率115200 - 8个数据位 - 1个停止位 - 无奇偶校验。确保在按下回车键时将终端设置更改为追加CR + LF。但是,波特率可能会因安装在ESP模块上的固件而异。 1. 使用以下命令连接到接入点。每个成功的命令都应返回“OK”。
2. 当ESP8266已成功连接到接入点时,返回到SoftConsole并在文件main.c中更改下面的行:
3. 重建项目。该程序现在将创建两个读取I2C环境光传感器的FreeRTOS任务,并将该数据发送给ThingSpeak。大约每20秒,SmartFusion 2现在应该通过WiFi发送更新。 结论 本指南提供了一个基于FreeRTOS的Microsemi Maker-Board示例程序,该程序使用了大部分板载的外设。这个例子应该会为用户开发他们自己的应用程序提供一些基础,不管是有没有使用到FreeRTOS。 附加信息 加利福尼亚大学欧文分校与Microsemi一起为Maker-Board开发板制定了自己的演示项目,其中包括ESP32以及ESP8266的示例。他们的工作归档在下面的GitHub页面上: |
| 配置文件在哪找 |
|手机版|YiBoard一板网
( 冀ICP备18020117号 )
GMT+8, 2025-10-29 09:57 , Processed in 0.082931 second(s), 6 queries , Gzip On, Redis On.
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.