diff --git a/booktitle.md b/booktitle.md index 12c789d..b28c4af 100644 --- a/booktitle.md +++ b/booktitle.md @@ -1,5 +1,8 @@
+
+
+ @@ -15,10 +18,41 @@


-
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+



@@ -31,6 +65,9 @@
- +
+ [^1]: FreeRTOS™, FreeRTOS.org™ and the FreeRTOS logo are trademarks of Amazon Web Services. [^2]: OPEN**RTOS**® and SAFE**RTOS**® are trademarks of WITTENSTEIN High Integrity Systems Ltd. All other brands or product names are the property of their respective holders. + +
diff --git a/ch04.md b/ch04.md index cce2e64..6abc376 100644 --- a/ch04.md +++ b/ch04.md @@ -255,7 +255,7 @@ BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, information on heap memory management. - + --- ***Example 4.1*** *Creating tasks* @@ -479,7 +479,7 @@ void vTask1( void * pvParameters ) ***Listing 4.7*** *Creating a task from within another task after the scheduler has started* - + --- ***Example 4.2*** *Using the task parameter* @@ -739,7 +739,7 @@ internally. describes configuration constants which affect when the scheduler will select a new task to run and when a tick interrupt will execute. - + --- ***Example 4.3*** *Experimenting with priorities* @@ -918,7 +918,7 @@ Figure 4.7 expands on the simplified state diagram to include all of the ***Figure 4.7*** *Full task state machine* *** - + --- ***Example 4.4*** *Using the *Blocked* state to create a delay @@ -1157,7 +1157,7 @@ void vTaskDelayUntil( TickType_t * pxPreviousWakeTime, be used to convert a time specified in milliseconds into a time specified in ticks. - + --- ***Example 4.5*** *Converting the example tasks to use vTaskDelayUntil()* @@ -1216,7 +1216,7 @@ void vTaskFunction( void * pvParameters ) The output produced by Example 4.5 is exactly as per that shown for Example 4.4 in Figure 4.8. - + --- ***Example 4.6*** *Combining blocking and non-blocking tasks* @@ -1445,7 +1445,7 @@ void vApplicationIdleHook( void ); ***Listing 4.18*** *The idle task hook function name and prototype* - + --- ***Example 4.7*** *Defining an idle task hook function @@ -1627,7 +1627,7 @@ UBaseType_t uxTaskPriorityGet( TaskHandle_t xTask ); The priority currently assigned to the task being queried. - + --- ***Example 4.8*** *Changing task priorities* @@ -1887,7 +1887,7 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ); handle. - + --- ***Example 4.9*** *Deleting tasks* diff --git a/ch05.md b/ch05.md index 8a27000..4661d9a 100644 --- a/ch05.md +++ b/ch05.md @@ -408,7 +408,7 @@ UBaseType_t uxQueueMessagesWaiting( QueueHandle_t xQueue ); then the queue is empty. - + --- ***Example 5.1*** *Blocking when receiving from a queue* @@ -663,7 +663,7 @@ Chapter (RB-TBD) shows how to extend this design pattern such that the controller task can reply directly to the task that queued a structure. - + --- ***Example 5.2*** *Blocking when sending to a queue, and sending structures on a queue* @@ -1486,7 +1486,7 @@ QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, in the set, but the block time expired before that happened. - + --- ***Example 5.3*** *Using a Queue Set diff --git a/ch06.md b/ch06.md index c0d0fb2..76969d6 100644 --- a/ch06.md +++ b/ch06.md @@ -578,7 +578,7 @@ BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait ); specified block time expired before that happened. - + --- ***Example 6.1*** *Creating one-shot and auto-reload timers* @@ -782,7 +782,7 @@ void *pvTimerGetTimerID( const TimerHandle_t xTimer ); The ID of the software timer being queried. - + --- ***Example 6.2*** *Using the callback function parameter and the software timer ID* @@ -1173,7 +1173,7 @@ BaseType_t xTimerReset( TimerHandle_t xTimer, TickType_t xTicksToWait ); expired before that happened. - + --- ***Example 6.3*** *Resetting a software timer* diff --git a/ch07.md b/ch07.md index 98c8ebf..ec643df 100644 --- a/ch07.md +++ b/ch07.md @@ -616,7 +616,7 @@ BaseType_t xSemaphoreGiveFromISR( SemaphoreHandle_t xSemaphore, `xSemaphoreGiveFromISR()` will return `pdFAIL`. - + --- ***Example 7.1*** *Using a binary semaphore to synchronize a task with an interrupt* @@ -1075,7 +1075,7 @@ SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, If NULL is returned, the semaphore cannot be created because there is insufficient heap memory available for FreeRTOS to allocate the - semaphore data structures. Chapter 2 provides more information on heap + semaphore data structures. Chapter 3 provides more information on heap memory management. If a non-NULL value is returned, it indicates that the semaphore has been @@ -1083,7 +1083,7 @@ SemaphoreHandle_t xSemaphoreCreateCounting( UBaseType_t uxMaxCount, to the created semaphore. - + --- ***Example 7.2*** *Using a counting semaphore to synchronize a task with an interrupt* @@ -1310,7 +1310,7 @@ void vPendableFunction( void *pvParameter1, uint32_t ulParameter2 ); command queue. - + --- ***Example 7.3*** *Centralized deferred interrupt processing* @@ -1583,7 +1583,7 @@ that are suitable for production code, include: than the raw data) to a task. This was previously demonstrated by Figure 5.4. - + --- ***Example 7.4*** *Sending and receiving on a queue from within an interrupt* diff --git a/ch08.md b/ch08.md index e79a996..80fec3c 100644 --- a/ch08.md +++ b/ch08.md @@ -513,7 +513,7 @@ SemaphoreHandle_t xSemaphoreCreateMutex( void ); created mutex. - + --- ***Example 8.1*** *Rewriting vPrintString() to use a semaphore* @@ -1139,7 +1139,7 @@ static void prvStdioGatekeeperTask( void *pvParameters ) ***Listing 8.18*** *The gatekeeper task* - + --- ***Example 8.2*** *The alternative implementation for print task* diff --git a/ch09.md b/ch09.md index 9f00719..591be39 100644 --- a/ch09.md +++ b/ch09.md @@ -520,7 +520,7 @@ StaticEventGroup_t ** ppxEventGroupBuffer ); - `pdFALSE` will be returned if the buffer was not successfully retrieved. - + --- ***Example 9.1*** *Experimenting with event groups* @@ -1034,7 +1034,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, condition. - + --- ***Example 9.2*** *Synchronizing tasks* diff --git a/ch10.md b/ch10.md index 2514691..5f6f384 100644 --- a/ch10.md +++ b/ch10.md @@ -181,26 +181,26 @@ macros will be called functions throughout this book. #### 10.3.1.1 The complete list of API functions 27 -`xTaskNotifyGive` -`xTaskNotifyGiveIndexed` -`vTaskNotifyGiveFromISR` -`vTaskNotifyGiveIndexedFromISR` -`vTaskNotifyTake` -`vTaskNotifyTakeIndexed` -`xTaskNotify` -`xTaskNotifyIndexed` -`xTaskNotifyWait` -`xTaskNotifyWaitIndexed` -`xTaskNotifyStateClear` -`xTaskNotifyStateClearIndexed` -`ulTaskNotifyValueClear` -`ulTaskNotifyValueClearIndexed` -`xTaskNotifyAndQueryIndexedFromISR` -`xTaskNotifyAndQueryFromISR` -`xTaskNotifyFromISR` -`xTaskNotifyIndexedFromISR` -`xTaskNotifyAndQuery` -`xTaskNotifyAndQueryIndexed` +- `xTaskNotifyGive` +- `xTaskNotifyGiveIndexed` +- `vTaskNotifyGiveFromISR` +- `vTaskNotifyGiveIndexedFromISR` +- `vTaskNotifyTake` +- `vTaskNotifyTakeIndexed` +- `xTaskNotify` +- `xTaskNotifyIndexed` +- `xTaskNotifyWait` +- `xTaskNotifyWaitIndexed` +- `xTaskNotifyStateClear` +- `xTaskNotifyStateClearIndexed` +- `ulTaskNotifyValueClear` +- `ulTaskNotifyValueClearIndexed` +- `xTaskNotifyAndQueryIndexedFromISR` +- `xTaskNotifyAndQueryFromISR` +- `xTaskNotifyFromISR` +- `xTaskNotifyIndexedFromISR` +- `xTaskNotifyAndQuery` +- `xTaskNotifyAndQueryIndexed` *(27): These functions are actually implemented as macros.* @@ -359,7 +359,7 @@ xTicksToWait ); the specified block time expired before that happened. - + --- ***Example 10.1*** *Using a task notification in place of a semaphore, method 1* @@ -498,7 +498,7 @@ produced by the periodic task. Further explanation is provided in Figure 10.4. ***Figure 10.4*** *The sequence of execution when Example 10.1 is executed* * * * - + --- ***Example 10.2*** *Using a task notification in place of a semaphore, method 2* diff --git a/copyright.md b/copyright.md index 96d7d3a..ef50938 100644 --- a/copyright.md +++ b/copyright.md @@ -1,9 +1,11 @@
- -

+ + + +

@@ -22,11 +24,59 @@


+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
* * * -> [!Note] -> This text is provided for free. **In return we ask that you create a pull -> request to provide corrections**. Post feedback and comments to [https://forums.FreeRTOS.org](https://forums.FreeRTOS.org). + +*This text is provided for free. **In return we ask that you create a pull request to provide corrections**.* +
+*Post feedback and comments to [https://forums.FreeRTOS.org](https://forums.FreeRTOS.org).* + * * *
+ diff --git a/dedication.md b/dedication.md index ab35741..a8d24af 100644 --- a/dedication.md +++ b/dedication.md @@ -1,2 +1,28 @@ -> To Caroline, India and Max. - R.B. -> Dedicated to the next generation of great systems powered by FreeRTOS. - J.J. +
+
+
+
+
+
+
+
+
+
+
+ +***To Caroline, India and Max.*** **- R.B.** + +***Dedicated to the next generation of great systems powered by FreeRTOS.*** **- J.J.** + +
+
+
+
+
+
+
+
+
+
+ +