Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT




Loading

FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by wonger on June 4, 2015

I got the FreeRTOS (v8.2.1) demo running on a Zynq 7000, which has dual core ARM Cortex-A9. I have different builds for running the demo on cpu0 or cpu1. What is the other CPU doing while the FreeRTOS demo is running? Can/should I put the other CPU in some sleep/inactive state? I didn't see any code in FreeRTOS dealing with this. How could I accomplish this? Thanks for your help.


FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by richard_damon on June 5, 2015

When the Zynq boots up, at first only PS0 starts, and PS1 sits idle waiting to be told to start. If there is no code to start PS1, it will just stay idle (and consume very little power).

I don't think that FreeRTOS would support the Dual Processor as a SMPS, but you could load up a second program (with its own version of FreeRTOS) and run the system in a AMPS (asymetric) mode.


FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by wonger on June 5, 2015

It turns out this is more a Zynq question than FreeRTOS question, so apologies for that. But for the record, if FreeRTOS is to run on CPU1, a dummy bare-metal program is still needed on CPU0 to setup CPU1 to run FreeRTOS. The dummy program can then put CPU0 to sleep after its work is done.


FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by richard_damon on June 6, 2015

If you are only using 1 processor, why go to the effort to put a dummy program in processor 0 to start processor 1 only to then put processor 0 to sleep. My first guess is that this has a real chance of increasing your power consumption, at least by a bit.


FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by wonger on June 7, 2015

I actually want to get Linux running on CPU0 and FreeRTOS on CPU1, but that config has been a real challenge to get working. Since the critical system functions are running in real-time on FreeRTOS, I thought I'd forgo Linux for now. And I was thinking getting FreeRTOS to work on CPU1 now would save effort later when Linux is introduced into the mix, but it turns out getting the dummy program on CPU0 to work with FreeRTOS on CPU1 is no walk in the park either, so much so that I think I might as well plow ahead with Linux on CPU0. Getting CPU0 to relinquish devices and set up interrupts correctly for CPU1 is a real bear, no matter what is running on CPU0.

I think what I would really want to do is run FreeRTOS on CPU0 with Linux performing the non-critical functions on CPU1, but there is absolutely no documentation on this config. There is at least some Xilinx documents for the other way (though woefully outdated) so I figure I have a better chance this way.


FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by tlafleur on June 7, 2015

You might be better off using two "chips", one for Linux and one for FreeRTOS with a communications path... Would most likely be less work, more reliable, better supported....

Attachments

alternate (2071 bytes)

FreeRTOS demo running on dual core ARM Cortex-A9 (Zynq 7000)

Posted by wonger on June 7, 2015

I agree with you, but unfortunately, that ship has sailed.


[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS