Amazon FreeRTOS - Can WICED use it?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Can the WICED board can use 'Amazon FreeRTOS' in place of 'FreeRTOS'?

0 Likes
1 Solution
NiMc_1688136
Level 5
Level 5
10 sign-ins 50 questions asked 10 solutions authored

The actual Amazon FreeRTOS version is just the v10 kernel, which is pretty much drop in replaceable. You might want to compare the FreeRTOS build option header(s) to make sure they are the same.

Also there are some minor modifications done in v9 where the WICED developers added support for proper debugging. Check tasks.c and find the comment starting with WICED. These changes can be copied into v10.

I added a new RTOS folder, WICED/RTOS/FreeRTOS/ver10.0.1 and then modified the FreeRTOS.mk file to change the version variable to 10.0.1.

#VERSION := 9.0.0

VERSION := 10.0.1

For rest of the files in the Amazon FreeRTOS release you will need to port it. To ease this process, for the portable files i used the template functions as wrappers to access the underlying WICED SDK.

View solution in original post

20 Replies
NiMc_1688136
Level 5
Level 5
10 sign-ins 50 questions asked 10 solutions authored

The actual Amazon FreeRTOS version is just the v10 kernel, which is pretty much drop in replaceable. You might want to compare the FreeRTOS build option header(s) to make sure they are the same.

Also there are some minor modifications done in v9 where the WICED developers added support for proper debugging. Check tasks.c and find the comment starting with WICED. These changes can be copied into v10.

I added a new RTOS folder, WICED/RTOS/FreeRTOS/ver10.0.1 and then modified the FreeRTOS.mk file to change the version variable to 10.0.1.

#VERSION := 9.0.0

VERSION := 10.0.1

For rest of the files in the Amazon FreeRTOS release you will need to port it. To ease this process, for the portable files i used the template functions as wrappers to access the underlying WICED SDK.

Nice job...

0 Likes

Thanks for the detailed response nickmckendree_1688136

0 Likes

There is a race condition bug in vTaskSetTimeOutState() in the FreeRTOS-9.0.0 used by current wiced sdk.

Maybe cypress should upgrade the FreeRTOS version?

0 Likes

nickmckendree_1688136 wrote:

I added a new RTOS folder, WICED/RTOS/FreeRTOS/ver10.0.1 and then modified the FreeRTOS.mk file to change the version variable to 10.0.1.

Do you hit any issue with v9.0.0?

What is the benefit of upgrading to 10.0.1?

0 Likes

No direct issues.

I too had a request to use Amazon FreeRTOS code base which requires v10 support.

0 Likes
Anonymous
Not applicable

I have a follow up to this.

Feel free to tell me I'm real stupid. I'm okay with that.

The project requirement to have the IoTivity-Constrained library running on a WICED board.

https://github.com/iotivity/iotivity-constrained

So, now I need to make a port. I have to learn how to do that.

There's a current effort to port IoTivity-Constrained to Amazon FreeRTOS.

I'm thinking: If I can use Amazon FreeRTOS on the WICED board & the IoTivity-Constrained port runs on Amazon FreeRTOS, then I'm one step closer to my goal.

Does that sound reasonable?

0 Likes
Anonymous
Not applicable

How do you write a 'Make Target' for the Makefiles in /43xxx_Wi-Fi/WICED/RTOS/FreeRTOS?

There are three different Makefiles in the subdirectories of /43xxx_Wi-Fi/WICED/RTOS/FreeRTOS; "WICED.mk", "WWD.mk", and "FreeRTOS.mk".

All three of these Makefiles together only contain a grand total of four comments.

I do not understand how to use these and there are no tutorial videos (that I am aware of) detailing the process.

The only WICED WiFi experience I have is with the ww101 video series, whose Makefiles are entirely in the /43xxx_Wi-Fi/apps.

Would you be able to provide more explanation on how to build the C files in the /43xxx_Wi-Fi/WICED/RTOS/FreeRTOS?

0 Likes

Quickprojects.testproject-QuicksilverEval-FreeRTOS-LwIP-debug download

0 Likes
Anonymous
Not applicable

I created a 'Make Target' with that exact line and this was produced:

14:03:26 **** Build of configuration Default for project 43xxx_Wi-Fi ****

/home/jeremyhiggins/Documents/WICED-Studio-6.1/43xxx_Wi-Fi/make Quickprojects.testproject-QuicksilverEval-FreeRTOS-LwIP-debug download

MAKEFILE MAKECMDGOALS=Quickprojects.testproject-QuicksilverEval-FreeRTOS-LwIP-debug download OTA2_SUPPORT is disabled

Making config file for first time

./tools/makefiles/wiced_config.mk:256: platforms//.mk: No such file or directory

./tools/makefiles/wiced_config.mk:267: *** Unknown component: Quickprojects.testproject.  Stop.

make: *** No rule to make target `build/Quickprojects.testproject-QuicksilverEval-FreeRTOS-LwIP-debug/config.mk', needed by `main_app'.  Stop.

14:03:27 Build Finished (took 362ms)

0 Likes

Replace testproject with the name of your project. Also my make target is for a quicksilver eval board from Arrow which is why i have quickprojects. Something similar would be

