FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [June 2016 Threads] FreeRTOS on Atmel SAMB11Posted by kev1 on June 28, 2016 Hello !
I'm quite new to FreeRTOS and I would like to use it on an Atmel SAMB11 SoC (arm cortex M0), and more precisely on an Samb11Xplained board. For now I used provided example for SAMD21 SoC.
My first question is the following: does FreeRTOS port depends on the SoC (e.g. SAMB11) or only the processor (arm cortex M0) ? My understanding leads me to the second one.
Next, what are the steps to adapt an example to my board ?
Currently, I'm able to compile FreeRTOS sources in my project. I've first created only one task, and after starting the scheduler, the task was processing correctly (even though I observed that it doesn't work if timer use is enabled in FreeRTOSConfig.h).
I am now trying to create two tasks and check that they both process. The problem is that only one task is executed. I suspect an issue with the systick timer but I don't know how to fix it.
Thanks for your help !
FreeRTOS on Atmel SAMB11Posted by rtel on June 28, 2016
My first question is the following: does FreeRTOS port depends on the
SoC (e.g. SAMB11) or only the processor (arm cortex M0) ? My
understanding leads me to the second one.
Then you are correct :o) FreeRTOS does not rely on anything outside of
the Cortex-M core unless you are going to write a port specific low
power tickless mode, in which case you need a clock source which is
external to the core.
Next, what are the steps to adapt an example to my board ?
The following links might help:
http://www.freertos.org/Creating-a-new-FreeRTOS-project.html
http://www.freertos.org/porting-a-freertos-demo-to-different-hardware.html
In your case adapting the SAMD20 demo might be your best option.
Currently, I'm able to compile FreeRTOS sources in my project. I've
first created only one task, and after starting the scheduler, the
task was processing correctly (even though I observed that it doesn't
work if timer use is enabled in FreeRTOSConfig.h). I am now trying to
create two tasks and check that they both process. The problem is
that only one task is executed. I suspect an issue with the systick
timer but I don't know how to fix it.
Have you installed the interrupt handlers? See the "special note for
ARM Cortex-M users" in bullet point #1 on this page of the FAQ:
http://www.freertos.org/FAQHelp.html
FreeRTOS on Atmel SAMB11Posted by kev1 on June 28, 2016 Thank you for your fast answer !
In your case adapting the SAMD20 demo might be your best option.
Ok I will test this demo.
Have you installed the interrupt handlers? See the "special note for
ARM Cortex-M users" in bullet point #1 on this page of the FAQ:
http://www.freertos.org/FAQHelp.html
Effectively I have seen this point. I tried different configurations without any success for now. Maybe I misunderstood how to set correctly these interrupt handlers.
Does the board clock configuration have an importance for FreeRTOS ? For example, basic code of SAMD20 in atmel studio have a specific function that configures the clock, but SAMB11 doesn't seem to have one.
FreeRTOS on Atmel SAMB11Posted by kev1 on July 1, 2016 I finally get FreeRTOS working on the soc. I used atmel api which allows to register isr like this:
~~~
systemregisterisr(RAMISRTABLESYSTICKINDEX, (uint32t)xPortSysTickHandler);
systemregisterisr(RAMISRTABLEPENDSVINDEX, (uint32t)xPortPendSVHandler);
systemregisterisr(RAMISRTABLESVCINDEX, (uint32_t)vPortSVCHandler);
~~~
I initially thought it was already done somewhere, with SysTick_Handler handler...
With that configuration, I am able to execute two simple tasks concurrently.
BUT, atmel bluetooth sdk states that SAMB11 soc includes a proprietary RTOS which supports multiple tasks: Idle task, firmware task responsible for bluetooth functionnality, and application task (user application). So I guess FreeRTOS is not really compatible with this soc...
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|