I am attempting to use FreeRTOS Plus to handle UDP communications on the TMS 570 device. In the future, I hope to implement it on the RM 57, but have not gotten that far yet.
In my initial attempts to incorporate the software onto the device, I noticed that the NetworkInterface.c file was dependent on the manufacturer of the device in question. Unfortunately, I saw nothing specifically for the TI devices I intend to work with.
My question is this: Is there software already designed for the TI Hercules devices that I can use? Or, am I going to need to derive the network interface myself to get the connection working?
If there is software already designed for this purpose, where can I find it?
Iām not aware of a driver for that part being available, although I do recall conversations about using +TCP on these parts before (grateful for everybody who makes their code available to the whole community!). Unless somebody else comes up with something here then it is āmoderatelyā simple (depending on your experience level) to implement your own driver. This link provides the instructions https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/FreeRTOS_TCP_Porting.html - if you donāt care too much about throughput you can do something really simple just by stitching the +TCP port layer functions into whatever drivers TI already provide. If you do care about throughput then I would recommend starting with something simple anyway, then once you see that working, look at how it can be optimised (using DMA, or whatever is available on the chip).
I think we are on a similar path. I skipped the TMS570 however and went directly to RM57L. Iām using TIās LaunchXL2-RM57L development board for now.
I managed to port FreeRTOS v10.3.1 to the RM57L and have the simple two task, two LED blink test running as of yesterday.
My remaining issue with the port is that I had to disable privileded_function and privileged_data macros. Really simple to undo. With that, I have a clean complieā¦ no errors, no warnings. Iām going to postpone working on the privilege issues for now as I havenāt dug into it.
My next step is to try and add FreeRTOS+TCP. I started looking at the details this morning. Iāve got some homework to do before Iām ready to start the port however.
I would have uploaded a .zip to FreeRTOS interactive but I havenāt been able to figure out how to register for that forum. Thatās a shame because I have searched high and low for an RM57L port and have come up empty. Plenty of other people with the same issue.
Grateful if the output of any of this work can be posted to https://interactive.freertos.org if you are able to create an account (lots of issues reported there), or just by attaching to this forum thread so we can host. Thanks.
My changes are constrained to the following files:
os_mpu_wrappers.h
os_mpu_wrappers.c
By the way, ask TI about the funky renaming of FreeRTOS files prepending āos_ā. I just replicated what they had for a FreeRTOS v9.0.0 port (which what I started with).
Also search for ā//TCā in hl-sys_main.c
I used #pragma diag_remark and #pragma diag_warning to mask an unavoidable warning. Donāt know if this reasonable practice, or not. I was just trying it out.
should not be problematic.
I think that your compiler doesnāt like the contents of the header file.
Can you tell which version of pack_struct_end.h is included? Is should be one out of: GCC, IAR, MSVC, Renesas. What compiler are you using? is the correct version being included?
I had this issue as well in Code Composer Studio. The way I fixed it was by adding a semicolon after the closing bracket of the struct definition.
That resolved all of those errors, and lead me to a bunch of compiler errors with undefined functions that I needed to resolve. I was able to resolve most of them by making sure that the FreeRTOSConfig file and the FreeRTOSIPConfig files were setup correctly (I disabled TCP, so that may not apply to you).
In the end, I am to the point where there are four custom functions that I need to create to get the FreeRTOS + UDP to work with the device, but thatās going to require me to dig pretty deep into the drivers and lower level code.
Sounds like we are at the same pointā¦ mapping the NetworkInterface.c functions. Iām taking the āsimple portā approach and will be leaving TCP enabled.
It would be great if you can share any successes you may have!
Iām posting my current FreeRTOS+TCP v10.3.1 for TI Hercules RM57L project here.
IT IS NOT COMPLETEDā¦ currently, the FreeRTOS+TCP files are integrated and it will compile cleanly. In addition, I have started the updates to NetworkInterface.c that will be needed.
Iām following the porting guide hereā¦
Iāve started mapping TIās Halcogen generated HL_emac.c functions to FreeRTOS+TCP NetworkInterface.c functions (in the portable directory).
So far I have a prototype for xNetworkInterfaceInitialise() and am working on xNetworkInteraceOutput().
Iām still slowly making my way through the changes required for FreeRTOS+TCP. There has been a lot to absorb. Iām currently getting this set of undefined symbol errors:
Iām expect there is something simple Iāve forgotten to do but I donāt know what. Just a reminderā¦ prior to addition of FreeRTOS+TCP filesā¦ I did have a FreeRTOS demo running on the RM57L with portUSING_MPU_WRAPPERS == 1.
I think the MPU prefix comes when you use the MPU protection wrappers. You need to make sure you have included source/portable/common/mpu_wrappers.c in your project.