No ACL setup yet! Denying access to everyone.
en:edu:zmitac:s2:aih:lab:nrf52threads
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:edu:zmitac:s2:aih:lab:nrf52threads [2023/11/23 16:51] – ktokarz | en:edu:zmitac:s2:aih:lab:nrf52threads [2023/12/01 13:52] (current) – ktokarz | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| * cooperative | * cooperative | ||
| * preemptive | * preemptive | ||
| - | In the cooperative method, the thread is executed until it gives the control | + | Zephyr OS implements both methods of thread switching. |
| In the preemptive method, the thread is automatically suspended by the operating system when it decides to do so. Usually, the thread is given some period and is interrupted at the end of this period if there exists another thread to be executed. This method is implemented in general-purpose operating systems like Windows or Linux. It is much safer but more complicated and resource-consuming. In Zephyr preemptive threads have a positive priority number (thus they have a relatively lower priority). | In the preemptive method, the thread is automatically suspended by the operating system when it decides to do so. Usually, the thread is given some period and is interrupted at the end of this period if there exists another thread to be executed. This method is implemented in general-purpose operating systems like Windows or Linux. It is much safer but more complicated and resource-consuming. In Zephyr preemptive threads have a positive priority number (thus they have a relatively lower priority). | ||
| - | Zephyr OS implements both methods of thread switching. | + | |
| - | ===== Cooperative thread | + | ===== Thread |
| A cooperative thread gives control to the operating system in a few situations: | A cooperative thread gives control to the operating system in a few situations: | ||
| * if it decides to terminate by returning from its main function or by calling the k_thread_abort(). | * if it decides to terminate by returning from its main function or by calling the k_thread_abort(). | ||
| Line 17: | Line 17: | ||
| While implementing the thread with the infinite loop it is recommended to call the k_yield() or some sleep function every pass of the loop. | While implementing the thread with the infinite loop it is recommended to call the k_yield() or some sleep function every pass of the loop. | ||
| - | As the first example, we'll show the one available within the Nordic Developer Academy ((https:// | + | A preemptive thread can be stopped by the operating system at any time if it finds the higher-priority thread ready to operate. |
| + | |||
| + | As the first example, we'll show the one available within the Nordic Developer Academy ((https:// | ||
| < | < | ||
| Line 68: | Line 70: | ||
| </ | </ | ||
| + | |||
| + | ===== The tasks for the laboratory ===== | ||
| To go through the lab please follow the steps: | To go through the lab please follow the steps: | ||
| Line 73: | Line 77: | ||
| - If you experience a problem with the include paths delete " | - If you experience a problem with the include paths delete " | ||
| - Compile and execute the program, observe the behaviour of threads in the terminal | - Compile and execute the program, observe the behaviour of threads in the terminal | ||
| - | - Make some experiments observing results in the terminal | + | - Make some experiments |
| - | * change | + | * modify |
| - | * change the priority of both threads to negative numbers | + | * modify sleep periods in k_msleep() functions |
| + | * change the priority | ||
| * change the method of passing control to OS - comment k_msleep() function call, uncomment k_yield() | * change the method of passing control to OS - comment k_msleep() function call, uncomment k_yield() | ||
| - | * change version of k_msleep() to k_usleep(), k_sleep() - the latter one requires | + | * change version of k_msleep() to k_usleep(), k_sleep() - the latter one requires |
en/edu/zmitac/s2/aih/lab/nrf52threads.1700754682.txt.gz · Last modified: by ktokarz
