In my previous post I mentioned the Drivers\Common folder which has ‘include’ files. These files are maintained automatically by the Component Wizard. But what is the purpose of these files?
The Common Folder has *.inc files which are included in the driver as ‘function’ header. The .inc file contains documentation about the function and parameters for that function.
In the example below I have a method named xTaskCreate(). This method has a list of parameters, plus ‘hints’ which is the documentation part:
When I create/change that method in the wizard, it will automatically create/update the .inc file for it in the Drivers\Common folder.
In the driver code it will as well add an %include to include that file:
The file Common\FreeRTOSxTaskCreate.Inc has the following content:
%- AUTOREGENERATE If you remove this line, this file cannot be rewrited (by default) %ifndef CommentLine %{ %endif CommentLine %;** =================================================================== %include Common\GeneralMethod.inc (xTaskCreate) %;** Description : %;** Create a new task and add it to the list of tasks that are %;** ready to run. %include Common\GeneralParameters.inc(27) %;** pvTaskCode%ParpvTaskCode %>27 - Pointer to the task entry %;** %>29 function. Tasks must be implemented to %;** %>29 never return (i.e. continuous loop). %;** pcName%ParpcName %>27 - A descriptive name for the task. %;** %>29 This is mainly used to facilitate debugging. %;** %>29 Max length defined by %;** %>29 configMAX_TASK_NAME_LEN. %;** usStackDepth%ParusStackDepth %>27 - The size of the task %;** %>29 stack specified as the number of variables %;** %>29 the stack can hold - not the number of %;** %>29 bytes. For example, if the stack is 16 bits %;** %>29 wide and usStackDepth is defined as 100, %;** %>29 200 bytes will be allocated for stack %;** %>29 storage. The stack depth multiplied by the %;** %>29 stack width must not exceed the maximum %;** %>29 value that can be contained in a variable %;** %>29 of type size_t. %;** pvParameters%ParpvParameters %>27 - Pointer that will be %;** %>29 used as the parameter for the task being %;** %>29 created. %;** uxPriority%ParuxPriority %>27 - The priority at which the %;** %>29 task should run. %;** pvCreatedTask%ParpvCreatedTask %>27 - Used to pass back a %;** %>29 handle by which the created task can be %;** %>29 referenced. %;** Returns : %;** ---%RetVal %>27 - pdPASS if the task was successfully %;** %>29 created and added to a ready list, %;** %>29 otherwise an error code defined in the file %;** %>29 projdefs.h %include Common\GeneralDamage.inc %;** =================================================================== %ifndef CommentLine %} %endif CommentLine
Then it will look like this in my generated code:
/* ** =================================================================== ** Method : FRTOS1_xTaskCreate (component FreeRTOS) ** ** Description : ** Create a new task and add it to the list of tasks that are ** ready to run. ** Parameters : ** NAME - DESCRIPTION ** pvTaskCode - Pointer to the task entry ** function. Tasks must be implemented to ** never return (i.e. continuous loop). ** pcName - A descriptive name for the task. ** This is mainly used to facilitate debugging. ** Max length defined by ** configMAX_TASK_NAME_LEN. ** usStackDepth - The size of the task ** stack specified as the number of variables ** the stack can hold - not the number of ** bytes. For example, if the stack is 16 bits ** wide and usStackDepth is defined as 100, ** 200 bytes will be allocated for stack ** storage. The stack depth multiplied by the ** stack width must not exceed the maximum ** value that can be contained in a variable ** of type size_t. ** pvParameters - Pointer that will be ** used as the parameter for the task being ** created. ** uxPriority - The priority at which the ** task should run. ** pvCreatedTask - Used to pass back a ** handle by which the created task can be ** referenced. ** Returns : ** --- - pdPASS if the task was successfully ** created and added to a ready list, ** otherwise an error code defined in the file ** projdefs.h ** =================================================================== */ /* portBASE_TYPE FRTOS1_xTaskCreate(pdTASK_CODE pvTaskCode, const portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask) { *** Implemented as macro in the header file FRTOS1.h } */
Happy Hacking 🙂
Pingback: CDE Hacking: Where is my stuff? A dissection… | MCU on Eclipse