One of the most hideous things that companies often do is to use Eclipse as the base of their own IDE. Given the claim on their web site, there are 400+ IDE suffers from Java resource hogging, sluggish and horrible UI experiences. Trying to edit multiple files at the same time seems to be an afterthought as they favored tab based editor. I remember it took 7-8 years for them to add with an half ass option for it.
That was one the few reasons why I seek out PlatformIO in the first place. MRS (MounRiver Studio) started out that way, but they quickly turned to Visual Studio Code in their MRS2 release about a year ago.
While searching for more info, I found this on google, but the actual link was broken. MRS might have fulfilled their GPL obligation, hence the deletion. Not sure if that was the reasoning for MRS moving on, the end result is actually really good without headaches as Visual Studio Code is under the permissive MIT license.
Eclipse Foundation
https://www.eclipse.org › forums › index.php
Jun 26, 2023 — WCH IDE MounRiver Studio is violating open-source rules and failing to comply with the GNU GCC Toolchain's GPL License.
Now to meat of the matter. Unlike my PlatformIO article, I won't be doing a guided tour as everything is pretty much usable as is from installation. Instead, I'll highlight the difference with a long complain list about CH32PIO: (PlatformIO for CH32V003) that MRS2 addresses:
- CH32PIO: It is not officially supported by PlatformIO. It is an enthusiasts maintained project within the confines of the plug-in. i.e. not as integrated with rest of Visual Studio Code. Functionality is stitched together with scripts.
- CH32PIO: There are no directory links to the actual library code they are linking to. Quite often I like to refer to the register header files, but have to search for it on explorer outside of the IDE.
- CH32PIO: The framework options are limited to what they let you use. So if you are using a framework that have a custom startup code, you are SOL. ch32fun was a no-go until they added as a framework option. I gave up fighting for it, but I might give it a try again one of these days.
MRS2: As shown in the picture below, their project layout is much more transparent. All the files are easily accessible and not hidden away.
MRS2 make a local copy for everything into your project during project creation. Unlike MDK that adds bare minimal, I am stuck manually deleting the dozens of peripheral files. I code in bare metal and have no use for most of them. I would like seeing bare metal as option for a framework, but I could write a 5 minutes batch file to delete the unused ones.
CH32PIO hides away those, but they are still compiled along with the project. I ran into function collisions as my own peripheral functions are named similarly as there are only so many sensible naming combinations.
These files won't affect the actual linked firmware size unless they are used. The compiled is inside the obj directory instead of .pio directory. In linux world directories that start with a . are hidden away from casual views.
MRS2's local copies opens up a lot of possibilities. e.g. One can mess around with the linker link.ld file to reserve a large area of code FLASH for data storage. The startup code or the library files can be modified or replaced per project without messing up for other ones. You have the freedom of a command line compiler, but with a fully integrated IDE for debugging and not having to mess around with cmake/make files.
- CH32PIO: There are all kinds of market place popups, sign-in requests and other stuff that distract me from coding.
MRS2 gives you the curated view removing the plug-in market place among the other distractions and give it a more professional integrated feel. Their menu are fully integrated within Visual Studio Code. I don't miss plug-ins at all and the editor just works the way I expect. MRS2 could use better graphics design though as their chunky pictures and coloring scheme reminds me of old video games of WinXP era. - WCH Single Wire SWDIO protocol isn't as robust as other vendors and happens quite a bit when I messed up my code. Quite often debugger has problem starting up. CH32PIO show me the script file which isn't helpful as it is a an actual hardware/firmware issue. What I usually do is to pop open WCH-Link Utility outside of the IDE to erase my part with the "Clear All Code Flash-By Pin NRST" as a last resort and that clear the problem.
- CH32PIO: If you want to mess with something in the chip configuration, there are no way outside of hacking up the download script. They have since added code protection options, but the options for /RST pin for I/O isn't one. Not that I want to mess with /RST any more.
In MRS2, every settings are available in nice popup menus. The Erase All option can be turned off to preserve previous data stored in code FLASH e.g. reserved by the link.ld script. They even included the options to force wipe the code part of the FLASH chip once or at every download.
WCH-Link Utility along with their other utilities are available from the tools parts of the main menu.
MRS2 have slightly more intuitive GUI with the context menu for refresh, numeric bases right where you would expect. PlatformIO doesn't have the refresh option. Often I had to change the base type just to force it to refresh while it opens another popup menu near the top of the screen not where you are looking at.
MRS2 is getting more and more appealing as they have implemented a polished professional IDE. There are frequent updates. They fixed the syntax for the Defined Symbol to align with the GCC command line in the last update in the few days when I tried it and just now.
I hope more chip vendors follow their move away from those Eclipse based IDE.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.