FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [January 2017 Threads] FreeRTOS for a multi-threaded applicationPosted by manigrand on January 11, 2017 Hello,
I am a beginner with embedded programming. I would like to have some details about how the various components of FreeRTOS can be used for the application described below. I would like to have the details of not just the features, but also the names of the functions/procedures in the code of FreeRTOS that can be used for the following application to achieve maximum efficiency and reliability.
Application:
There will be many COM ports running: pulling in GPS Receiver data via RS-232/422, sensor data over RS-422 and LVDS, transceiver modem over RS-232, telemetry data over RS-422, etc. Many devices and com ports must run simultaneously and not lose data (with CRC checks on each Com port running).
Basically, we are looking for an ability to run many threads – about ten simultaneously (mainly COM ports RS-232/422, USB, Ethernet, LVDS) with CRC checks and not have any data drops. This is going to be a hard real-time embedded application.
Thank you.
FreeRTOS for a multi-threaded applicationPosted by rtel on January 11, 2017 Your question is very broad, almost more of a consultancy project, and
even then would require a lot more details from yourself to give an
answer. I would recommend starting with the book that is now available
here http://www.freertos.org/Documentation/RTOS_book.html then if
necessary come back with some more specific questions.
FreeRTOS for a multi-threaded applicationPosted by richard_damon on January 12, 2017 As RTE indicated, this isn't so much a question about what feature in FreeRTOS you will use, but a programming exercise in designing and writing the actual code to implement your application logic.
The basic layout of your program would be to have an ISR for every comm port (that is normally how serial ports work) which gather the data and send it to the appropriate task. Avoiding data loss is purely a matter making sure you have enough buffer space and that your processing tasks can take the data fast enough.
The simplest method would be for each ISR to just put the received data into a Queue, one for each serial port, and the tasks pulling the messages out of the appropriate queue. This has a high processing overhead, but for many serial devices that really use RS-232 the data rates are likely slow enough that this will work.
If the data reate really are too high for this, then the ISRs need to be a bit smarter and build up a full 'message' in a buffer and send notification to the task that it has a message to process. This requires each serial port ISR to understand the basic data format of the device it is receiving from.
All of this code is considered 'Application Specific' and not proviced by FreeRTOS, it just provides the basic ISR -> Task communication primatives, not the serial port drivers, though there may well be a sample in the code examples (which will be the queue based approach),
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|