67 lines
2.1 KiB
Plaintext
67 lines
2.1 KiB
Plaintext
Overview
|
|
========
|
|
This document explains the freertos_sem example, what to expect when running it and a brief
|
|
introduction to the API. The freertos_sem example code shows how semaphores works. Two different
|
|
tasks are synchronized in bilateral rendezvous model.
|
|
|
|
The example uses four tasks. One producer_task and three consumer_tasks. The producer_task starts by
|
|
creating of two semaphores (xSemaphore_producer and xSemaphore_consumer). These semaphores control
|
|
access to virtual item. The synchronization is based on bilateral rendezvous pattern. Both of
|
|
consumer and producer must be prepared to enable transaction.
|
|
|
|
|
|
Toolchain supported
|
|
===================
|
|
- IAR embedded Workbench 9.30.1
|
|
- Keil MDK 5.37
|
|
- GCC ARM Embedded 10.3.1
|
|
- MCUXpresso 11.6.0
|
|
|
|
Hardware requirements
|
|
=====================
|
|
- Mini/micro USB cable
|
|
- EVK-MIMXRT1020 board
|
|
- Personal Computer
|
|
|
|
Board settings
|
|
==============
|
|
No special settings are required.
|
|
|
|
Prepare the Demo
|
|
================
|
|
1. Connect a USB cable between the host PC and the OpenSDA USB port on the target board.
|
|
2. Open a serial terminal with the following settings:
|
|
- 115200 baud rate
|
|
- 8 data bits
|
|
- No parity
|
|
- One stop bit
|
|
- No flow control
|
|
3. Download the program to the target board.
|
|
4. Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.
|
|
|
|
Note:
|
|
To debug in qspiflash, following steps are needed:
|
|
1. Select the flash target and compile.
|
|
2. Set the SW8: 1 off 2 off 3 on 4 off, then power on the board and connect USB cable to J23.
|
|
3. Start debugging in IDE.
|
|
- Keil: Click "Download (F8)" to program the image to qspiflash first then clicking "Start/Stop Debug Session (Ctrl+F5)" to start debugging.
|
|
Running the demo
|
|
================
|
|
After the board is flashed the Tera Term will show debug console output.
|
|
|
|
Example output:
|
|
Producer_task created.
|
|
Consumer_task 0 created.
|
|
Consumer_task 1 created.
|
|
Consumer_task 2 created.
|
|
Consumer number: 0
|
|
Consumer 0 accepted item.
|
|
Consumer number: 1
|
|
Consumer number: 2
|
|
Producer released item.
|
|
Consumer 0 accepted item.
|
|
Producer released item.
|
|
Consumer 1 accepted item.
|
|
Producer released item.
|
|
Consumer 2 accepted item.
|