I recently purchased the Redboard Artemis and the Artemis ATP. Are there plans to port FreeRTOS to these boards. I’ve been lurking around SparkFun a number years, but finally decided to make the jump with the release of the Artemis boards. I would be very interested in getting FreeRTOS running on the Artemis. I’ve read something, somewhere that indicates Arduino and Cortex M series aren’t compatible. I’m not sure whether that is true. I wouldn’t have a big problem going with the Apollo3 SDK w/FreeRTOS either, but it seems like it should be able run with the Arduino Core. So, is either path in the future?
We are not planning to support FreeRTOS in the core - instead we will focus on mbed os. This is to get the best compatibility with the ArduinoBLE library that was released with the latest cortex-m boards by Arduino.
However the AmbiqSuite SDK contains examples that run FreeRTOS so you can run those on your Apollo3 board.
Check out these resources:
https://learn.sparkfun.com/tutorials/us … pollo3-sdk
https://github.com/sparkfun/AmbiqSuiteSDK
https://github.com/sparkfun/SparkFun_Ap … Suite_BSPs (included as part of the link just ahead of this, but has some more README info)
If you have more questions please feel free to reply here.
No FreeRTOS support? …“instead we will focus on mbed os”. Hmm. That’s interesting as the mbed os web site has no mention whatsoever of any Ambiq Apollo chip support. And the only mention of mbed on the Ambiq web site is a posting on the community forum of a customer asking about mbed os six months ago (https://support.ambiqmicro.com/hc/en-us … ollo-3-MCU), with no response.
Is this solely because it will be less effort to move Arduino BLE code to mbed os instead of FreeRTOS? If so, that seems to me to be quite short sighted.
That sounds very interesting. I’m already an mbed user, so I would be more than happy seeing that happen. I haven’t seen any mention of this on os.mbed.com. Do you have a link that has more info about this?
And, I’ll check out the links you provided wrt the AmbiqSuite SDK. Thanks for the info.
Ugh. Did I mention in another post that I have a strong aversion to C++ also, in addition to Python? After googling around for a half hour or so, It appears that most of the APIs of mbed os are C++. That makes mbed os a non-starter for me.
Any update on the RTOS status? I noticed there is no support for MBED yet either.
Maybe I am missing something regarding the original post, but as liquid.soulder said, the SDK ships with examples that fully support FreeRTOS projects.
I took the basic Ambiq FreeRTOS 10 example and turned it into a system for experimenting with RTOS and power management. To that end, I have FreeRTOS set up to be tickless. In addition, FreeRTOS hooks are used to automatically drop the Apollo3 into deep sleep whenever no tasks are ready to run. My software is set up so that things like the IOM silicon units are shut down whenever they are not actually performing transfers. The overall result is pretty cool: the system runs whenever it needs to, but is always sucking microamp current levels whenever there is nothing to do. Those bits of time where there is nothing to do can range from the remainder of a FreeRTOS timeslice that got finished early to giant wads of time spent sleeping waiting for some external event to occur. I don’t have to think about it - it just happens.
It was an experiment to see if I could achieve a nice low power system just using FreeRTOS mechanisms so I wouldn’t need to design some sort of power manager that would need to explicitly understand the system power state. So far, so good.
The original post was a question based on the fact that I had just received my Artemis board. I had not reviewed all of the SDK at that time. I was simply looking for information about incorporating an RTOS (FreeRTOS in this case). LS’s reply above answered that question and provided direction on where to look. Since then, I’ve incorporated the Apollo3 SDK FreeRTOS port into my app workflows. I’ve also been able to develop a C++ API (not quite complete, yet) to ease my workflow with Artemis app development. So, all is good.
freeRtos is relatively easy to get going in Arduino from the SDK example files. This github repo has the SDK data transfer example amdtp using two boards. One running freeRtos (client) and one not (server). A little setup and then copy folders to Arduino Sketch directory to get running.
https://github.com/kerryeven/SparkFun-a … -data-comm
SDK version 2.3.2 with Arduino Core 1.0.29 (modified with SDK 2.3.2 files)