{"id":6085,"date":"2021-05-27T09:16:59","date_gmt":"2021-05-27T09:16:59","guid":{"rendered":"http:\/\/fastbitlab.com\/?p=6085"},"modified":"2023-09-02T16:46:40","modified_gmt":"2023-09-02T11:16:40","slug":"freertos-lecture-31-exercise-testing-via-debugger-part-2","status":"publish","type":"post","link":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/","title":{"rendered":"FreeRTOS Lecture 31 &#8211; Exercise: Testing via debugger Part-2"},"content":{"rendered":"<div class=\"boldgrid-section\" style=\"background-image: linear-gradient(to left, #eeeeee, #eeeeee);\" data-bg-color-1=\"#EEEEEE\" data-bg-color-2=\"#EEEEEE\" data-bg-direction=\"to left\">\n<div class=\"container\">\n<div class=\"row\" style=\"padding-top: 35px; padding-bottom: 0px; background-image: linear-gradient(to left, #eeeeee, #eeeeee);\" data-bg-color-1=\"#EEEEEE\" data-bg-color-2=\"#EEEEEE\" data-bg-direction=\"to left\">\n<div class=\"col-md-1 col-sm-12 col-xs-12 col-lg-1\">\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"col-md-10 col-sm-12 col-xs-12 col-lg-10\">\n<h1 class=\"\" style=\"text-align: center; font-size: 30px; border-width: 0px; line-height: 47px;\"><span style=\"color: #000080;\">Exercise: Testing via debugger Part-2 <\/span><\/h1>\n<div class=\"row bg-editor-hr-wrap\" style=\"border-width: 0px; margin-top: -25px;\">\n<div class=\"col-lg-12 col-md-12 col-xs-12 col-sm-12\">\n<p>&nbsp;<\/p>\n<div class=\"bg-hr bg-hr-10 color2-color\" style=\"border-style: solid; border-width: 0px 0px 3px;\"><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">In this article, let\u2019s understand the concept of FreeRTOS task schedule.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">We already created two tasks. Now we have to schedule them because otherwise, the tasks will not be running on your microcontroller. The creation of a task means an allocation of some memory.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\"><b>Task creation process<span style=\"font-weight: 400; color: #000000;\"><span style=\"font-weight: 400;\">(Figure 1)<\/span><\/span> <\/b><b>:<\/b><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">The task creation process<span style=\"color: #000000;\"><span style=\"font-weight: 400;\">&nbsp;<\/span><\/span> is creating a task control block for a particular task, allocating memory for it, allocating stack memory for a task, initializing the stack memory for a task, and various other things that are related to the task creation process, which will be taken care of by the task services of the FreeRTOS.<\/span><\/p>\n<figure id=\"attachment_6089\" aria-describedby=\"caption-attachment-6089\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-6089\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-1-4.png\" alt=\"Task creation process\" width=\"744\" height=\"313\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png 1865w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-300x126.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-768x323.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-1024x431.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-600x253.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-120x51.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-500x210.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-200x84.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-400x168.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-800x337.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4-1200x505.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6089\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 1. Task creation process.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">In our project, we have created the project and allocated the memory for it. But we never scheduled it. Now you have to use FreeRTOS scheduling APIs in order to schedule these tasks. vTaskStartScheduler() API is used to schedule the tasks. This API basically means that start the scheduler.<\/span><\/p>\n<pre class=\"color-5-text-contrast color5-background-color\" style=\"font-size: 12px; box-shadow: #cecece 0px 0px 0px 0px inset;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\"><span style=\"color: #ff99cc;\">int<\/span> main(<span style=\"color: #ff99cc;\">void<\/span>)\r\n{\r\n  &nbsp; <span style=\"color: #339966;\">\/\/1. Reset the RCC clock configuration to the default reset state.<\/span>\r\n&nbsp; &nbsp; \/\/HSI ON, PLL OFF, HSE OFF, system clock = 16MHz, cpu_clock = 16MHz\r\n  &nbsp; RCC_DeInit();\r\n\r\n&nbsp; <span style=\"color: #339966;\">&nbsp;\/\/2. update the SystemCoreClock variable<\/span>\r\n&nbsp; &nbsp;SystemCoreClockUpdate();\r\n\r\n   <span style=\"color: #339966;\">\/\/3. lets create 2 tasks , task-1 and task-2<\/span>\r\n   xTaskCreate( vTask1_handler,\"Task-1\", configMINIMAL_STACK_SIZE,NULL,2,&amp;xTaskHandle1 );\r\n   xTaskCreate( vTask2_handler,\"Task-2\", configMINIMAL_STACK_SIZE,NULL,2,&amp;xTaskHandle2 );\r\n\r\n&nbsp; &nbsp;<span style=\"color: #339966;\"><strong>\/\/4. Start the scheduler.<\/strong><\/span>\r\n<strong>&nbsp; &nbsp;vTaskStartScheduler();<\/strong>\r\n\r\n&nbsp;<span style=\"color: #ff99cc;\"> for(;;)<\/span>;\r\n\r\n}<\/pre>\n<p class=\"\" style=\"text-align: center;\"><span style=\"color: #000000;\">Statement to start the scheduler<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">vTaskStartScheduler() API is implemented in the task.c file, as shown in Figure 2.<\/span><\/p>\n<figure id=\"attachment_6091\" aria-describedby=\"caption-attachment-6091\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-6091\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-3-4.png\" alt=\"Figure 3. Implementation of vTaskStartScheduler().\" width=\"744\" height=\"396\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4.png 1913w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-768x408.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-1024x544.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-600x319.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-500x266.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-400x213.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-800x425.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-3-4-1200x638.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6091\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 2. Implementation of vTaskStartScheduler().<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Once you start the scheduler, according to the scheduling policies of the scheduler, the scheduler will be executing the task functions. There are two task functions with the same priority, i.e., 2. That\u2019s why according to the scheduling policy of the scheduler, it will be executing the task function. If it is preemptive scheduling, then the round-robin scheduling will happen since both the tasks have got equal priorities. That means task 1 handler will run for some time, and then task 2 will run for some time. A definite time quanta will be allocated to each task.<\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">vTaskStartScheduler() function will never return because this function will give control to the task. Since the task will be running continuously, the scheduling function will never return. Therefore, the control will never come to the infinite loop shown in Figure 3 unless and until there is an error while executing the scheduler function.<\/span><\/p>\n<figure id=\"attachment_6092\" aria-describedby=\"caption-attachment-6092\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" class=\"wp-image-6092\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-4-4.png\" alt=\"schedule task\" width=\"744\" height=\"395\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4.png 1917w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-1024x543.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-4-4-1200x637.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6092\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 3. Infinite loop in the main function.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now let\u2019s test this code. First, let\u2019s build this project (Figure 4). Now the code is compiled successfully without any errors.&nbsp;<\/span><\/p>\n<figure id=\"attachment_6093\" aria-describedby=\"caption-attachment-6093\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6093\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-5-4.png\" alt=\"schedule task\" width=\"744\" height=\"396\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4.png 1913w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-300x160.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-768x409.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-1024x545.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-600x320.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-500x266.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-200x107.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-400x213.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-800x426.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-5-4-1200x639.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6093\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 4. Building the project.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">After compilation, download the code into the target hardware. For that, first, connect your hardware. After that, just right-click on your project, go to target and click on the program chip option, as shown in Figure 6. Then a pop-up will appear, tick the reset after program checkbox, select the elf format of your project generated by building the project and then click ok (Figure 5).<\/span><\/p>\n<figure id=\"attachment_6094\" aria-describedby=\"caption-attachment-6094\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6094\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-6-4.png\" alt=\"schedule task\" width=\"744\" height=\"396\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4.png 1917w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-768x408.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-1024x544.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-600x319.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-500x266.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-400x213.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-800x425.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-6-4-1200x638.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6094\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 5. Option for programming the chip.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<figure id=\"attachment_6095\" aria-describedby=\"caption-attachment-6095\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6095\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-7-4.png\" alt=\"schedule task - Exercise: Testing via debugger Part-2\" width=\"744\" height=\"399\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4.png 1915w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-300x161.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-768x412.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-1024x549.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-600x322.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-500x268.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-200x107.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-400x215.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-800x429.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-7-4-1200x644.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6095\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 6. Choosing the reset after program option.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now let\u2019s keep a couple of breakpoints in the task 1 handler and task 2 handler (Figure 8) in order to see whether those breakpoints really hit or not. First, let\u2019s keep a breakpoint in vTask1_handler and then keep a breakpoint in vTask2_handler, as shown in Figure 7.<\/span><\/p>\n<figure id=\"attachment_6096\" aria-describedby=\"caption-attachment-6096\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6096\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-8-3.png\" alt=\"schedule task. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"394\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3.png 1919w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-768x406.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-1024x542.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-600x317.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-120x63.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-500x264.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-800x423.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-8-3-1200x635.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6096\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 7. Placing the breakpoints in task handlers.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">After that, before starting the scheduler, keep another breakpoint, as shown in Figure 8.<\/span><\/p>\n<figure id=\"attachment_6097\" aria-describedby=\"caption-attachment-6097\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6097\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-9-3.png\" alt=\"schedule task. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"395\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3.png 1917w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-1024x543.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-9-3-1200x637.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6097\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 8. Keeping the breakpoint before the start of the scheduler.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now let\u2019s get into the debug mode. Right-click on the project, click on debug as, and then select the Ac6 STM32 C\/C++ application option (Figure 9). While entering into the debug mode, you will find a pop-up window, as shown in Figure 11. Just click yes.<\/span><\/p>\n<figure id=\"attachment_6098\" aria-describedby=\"caption-attachment-6098\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6098\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-10-3.png\" alt=\"Figure 10. Option for entering into debug mode. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"397\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3.png 1915w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-300x160.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-768x410.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-1024x547.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-600x321.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-500x267.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-200x107.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-400x214.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-800x427.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-10-3-1200x641.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6098\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 9. Option for entering into debug mode.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<figure id=\"attachment_6099\" aria-describedby=\"caption-attachment-6099\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6099\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-11-2.png\" alt=\"Figure 11. Pop-up appeared while entering into the debug mode. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"395\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2.png 1919w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-1024x543.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-11-2-1200x636.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6099\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 10. Pop-up appeared while entering into the debug mode.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">For debug mode, we have already set the breakpoints. Now the code is not running, and it is actually halted at line 28 of the main function. Let\u2019s hit run (Figure 11).<\/span><\/p>\n<figure id=\"attachment_6100\" aria-describedby=\"caption-attachment-6100\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6100\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-12-2.png\" alt=\"Figure 12. Option to run the code. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"395\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2.png 1915w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-1024x543.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-12-2-1200x636.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6100\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 11. Option to run the code.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">In Figure 12, you can see that we are about to start the scheduler. Tasks are created, and the task handle is populated (Figure 13) with some address. In the beginning, the task handle was NULL. Now it is populated with some address. That means tasks are created successfully.<\/span><\/p>\n<figure id=\"attachment_6101\" aria-describedby=\"caption-attachment-6101\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6101\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-13-2.png\" alt=\"Figure 13. Scheduler is about to start. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"395\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2.png 1917w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-1024x543.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-13-2-1200x637.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6101\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 12. Scheduler is about to start.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<figure id=\"attachment_6102\" aria-describedby=\"caption-attachment-6102\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6102\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-14-2.png\" alt=\"Figure 14. List of task handles with their corresponding populated addresses. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"396\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2.png 1919w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-300x160.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-768x409.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-1024x545.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-600x319.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-500x266.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-400x213.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-800x426.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-14-2-1200x638.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6102\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 13. List of task handles with their corresponding populated addresses.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Now let\u2019s hit run again and see whether task handlers in Figure 8 executes or not. In Figure 14, you can see that the control first came into vTask1_handler. It will execute for some time depending upon the time quanta allocated for this task by the FreeRTOS kernel.<\/span><\/p>\n<figure id=\"attachment_6103\" aria-describedby=\"caption-attachment-6103\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6103\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-15-2.png\" alt=\"Figure 15. Control transferred to vTask1_handler. Exercise: Testing via debugger Part-2\" width=\"744\" height=\"396\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2.png 1919w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-300x160.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-768x409.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-1024x545.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-600x319.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-500x266.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-400x213.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-800x426.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-15-2-1200x638.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6103\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 14. Control transferred to vTask1_handler.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">Let\u2019s hit run once again. It is still executing the task 1 handler, and at some time, it may come to the task 2 handler. But the control is not at all coming to the task 2 handler. It looks like there is some problem. Just remove the breakpoint in task 1 handler and try to rerun the code. Now you can see that the control is transferred into the vTask2_handler (Figure 15). This is because of the debugging things because they execute very quickly. That\u2019s why the debugger may not be tracing those events related to the task 2 handler execution.<\/span><\/p>\n<figure id=\"attachment_6104\" aria-describedby=\"caption-attachment-6104\" style=\"width: 744px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6104\" src=\"http:\/\/fastbitlab.com\/wp-content\/uploads\/2021\/05\/Figure-16-2.png\" alt=\"Testing via debugger Part-2\" width=\"744\" height=\"394\" srcset=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2.png 1917w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-300x159.png 300w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-768x407.png 768w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-1024x542.png 1024w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-600x318.png 600w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-120x64.png 120w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-500x265.png 500w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-200x106.png 200w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-400x212.png 400w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-800x424.png 800w, https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-16-2-1200x635.png 1200w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><figcaption id=\"caption-attachment-6104\" class=\"wp-caption-text\"><span style=\"color: #000000;\">Figure 15. Control transferred to vTask2_handler.<\/span><\/figcaption><\/figure>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"font-weight: 400; color: #000000;\">If you remove the breakpoint in task 2 handler and keep it in task 1 handler, now if you execute the code, then the task 1 handler executes, and task 2 handler also executes. That means the context switching or scheduling is taking place. But how the tasks are synchronized, what is the time quanta, who triggers all these things, and so many other things we have to understand. That we will see as we make progress. But our simple goal here is to create 2 tasks and schedule them, which we have done already.<\/span><\/p>\n<p class=\"\">&nbsp;<\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 20px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000080;\"><b>FastBit Embedded Brain Academy Courses<\/b><\/span><\/p>\n<p class=\"\" style=\"border-width: 0px; font-family: 'Roboto Slab'; font-weight: 400; font-size: 17px; line-height: 30px;\" data-font-family=\"Roboto Slab\" data-font-weight=\"400\" data-font-style=\"\"><span style=\"color: #000000;\">Click here:&nbsp;<\/span><a href=\"https:\/\/fastbitlab.com\/course1\" target=\"_blank\" rel=\"noopener\">https:\/\/fastbitlab.com\/course1<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Exercise: Testing via debugger Part-2 &nbsp; &nbsp; In this article, let\u2019s understand the concept of FreeRTOS task schedule. We already created two tasks. Now we have to schedule them because otherwise, the tasks will not be running on your microcontroller. The creation of a task means an allocation of some memory. Task creation process(Figure [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6089,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[19],"class_list":["post-6085","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-freertos-lectures","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>FreeRTOS Schedule Task: Execution and Debugging<\/title>\n<meta name=\"description\" content=\"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FreeRTOS Schedule Task: Execution and Debugging\" \/>\n<meta property=\"og:description\" content=\"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"FastBit EBA\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fastbiteba\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-05-27T09:16:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-02T11:16:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1865\" \/>\n\t<meta property=\"og:image:height\" content=\"785\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"FastBitLab\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:site\" content=\"@fastbiteba\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"FastBitLab\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/\"},\"author\":{\"name\":\"FastBitLab\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\"},\"headline\":\"FreeRTOS Lecture 31 &#8211; Exercise: Testing via debugger Part-2\",\"datePublished\":\"2021-05-27T09:16:59+00:00\",\"dateModified\":\"2023-09-02T11:16:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/\"},\"wordCount\":1079,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/Figure-1-4.png\",\"keywords\":[\"FreeRTOS Lectures\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/\",\"name\":\"FreeRTOS Schedule Task: Execution and Debugging\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/Figure-1-4.png\",\"datePublished\":\"2021-05-27T09:16:59+00:00\",\"dateModified\":\"2023-09-02T11:16:40+00:00\",\"description\":\"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/Figure-1-4.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/Figure-1-4.png\",\"width\":1865,\"height\":785,\"caption\":\"Figure 1. Task creation process.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/freertos-lecture-31-exercise-testing-via-debugger-part-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FreeRTOS Lecture 31 &#8211; Exercise: Testing via debugger Part-2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"name\":\"FastBit EBA\",\"description\":\"Your Online Academy of Embedded Systems\",\"publisher\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#organization\",\"name\":\"FastBit EBA\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"contentUrl\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo-EzNrEnyr.png\",\"width\":640,\"height\":640,\"caption\":\"FastBit EBA\"},\"image\":{\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/fastbiteba\\\/\",\"https:\\\/\\\/x.com\\\/fastbiteba\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fastbit-embedded-brain-academy-b3167b124\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCa1REBV9hyrzGp2mjJCagBg\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/fastbitlab.com\\\/blog\\\/#\\\/schema\\\/person\\\/e32b38e733a0d76ffa7e6bc998652e5d\",\"name\":\"FastBitLab\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g\",\"caption\":\"FastBitLab\"},\"description\":\"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FreeRTOS Schedule Task: Execution and Debugging","description":"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/","og_locale":"en_US","og_type":"article","og_title":"FreeRTOS Schedule Task: Execution and Debugging","og_description":"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task","og_url":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/","og_site_name":"FastBit EBA","article_publisher":"https:\/\/www.facebook.com\/fastbiteba\/","article_published_time":"2021-05-27T09:16:59+00:00","article_modified_time":"2023-09-02T11:16:40+00:00","og_image":[{"width":1865,"height":785,"url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png","type":"image\/png"}],"author":"FastBitLab","twitter_card":"summary_large_image","twitter_creator":"@fastbiteba","twitter_site":"@fastbiteba","twitter_misc":{"Written by":"FastBitLab","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#article","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/"},"author":{"name":"FastBitLab","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d"},"headline":"FreeRTOS Lecture 31 &#8211; Exercise: Testing via debugger Part-2","datePublished":"2021-05-27T09:16:59+00:00","dateModified":"2023-09-02T11:16:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/"},"wordCount":1079,"commentCount":2,"publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png","keywords":["FreeRTOS Lectures"],"articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/","url":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/","name":"FreeRTOS Schedule Task: Execution and Debugging","isPartOf":{"@id":"https:\/\/fastbitlab.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#primaryimage"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png","datePublished":"2021-05-27T09:16:59+00:00","dateModified":"2023-09-02T11:16:40+00:00","description":"Concept of task scheduling in FreeRTOS and learn how to use debugging techniques to verify task execution on a microcontroller. schedule task","breadcrumb":{"@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#primaryimage","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2021\/05\/Figure-1-4.png","width":1865,"height":785,"caption":"Figure 1. Task creation process."},{"@type":"BreadcrumbList","@id":"https:\/\/fastbitlab.com\/blog\/freertos-lecture-31-exercise-testing-via-debugger-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fastbitlab.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FreeRTOS Lecture 31 &#8211; Exercise: Testing via debugger Part-2"}]},{"@type":"WebSite","@id":"https:\/\/fastbitlab.com\/blog\/#website","url":"https:\/\/fastbitlab.com\/blog\/","name":"FastBit EBA","description":"Your Online Academy of Embedded Systems","publisher":{"@id":"https:\/\/fastbitlab.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fastbitlab.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fastbitlab.com\/blog\/#organization","name":"FastBit EBA","url":"https:\/\/fastbitlab.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","contentUrl":"https:\/\/fastbitlab.com\/blog\/wp-content\/uploads\/2026\/04\/logo-EzNrEnyr.png","width":640,"height":640,"caption":"FastBit EBA"},"image":{"@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/fastbiteba\/","https:\/\/x.com\/fastbiteba","https:\/\/www.linkedin.com\/in\/fastbit-embedded-brain-academy-b3167b124\/","https:\/\/www.youtube.com\/channel\/UCa1REBV9hyrzGp2mjJCagBg"]},{"@type":"Person","@id":"https:\/\/fastbitlab.com\/blog\/#\/schema\/person\/e32b38e733a0d76ffa7e6bc998652e5d","name":"FastBitLab","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9230d0f9bdef28b63a01e7ca274ee7b2e8ed9abe932ee564af8809caaf52a0c8?s=96&d=mm&r=g","caption":"FastBitLab"},"description":"The FastBit Embedded Brain Academy uses the power of internet to bring the online courses related to the field of embedded system programming, Real time operating system, Embedded Linux systems, etc at your finger tip with very low cost. Backed with strong experience of industry, we have produced lots of courses with the customer enrolment over 3000+ across 100+ countries."}]}},"_links":{"self":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/6085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/comments?post=6085"}],"version-history":[{"count":5,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/6085\/revisions"}],"predecessor-version":[{"id":15734,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/posts\/6085\/revisions\/15734"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media\/6089"}],"wp:attachment":[{"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/media?parent=6085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/categories?post=6085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fastbitlab.com\/blog\/wp-json\/wp\/v2\/tags?post=6085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}