Snip.scan-QuicksilverEval-FreeRTOS-LwIP-debug download

0 Likes
Anonymous
Not applicable

Please forgive my pestering, I am still quite confused.

I've started another thread asking my question in better detail.

For now, I need to learn simply how to build any FreeRTOS program in WICED Studio 6.2, even 9.0.0.

Once I have a grasp on that, I can figure out how to step it up to Amazon FreeRTOS 10.0.1.

0 Likes
Anonymous
Not applicable

I've been trying to push ahead with this project since yesterday, but still no luck.

I did what you recommended and made a "ver10.0.1" folder, right next to the ver9.0.0 folder, then copied all of the Amazon FreeRTOS files (downloaded from here​) to it.

I am using the simple "snip.scan" app, but compiling with the FreeRTOS library via the Make Target:

   snip.scan-FreeROTS-LwIP-debug download run

This is in attempt to just get the Free RTOS 10.0.1 library to build.

When Line 35 in FreeRTOS.mk is set to "VERSION := 9.0.0", this Make Target compiles just fine.

When Line 35 in FreeRTOS.mk is set to "VERSION := 10.0.1", there are numerous missing components.

There appear to be many changes between FreeRTOS 9.0.0 (included with WICED Studio) and FreeRTOS 10.0.1 that need resolution.

I am listing here which errors I have been able to resolve:

  - "croutine.c" and it's header no longer exist in Amazon FreeRTOS, so I copied over the older ones from 9.0.0.

  - "StackMacros.h" has been renamed "stack_macros.h".

  - Most of the header files, including "projdefs.h", "list.h", "portable.h", and many others were all moved into a new directory, "Private". I made copies out to their original location.

Even with all of these changes, the Build Console now barfs on WICED/RTOS/FreeRTOS/ver10.0.1/Source/portable/GCC/ARM_CRx_No_GIC/portASM.S, complaining that "Error: selected processor does not support `fmrxne R1,FPSCR' in ARM mode", among many, many other complaints.

I do not understand what these Errors are or how to resolve them. There seems to be quite a few extra steps to getting FreeRTOS 10.0.1 working in WICED Studio. Could you provide more detail in how you managed it?

0 Likes
lock attach
Attachments are accessible only for community members.

You are correct. I forgot about the restructuring that Amazon did to FreeRTOS file locations in their release.

I went to freertos.org and downloaded the v10.0.1 kernel, which is the same as used in the Amazon release. The official kernel download has the files in default locations.

https://www.freertos.org/FreeRTOS-V10.html

https://sourceforge.net/projects/freertos/files/latest/download?source=files

Maybe this helps

Nick McKendree | Electrical Engineer II - Firmware

+1.704.752.6513 x1277

www.invue.com

Anonymous
Not applicable

I discovered the exact same thing just before your post, ha.

So, I downloaded and installed the pure FreeRTOS 10.0.1 Kernel files, no Amazon stuff, to the WICED "ver10.0.1" folder and attempted the build again.

This time, it makes it to the same "Error: selected processor does not support..." issue without any additional file structure changes...so there's that.

Any ideas on how to address the "...selected processor..." issue? It appears to be a problem with the Assembly file located here:
   /43xxx_Wi-Fi/WICED/RTOS/FreeRTOS/ver10.0.1/Source/portable/GCC/ARM_CRx_No_GIC/portASM.S

0 Likes
lock attach
Attachments are accessible only for community members.

Is this related to your make target missing a platform entry?

snip.scan-FreeROTS-LwIP-debug download run

I thought there is suppose to be a platform entry as well such as

snip.scan-BCM943362WCD4-FreeRTOS-LwIP-debug download

or

Quickprojects.scan-QuicksilverEval-FreeRTOS-LwIP-debug download

The platform entry would match one of the folders within the platforms directory in the 43xxx_Wi-Fi SDK folder.

Nick McKendree | Electrical Engineer II - Firmware

+1.704.752.6513 x1277

www.invue.com

0 Likes
Anonymous
Not applicable

Oops, my bad. I am running the Make Target:
   snip.scan-CYW943907AEVAL1F-FreeRTOS-LwIP-debug download run

This is on an Evaluation Board, the CYW943907AEVAL1F, found here.

0 Likes
lock attach
Attachments are accessible only for community members.

My target is a QuickSilver Eval board which uses the same processor.

I might have pulled the port code from v9 to v10. Honestly I cannot remember those details… It has been a crazy few weeks since I did the port.

Nick McKendree | Electrical Engineer II - Firmware

+1.704.752.6513 x1277

www.invue.com

0 Likes
Anonymous
Not applicable

Any idea what the hardware differences are between the Quicksilver Eval board and the CYW943907AEVAL1F​ that I am using?

I can start digging up datasheets, but I wonder if you can shortcut that at all.

0 Likes
lock attach
Attachments are accessible only for community members.

No clue.

Processor/wifi chipset is the same but I assume the GPIO is wired differently on the eval boards. I don’t think there is anything that would impact a FreeRTOS build as the CPU core is the same.

Nick McKendree | Electrical Engineer II - Firmware

+1.704.752.6513 x1277

www.invue.com

0 Likes