I have been digging through the new site, and tools available such as yotta and the descriptions of testing with GreenTea etc.
I found myself thinking about all of this and what it really means for users of mbed platforms. So, if someone can address the following questions I would appreciate it.
mbed 3.0 vs 2.0? What differences will there be and will code written using the mbed 2.0 sdk work with 3.0?
mbed OS, what is it? I know it means operating system for mbed platforms, but how will that change the user experience and the way they develop for mbed platforms. Will users of mbed 3.0 have to use mbed OS?
Yotta appears to be a tool of tools for building modules and testing them. Is this correct? Can it, or GreenTea be used for testing/building code written with mbed 2.0, i.e. not modules? I am really interested in learning to use the testing frameworks offered and if I they are even appropriate for what I am doing, writing libraries for components(i.c), or shields.
Is the following snippet, from the example āapp.cppā, starting the mbed os scheduler? what is minar? Where can I find out more about mbed os, how to use it, and why I would want to? is the repo the only current source of info. The getting started guide for mbed os simply directs you to yotta, they are different things to my understanding.
One thing that still isnāt clear to me is if users of mbed 3.0 will have to use mbed OS, or if mbed 3.0 will offer a new and improved compiler/IDE that gives users the option of developing simple round-robin code, or a module for mbed OS by including the yotta tool package into the new IDE?
Additionally, what would be the recommended way of writing libraries for components/shields moving forward? Would writing drivers for mbed OS that support the shield/component be the prefered way, or the way we have been doing it?
What if a user didnāt want to use mbed OS? Not all applications require an OS, in fact I would say most embedded applications donāt from my experience. Is this movement simply because the micros used today have the memory and resources available to implement an OS, or is it really needed, and why?
Thanks, just curious and trying to understand the direction being taken.
Hi Justin - great questions. All the drivers, api, tools etc are part of mbed OS or will require a dependency on a mbed OS module in one way or another. This isnt much different than the existing mbed SDK drivers relying on MBED_ASSERT or the EthernetInterface relying on mbed-rtos. At some point there will be a dependency. Hope this satisfies some curiosities. Let me know if you have more specifics
I am new to mbed 3, so i have exactly the same questions as above.
Pity that those interesting questions are not answered because the questioner found the answers himself.
So please can someone elaborate on all questions 1->4 please?
I want to add a questions
3b: what is greentea?
4b: what is appstart (what happened to main()?) why has it parameters int and char** (pointer to char sequences?)ā¦
4c: what are the main differences between mbed 2 sdk and mbed 3 sdk, and are they compatible? @jamcro01, @j31 : these are valuable questions, can you help answering those questions for newbies such as me please?
Please see the following link for a description of GreenTea which is a testing framework.
If you dig into the git repo of mbed-os you will find more info on the scheduler minar which should shed some light on appstart. Please see the following links.
I am still digging into this and learning, so I really donāt have much else to offer.
on minar: we chose app_start instead of main as the application entry point because the code in app_start should return in a timely fashion (so that the scheduler can proceed and schedule other functions). The name main confuses people into thinking that itās OK to block indefinitely (which it isnāt!).
The arguments are there for forwards compatibility, in case we introduce a way for startup arguments to be passed through to app_start. (You can imagine that it would cause a lot of pain to change the app_start API later, after there are many programs that use it.)
The classic mbed 2 SDK and mbed OS are not compatible: apart from the introduction of the scheduler, a number of APIs have changed. Many new things will also be added to mbed OS that arenāt available in mbed 2, such as the sockets and mbed-client APIs.
Speaking of mbed-rtos, hereās a question: what replaces mbed-rtos in mbed OS? I see that ārtos.hā is no longer a valid include. How are threads, mutexes, queues, etc supported by mbed OS? Or should an mbed OS developer use CMSIS-rtos directly?
BTW, there are now two mbed OS terms, one is mbed OS 3.0 and one is mbed OS 5.0 . Its confusing, i know, so heres the breakdown for future reference.
mbed OS 3.0:
- built using yotta
- Event based minar is the heart of it (ie no RTOS support)
- not backwards compatible with mbed āclassicā, aka mbed 2.0, aka mbed SDK
- no online compiler integration
- Now defunct
mbed OS 5.0:
- backwards compatible with mbed 2.0 (actually a superset, includes mbed SDK functions and adds more like NSAPI for networking and RTOS support among other things)
- RTOS at the core (all SDK APIās are now threadsafe), will probably add event based scheduling support in the future (a la minar)
- compiles in online compiler, or offline with mbed-cli or other 3rd party IDEās
- The way forward for mbed development
A little feedback. I have been experimenting with mbed cli and being able to compile for targets that arenāt publicly supported yet.
Fortunately, the target I am interested in has been added to the library, but hasnāt been publicly released on the mbed compiler yet. So, when asking for a list of supported targets from the CLI, I am told it isnāt supported. I found a way to get the tools to say it is though, but donāt know if it is correct.
If I go into .tools/latest_targets.json and add the description found in targets.json, I get support for the target. I am using the evkit for the target and not the hardware that has been targeted, but I found that if I edit āPinNames.hā for the evkit everything appears to be working. I can build the library and export to my offline IDE just fine, just donāt know if this is the right way to do it.
The feedback part is, there needs to be an updated page on adding support for new targets/boards using the new tools.