When starting a new project for a iMXRT1010 or iMXRT1064 board which IDE is best for a newbie?
Is this MCUXpress or VSCode (with MCUXpress for VSCode extension).
Or are they the same? I tried to find this out for a while now, but still am not sure.
Is it true that MCUXpress for VSCode is based on Zephyr?
Is Zephyr easier to learn for a newbie?
Are peripherals better supported in MCUXpress compared to Zephyr?
I do not mind learning a new environment. But I do not want to find out after hours of learning that I need to learn a different one.
已解决! 转到解答。
Hi @simmania
I hope that you are doing well!
VS code is a vanilla IDE featuring our MCUXpresso VS code extension released the past year while the MCUXpresso IDE is an eclipse Based IDE with a first release on 2017. Both are still supported and in constant develop.
Following this idea, there is more documentation and articles where the MCUXpresso IDE is involved than the VS code extension, as it was released first. For example, you will find application notes from us that implement the IDE to build projects. Also, more people is experienced on this IDE, which is the opposite to the VS code, which is relatively new. Take for example the Erich Styger blog. He created already a ton of articles for the MCUXpresso IDE, and I am sure he will also integrate VS code.
Btw, I highly recommend his blog https://mcuoneclipse.com/ I learned a lot from him. Maybe Erich already has an article or will create one on this topic, as he is a university professor keeping up to date every semester.
Is it true that MCUXpresso for VSCode is based on Zephyr? The VS code extension is not based on Zephyr. It provides support for compiling and debugging Zephyr repositories, as well our MCUXpresso SDK repository containing our BareMetal and other RTOS examples and drivers.
Is Zephyr easier to learn for a newbie? Compared to other RTOs? Like FreeRTOS? Good question, I would say that it is easier to get started with FreeRTOS as a bare minimum requirement you need to learn RTOS Kernel services and specific APIs. Zephyr is quite more complex, and it is not only an RTOS it integrates more stuff, and it is not only necessary to know about kernel services. Something really interesting from Zephyr is that integrates the concept of Device tree, inherited from Linux. The Device tree takes to a new level the system integration and the SOC, as it describes in a huge human readable file the entire system: memory map, external devices, external memories and more.
With the VS code you need to install github repositories to get an example running. Below an example or set the location of your already existing repo. Below a picture of how you can install the RT1064 SDK.
With the MCUXpresso IDE you can also install the SDK repos, but, this is not a popular option. The popular way is to drag and drop install SDKs from https://mcuxpresso.nxp.com/en or installing them directly from the IDE.
Are peripherals better supported in MCUXpresso compared to Zephyr? A simple answer is yes. but let me provide details. First to check Zephyr support for your board ( Zephyr targets boards and then specific SOCs). For example lets browse the RT1010 page https://docs.zephyrproject.org/latest/boards/nxp/mimxrt1010_evk/doc/index.html
As you can see, at this time, not all the peripherals are supported for the RT1010. When we say that a peripheral is supported is because the Zephyr RTOS HAL layers let you to use those peripherals with ease without having to worry about their low-level implementation, as you would do directly using our SDK drivers.
The SDK provides support for all the RT1010 peripherals, and the MCUXpresso IDE integrates build in our MCUXpresso Config Tools. The config tools can be used to create initialization code for peripherals, clocks, and pins. You may use the config tools to generate code when using Zephyr, but what is the point to init LPUART if the Zephyr RTOS already lets you do this?
Another factor to consider is the debug tools included into the MCUXpresso IDE. The IDE lets you to do more than simply write code and debug it. It in integrates features for trace, RTOS debug, .map viewer and many more, please refer to the MCUXpresso User Guide.
There are more details like the linker management, which is a more advanced topic, but in some moment, you will find out that you will need to put code or variables on a certain place. With the IDE linker management is easier.
In summary, the MCUXpresso IDE have many years already in the market so you will find more documentation, articles, source code, and posts in this community compared to the VS code. If you consider that the quantity of resources helps you pick the IDE. In my own perspective I am already familiar with the IDE, but the current trend is to get familiar with Zephyr and use more integration with git repositories.
Best regards,
Diego
Hi @simmania
I hope that you are doing well!
VS code is a vanilla IDE featuring our MCUXpresso VS code extension released the past year while the MCUXpresso IDE is an eclipse Based IDE with a first release on 2017. Both are still supported and in constant develop.
Following this idea, there is more documentation and articles where the MCUXpresso IDE is involved than the VS code extension, as it was released first. For example, you will find application notes from us that implement the IDE to build projects. Also, more people is experienced on this IDE, which is the opposite to the VS code, which is relatively new. Take for example the Erich Styger blog. He created already a ton of articles for the MCUXpresso IDE, and I am sure he will also integrate VS code.
Btw, I highly recommend his blog https://mcuoneclipse.com/ I learned a lot from him. Maybe Erich already has an article or will create one on this topic, as he is a university professor keeping up to date every semester.
Is it true that MCUXpresso for VSCode is based on Zephyr? The VS code extension is not based on Zephyr. It provides support for compiling and debugging Zephyr repositories, as well our MCUXpresso SDK repository containing our BareMetal and other RTOS examples and drivers.
Is Zephyr easier to learn for a newbie? Compared to other RTOs? Like FreeRTOS? Good question, I would say that it is easier to get started with FreeRTOS as a bare minimum requirement you need to learn RTOS Kernel services and specific APIs. Zephyr is quite more complex, and it is not only an RTOS it integrates more stuff, and it is not only necessary to know about kernel services. Something really interesting from Zephyr is that integrates the concept of Device tree, inherited from Linux. The Device tree takes to a new level the system integration and the SOC, as it describes in a huge human readable file the entire system: memory map, external devices, external memories and more.
With the VS code you need to install github repositories to get an example running. Below an example or set the location of your already existing repo. Below a picture of how you can install the RT1064 SDK.
With the MCUXpresso IDE you can also install the SDK repos, but, this is not a popular option. The popular way is to drag and drop install SDKs from https://mcuxpresso.nxp.com/en or installing them directly from the IDE.
Are peripherals better supported in MCUXpresso compared to Zephyr? A simple answer is yes. but let me provide details. First to check Zephyr support for your board ( Zephyr targets boards and then specific SOCs). For example lets browse the RT1010 page https://docs.zephyrproject.org/latest/boards/nxp/mimxrt1010_evk/doc/index.html
As you can see, at this time, not all the peripherals are supported for the RT1010. When we say that a peripheral is supported is because the Zephyr RTOS HAL layers let you to use those peripherals with ease without having to worry about their low-level implementation, as you would do directly using our SDK drivers.
The SDK provides support for all the RT1010 peripherals, and the MCUXpresso IDE integrates build in our MCUXpresso Config Tools. The config tools can be used to create initialization code for peripherals, clocks, and pins. You may use the config tools to generate code when using Zephyr, but what is the point to init LPUART if the Zephyr RTOS already lets you do this?
Another factor to consider is the debug tools included into the MCUXpresso IDE. The IDE lets you to do more than simply write code and debug it. It in integrates features for trace, RTOS debug, .map viewer and many more, please refer to the MCUXpresso User Guide.
There are more details like the linker management, which is a more advanced topic, but in some moment, you will find out that you will need to put code or variables on a certain place. With the IDE linker management is easier.
In summary, the MCUXpresso IDE have many years already in the market so you will find more documentation, articles, source code, and posts in this community compared to the VS code. If you consider that the quantity of resources helps you pick the IDE. In my own perspective I am already familiar with the IDE, but the current trend is to get familiar with Zephyr and use more integration with git repositories.
Best regards,
Diego
Thanks a lot Diego for the extended answer! I now finally understand the difference.
It seems to me that the VSCode route is the new way of working. Will MCUXpresso SDK stay around for the next 10 years or so? So is it still wise to start new projects with MCUXpresso SDK?