FreeRTOS-Qemu 实现三任务同步通信机制以及API信息

摘要:
FreeRTOS多任务同步和通信机制的掌握。按照/Projects/Demo1/README.md中的提示编译Demo1例程并通过Qemu运行例程。Receiver_Task对接收到的数据进行和Sender_Task同样的累加计算并保存当前累加结果。Monitor_Task在每个执行周期检查Sender_Task发送的每个数据是否都被Receiver_Task正确的接收和处理,请自行设计一种检查机制并实现。使用FreeRTOS的任务间通信和同步API完成上述功能。效果上仅仅是函数名constportCHARconstpcNane,具有描述性的任务名。

1. 本次作业的考察要点:

作业地址:
github.com/HustWolfzzb…
Git/GCC/GDB/QEMU等工具的使用。
FreeRTOS多任务同步和通信机制的掌握。


2. 编程作业:

在github上,Fork例程项目(github.com/cbhust/STM3… 到自己的个人账号。
clone项目到本地电脑的Ubuntu虚拟机中(虚拟机环境在第一次作业中已搭建)。
按照/Projects/Demo1/README.md中的提示编译Demo1例程并通过Qemu运行例程。
在Demo1的框架基础上完成自己的本次编程作业(具体要求见第3点)。
代码完成后提交到自己的github账号上,确保助教可以正常的clone并编译运行。
在作业博客上给出代码的github链接、代码说明以及运行结果展示。


3. 编程作业具体要求:

创建三个任务:Sender_Task,Receiver_Task, Monitor_Task

  • Sender_Task的任务执行周期为2ms,Receiver_Task的任务执行周期为1000ms, Monitor_Task的任务执行周期为10000ms。
  • Sender_Task在每个执行周期向Receiver_Task发送一个32位无符号整数,第一次发送1,然后依次发送2,3,4......,发送完10000后再从1开始发送。同时对发送的数据进行计算累加计算并保存当前累加结果。
  • Receiver_Task对接收到的数据进行和Sender_Task同样的累加计算并保存当前累加结果。
  • Monitor_Task在每个执行周期检查Sender_Task发送的每个数据是否都被Receiver_Task正确的接收和处理,请自行设计一种检查机制并实现。
  • 可利用STM32F429I Discovery开发板的相关硬件(LED/LCD/串口)来输出相关状态信息。
  • 使用FreeRTOS的任务间通信和同步API完成上述功能。

4. 任务说明(会用到的API)

  • 任务创建
    头文件:task.h
    portBASE_TYPE xTaskCreate (
    pdTASK_CODE pvTaskCode, 指向任务的实现函数的指针。效果上仅仅是函数名
    const portCHAR const pcNane, 具有描述性的任务名。FreeRTOS 不会使用它。
    unsigned portSHORT usStackDepth, 指定任务堆栈的大小
    void
    pvParameters, 指针用于作为一个参数传向创建的任务
    unsigned portBASE_TYPE uxPriority, 任务运行时的优先级
    xTaskHandle *pvCreatedTask 用于传递任务的句柄,可以引用从而对任务进行其他操作。
    )

说明:

  1. 这里的任务是指一个永远不会退出的C 函数,通常是一个死循环。
  2. pcNane 其只是单纯地用于辅助调试。应用程序可以通过定义常量
    config_MAX_TASK_NAME_LEN 来定义任务名的最大长度——包括’

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇GDAL源码剖析(十一)之OGR投影说明android中getSystemService详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Bing API初体验 z

Bing正式发布没几天,除了功能和搜索结果外,作为开发者来说,我们关心的还有Bing API啥时候能出。周末浏览MSDN网站时,发现Bing Service已经上线了,链接是:http://msdn.microsoft.com/en-us/library/dd900818.aspx Bing提供的API很丰富,除了搜索外,还增加了广告Ad、图片、新闻、Ph...

vue开发环境和生产环境的跨域

前端在生产环境跨域 一,开发环境跨域 1.配置代理 如果使用vue-cli搭建的项目,可以直接使用proxyTable模块,项目框架已经集成在config -> index.js 页面配置proxyTable,如下: proxyTable: { '/api':{ //开发坏境下:target 里的地址是你跨域请求的...

使用 WSO2 API Manager 管理 Rest API

WSO2 API Manager 简介 随着软件工程的增多,越来越多的软件提供各种不同格式、不同定义的 Rest API 作为资源共享,而由于这些 API 资源的异构性,很难对其进行复用。WSO2 API Manager (下文简称为 AM)提供了一个完整的 API 发布的解决方案,从创建和管理 API,到监控 API,AM 提供了 API 整个生命周期...

docker打开api remote接口设置

前言 本文记录docker怎么打开api remote接口设置,docker的版本更新太快了,不同的版本之间,设置可能不同,本文是针对docker13.1 1、 查看配置文件位于哪里systemctl show --property=FragmentPath docker 2、编辑配置文件内容,接收所有ip请求vim /lib/systemd/sys...

局域网、以太网(标准以太网、工业以太网和实时以太网)与无线局域网

—— 因为有用到相关方面的知识所以浅显地学习了一下。 参考自《计算机网络》 邓世昆 《现场总线技术及应用教程(第2版)》 王永华 按地理覆盖范围,计算机网络分为局域网LAN和广域网WAN,通常LAN以外的网络都可归为WAN的范畴。 1局域网 局域...

Linux 系统编程 学习:3-进程间通信1:Unix IPC(2)信号

背景 上一讲我们介绍了Unix IPC中的2种管道。 回顾一下上一讲的介绍,IPC的方式通常有: Unix IPC包括:管道(pipe)、命名管道(FIFO)与信号(Signal) System V IPC:消息队列、信号量、共享内存 Socket(支持不同主机上的两个进程IPC) 我们在这一讲介绍Unix IPC,中有关信号(Signal)的处理。...