0 microprocessor interfacing tasks and examples. 1 overview task state diagram task priority idle...
TRANSCRIPT
![Page 1: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/1.jpg)
1
Microprocessor Interfacing
Tasks and Examples
![Page 2: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/2.jpg)
2
Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming Conventions Example Code
![Page 3: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/3.jpg)
3
Task States Diagram Running – When a task
is actually executing it is said to be in the Running state. It is currently utilizing the processor.
Ready – Ready tasks are those that are able to execute (they are not blocked or suspended) but are not currently executing because a different task of equal or higher priority is already in the Running state.
![Page 4: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/4.jpg)
4
Task States Diagram Blocked – A task is said to be in the
Blocked state if it is currently waiting for either a temporal or external event. For example, if a task calls vTaskDelay() it will block (be placed into the Blocked state) until the delay period has expired - a temporal event. Tasks can also block waiting for queue and semaphore events. Tasks in the Blocked state always have a 'timeout' period, after which the task will be unblocked. Blocked tasks are not available for scheduling.
Suspended – Tasks in the Suspended state are also not available for scheduling. Tasks will only enter or exit the suspended state when explicitly commanded to do so through the vTaskSuspend() and xTaskResume() API calls respectively. A 'timeout' period cannot be specified.
![Page 5: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/5.jpg)
5
Task Priority Priority Number ranges from 0 to
(configMAX_PRIORITIES - 1) Zero is lowest priority tskIDLE_PRIORITY is zero
![Page 6: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/6.jpg)
6
Typical Task
void vATaskFunction( void *pvParameters ) {// Initialization code goes here
for( ;; ) { // Task application code here
// in endless loop with preemptive or // cooperative context switching by // scheduler. }
}
![Page 7: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/7.jpg)
7
Idle Task Created automatically by
scheduler, not the user. Releases heap space when
vTaskDelete() is used on task tskIDLE_PRIORITY = 0 Other tasks may have zero priority Never block idle task
![Page 8: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/8.jpg)
8
Idle Task Hook Implements co-routine in idle task. Example blink LED every pass
through idle task via vFlashCoRoutine(…)
See FreeRTOS.ORG Web Pages
![Page 9: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/9.jpg)
9
Co-routine Write co-routine Schedule co-routine by
vCoRoutineSchedule( void ); call Create co-routine within main( ) by
xCoRoutineCreate( vFlashCoRoutine, PRIORITY_0, 0 );
Start scheduler with in main( ) by vTaskStartScheduler();
See FreeRTOS.ORG web pages for details
![Page 10: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/10.jpg)
10
RTOS Kernel Utilities Queue implementation Semaphore implementation Idle hook function
![Page 11: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/11.jpg)
11
Trace Utility Configure system to use trace by
configUSE_TRACE_FACILITY Start trace by vTaskStartTrace() Stop trace by ulTaskEndTrace() Automatically closes if buffers overflow. Copy buffer to PC Use tracecon.exe to convert to CSV file Plot using Excel or MatLab
![Page 12: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/12.jpg)
12
Trace Utility
![Page 13: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/13.jpg)
13
Naming Conventions Variables
Variables of type char are prefixed c Variables of type short are prefixed s Variables of type long are prefixed l Variables of type float are prefixed f Variables of type double are prefixed d Enumerated variables are prefixed e Other types (e.g. structs) are prefixed x Pointers have an additional prefixed p, for example a
pointer to a short will have prefix ps Unsigned variables have an additional prefixed u, for
example an unsigned short will have prefix us
![Page 14: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/14.jpg)
14
Naming Conventions Functions
File private functions are prefixed with prv
API functions are prefixed with their return type, as per the convention defined for variables
Function names start with the file in which they are defined. For example vTaskDelete is defined in Task. c
![Page 15: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/15.jpg)
15
Application ComponentsThe timing requirements of the hypothetical system can be
split into three categories: Strict timing - the plant control
The control function has a very strict timing requirement as it must execute every 10ms.
Flexible timing - the LED While the LED outputs have both maximum and
minimum time constraints, there is a large timing band within which they can function.
Deadline only timing - the human interfaces This includes the keypad, LCD, RS232 and TCP/IP
Ethernet communications. The human interface functions have a different type of timing requirement as only a maximum limit is specified. For example, the keypad must be scanned at least every 10ms, but any rate up to 10ms is acceptable.
![Page 16: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/16.jpg)
16
Example Code Main.c Dynamic.c BlockQ.c ComTest.C CRFlash.c CRHook.c Death.c
Flash.c Flop.c Integer.c PollQ.c Print.C SemTest.C Embedded TCP/IP
Examples
![Page 17: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/17.jpg)
17
Main.c Starting/Stopping the kernel Using the trace visualization utility Allocation of priorities
![Page 18: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/18.jpg)
18
Dynamic.c Passing parameters into a task Dynamically changing priorities Suspending tasks Suspending the scheduler
![Page 19: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/19.jpg)
19
BlockQ.C Inter-task communications Blocking on queue reads Blocking on queue writes Passing parameters into a task Pre-emption Creating tasks
![Page 20: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/20.jpg)
20
ComTest.C Serial communications Using queues from an ISR Using semaphores from an ISR Context switching from an ISR Creating tasks
![Page 21: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/21.jpg)
21
CRFlash.C Creating co-routines Using the index of a co-routine Blocking on a queue from a co-
routine Communication between co-
routines
![Page 22: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/22.jpg)
22
CRHook.C Creating co-routines Passing data from an ISR to a co-
routine Tick hook function Co-routines blocking on queues
![Page 23: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/23.jpg)
23
Death.C Dynamic creation of tasks (at run
time) Deleting tasks Passing parameters to tasks
![Page 24: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/24.jpg)
24
Flash.C Delaying Passing parameters to tasks Creating tasks
![Page 25: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/25.jpg)
25
Flop.C Floating point math Time slicing Creating tasks
![Page 26: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/26.jpg)
26
Integer.C Time slicing Creating tasks
![Page 27: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/27.jpg)
27
PollQ.c Inter-task communications Manually yielding processor time Polling a queue for space to write Polling a queue for space to read Pre-emption Creating tasks
![Page 28: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/28.jpg)
28
Print.C Queue usage
![Page 29: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/29.jpg)
29
SemTest.C Binary semaphores Mutual exclusion Creating tasks
![Page 30: 0 Microprocessor Interfacing Tasks and Examples. 1 Overview Task State Diagram Task Priority Idle Hook AND Co-Routines Kernel and Trace Utilities Naming](https://reader030.vdocuments.us/reader030/viewer/2022032722/56649f455503460f94c661f7/html5/thumbnails/30.jpg)
30
ACLU #20 When a task is first
created, in what state does it start?
Running task waits for semaphore. To what state does it transition?
Blocked task receives message in queue. To what state does it transition?