I am working on a C project for the university where a CoAP server is to be hosted on a TM4C129EXL. It is particularly important to choose a FreeRTOS operating system. Unfortunately, I had to learn that Texas Instruments has stopped supporting FreeRTOS. There are no options for me to switch to another operating system. It is for this reason that I turn to you.
I'm looking for a sample program in which Free RTOS is executed on a TM4C129EXL board. In the best case, I would be happy about a Code Composer Studio Project, as this is the IDE we work with from the university.
If you do not have any sample code available, I would be happy to receive any other information regarding FreeRTOS and CoAP of course with reference to the TM4C129EXL.
You did not specify if you had any requirements in terms of
FreeRTOSversion, but you can either:SW-EK-TM4C1294XL-2.1.4.178.exeavailable on TI WEB site as is - you will find it in directoryexamples\boards\ek-tm4c1294xl-boostxl-senshub\senshub_iotThe procedure hereafter describes step by step how to create a minimalist FreeRTOS program with Code Composer Studio 10.3.0 and FreeRTOS v202104.00 in a Windows 10 environment using the second approach. You may have to adjust the drive letter to you specific setup, I am using
D: for the purpose of this example..Download Code Composer Studio 10.3.0, FreeRTOS v202104.00 and SW-EK-TM4C1294XL-2.1.4.178.exe.
Install Code Composer Studio with support for the
Tiva-CMCU familly. When prompted for a workspace name, specifyD:\ti\workspace_v10.Unzip
FreeRTOSv202104.00.zipintoD:\.Unzip
SW-EK-TM4C1294XL-2.1.4.178.exeintoD:\SW-EK-TM4C1294XL-2.1.4.178.Launch CCS
Use the menu item
File/New/CCS Project, and create an 'Empty Project (with main.c).[
]
Finishbutton.D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlibD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\incD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-KernelD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\includeD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCCD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCC\ARM_CM4FD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\MemMangD:\SW-EK-TM4C1294XL-2.1.4.178\examples\boards\ek-tm4c1294xl-boostxl-senshub\senshub_iot\FreeRTOSConfig.hintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS.hfiles fromD:\SW-EK-TM4C1294XL-2.1.4.178\driverlibintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlib.D:\SW-EK-TM4C1294XL-2.1.4.178\driverlib\gcc\libdriver.aintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\driverlib..hfiles fromD:\SW-EK-TM4C1294XL-2.1.4.178\incintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\inc.D:\FreeRTOSv202104.00\FreeRTOS\Source\includeintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\include..cfiles present inD:\FreeRTOSv202104.00\FreeRTOS\SourceintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel.D:\FreeRTOSv202104.00\FreeRTOS\Source\portable\GCC\ARM_CM4FintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\GCC\ARM_CM4FD:\FreeRTOSv202104.00\FreeRTOS\Source\portable\MemMang\heap_4.cintoD:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOS-Kernel\portable\MemMang.D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\main.c, and replace its content by:D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\blinky.cwith the following content:tm4c1294ncpdt_startup_ccs_gcc.c: add the following lines after the line containingstatic void IntDefaultHandler(void);The resulting code should look like:
tm4c1294ncpdt_startup_ccs_gcc.c: replace the default interrupt handler by the FreeRTOS one in arrayg_pfnVectors[].Original code:
Resulting code:
${workspace_loc:/${ProjName}/FreeRTOS-Kernel/include}${workspace_loc:/${ProjName}/FreeRTOS-Kernel/portable/GCC/ARM_CM4F}${workspace_loc:/${ProjName}${workspace_loc:/${ProjName}/driverlib}and click on the
Apply and closebutton.D:\ti\workspace_v10\TM4C129EXL-FreeRTOS\FreeRTOSConfig.hand delete the following lines:-mfloat-abi=hardoption after${flags}in the Command-line pattern:${command} ${flags} -mfloat-abi=hard ${output_flag}${output} ${inputs}-mfloat-abi=hardoption after${flags}:>br/>${command} ${flags} -mfloat-abi=hard ${output_flag}${output} ${inputs}libdriver.ato the-loption, and${workspace_loc:/${ProjName}/driverlib}to the-Loption, then click on theApply and closebutton.In my case, I had to stop the project and to press the board
resetbutton in order to the program to start.Finally, the LED should start blinking every 200ms.
The complete list of files in the project once the project 'cleaned' should ultimately be: