Kindly note that I have colored my responses in dark blue.
The content aware syntax highlighting is pure junk, for example it shows that ARM_MATH_CM7 is defined below, which is off...
In the code snippet, ARM_MATH_CM7 is not defined. ARM_MATH_CM4 is defined. So the code bracketed between the check for ARM_MATH_CM4 is normal, and other code is grayed out.
Hot keys from Eclipse do not work, for example CTRL-// will not comment multiple lines.
(CTRL+E, C) comments multiple lines
The project build options are limited for example you can specify the number of jobs.
Can you kindly elaborate, I am unable to understand precisely
The syntax highlighting is so slow it is useless, you will write a line of code and it will be full of errors, you have to wait around 30 seconds for it parse and show it being correct.
It seems that either CPU is overloaded, or a better CPU/RAM is needed. Users demand more and more functionality, and this progressively requires faster CPU and more RAM.
There is no refactoring, of variables or function names.
Yes, refactoring feature is unavailable in PSoC Creator
The search and find and replace are pure junk and very very slow.
If you can spare us a few moments of your precious time, do kindly let us know how you would like the search and replace interface to be implemented. You will need a faster CPU and more RAM if search and replace is slow.
The building of a project requires a coffee break and walk around building to complete.
You will need a faster CPU / more RAM.
The project source code outline does not follow the directory structure and so it makes it hard to figure out where you code really exists and organize code effectively.
Kindly refer to IoT Expert PSoC Creator Projects. Do kindly ask us if you have a specific issue.
The graphical elements to configure peripherals looks neat thing but totally worthless. For example if you need to dynamically change baud rate on UART you are kind of hosed. Their is little documentation on what the code generator is doing.
I request you to kindly refer to PSoC Creator User Guide, Section Generated Files (PSoC 3, PSoC 4, PSoC 5LP) on page 341.
You can use our Eclipse based Modus Toobox IDE for developing PSoC6 firmware .
on the project build when running a makefile you can specify the number of jobs (processors) to use for example make -j4 will do the builds using 4 threads/processors this allows much faster builds on multi-core machines.
As far as syntax highlighting I am using a quad core I7-7700HQ with 32GB of RAM, 1TB PCI-E SDD, I do not have any problems using eclipse out of the box but do with PSOC creator. If my machine is not fast enough please let me know what is required to make the IDE work?
Search and replace should by default be on a file basis not a project or workspace, if the search and replace is done on project/workspace a dialog should appear asking if you really want to do it. Also Ctrl-Z needs to undo the search and replace. For example since PSOC did not have a refactor option, I went to do a search and replace for variable named 'state'. I did not notice that by default it is not case sensitive, or not matching whole word. Thus I hit 'go' and a few minutes (yea PSOC creator is slow as dirt), it came back and said 2542 changes on the work space. No problem I hit CTRL-Z and one replace was undone.... Needless to say it was a very bad day.
Again on the build speed issues I am running a DELL XPS 15 9560 laptop with 1TB PCI-E SSD, 32GB RAM, quad core i7-7700HQ at 2.8Ghz and it is still very very slow. If I need a faster processor than this to run your IDE, please let me know what is required, as I need a good laugh.
Another issue is that you cannot use a Segger J-Link with PSOC creator. The J-Link is the number one SWD/JTAG tool and PSOC creator will not support it.
After using PSOC creator for 2 months now, I will never recommend a Cypress Microcontroller. Don't get me wrong most vendors IDEs are bad, but PSOC creator is the worse. Lucky for me this project is ending and I will get back to real IDEs and Microcontrollers.
I am most curious as to your experiences, especially in regards to speed. I have also used several IDEs including both eclipse and PSoc Creator... ( and a few others) While some aspects of an IDE are no doubt subjective. When it comes to raw numbers like compile time this should be a simpler comparison.
Unfortunately, I would have to say my experience with PSoC creator and Eclipse are almost the exact opposite of yours?
I am running PSoC creator on a number of PC and laptops from very boring basic speced i5 to reasonable i7 workhorses and the Compile and Response times have never been an issue. ?
While I can not say that when I have used Eclipse-based IDEs they have been exceptionally slow but they did not impress me as being any more super responsive that the Creator (on the same machine).
On a more subjective scale while I have used Eclipse on many different scenarios both in a straight Application development world and in an embedded world for many more years than I care to remember ... and basically I am disliking it more and more every year when I compare it to other alternatives ... It really is showing its age as a 20 Year old framework... for many people, the familiarity either masks its shortcomings or it just wins out on being "the devil you know".
I enjoy the PSoC creator for the graphical interface which, while not perfect I found very quick to get started with. and was in fact one of the reasons our company went with Cypress MCU when we can.
Currently, we are looking at the Eclipse base Modus Toolbox and feel very disappointed in what at the moment is a step back in our opinion basing it on Eclipse.
Still, IDEs are and always will have a personal aspect that each developer will form their own opinions around, this response is not intended to change your opinion of the PSoC creator but only to put forward an alternative experience. In the end, the "best " IDE is always the one _"You"_ are most comfortable with as a developer and user of that tool.
Yea I will say eclipse is slow, not as slow as PSOC creator. I have to get coffee and walk around building when doing a clean project build with Creator. With eclipse I can do build with 8 threads which is much much faster.
Eclipse is NOT the best IDE ever, for example Visual Studio Code for example is much faster. I started using Eclipse when I was doing Windows, and Linux development. Keeping the same IDE was great and I never looked back, I now use Python, C/C++, and other languages all in eclipse. Eclipse is showing it's age but it does work and is very stable. I do embedded development using most all microcontroller vendorss, Atmel, Nordic, NXP, STM, etc. I usually set up my projects using MCU Eclipse plug-in and configure GDB and project settings. This allows me to develop code quickly, I find that most people like the GUI stuff in Cypress to get started but then when they get a few months down the road and need more control they are lost. For example they end up not understanding how the clocking works for low power, or how to dynamically change the baud rate of the UART. So they pay the price of the quick start later on. Where if you set up your favorite processor from the ground up and learn all about it you will have faster development and better products on the back end.
For embedded development I like to start at the reset vector and go through the code line by line. For example a lot of processors will turn on (configure) a clock and then sit in a while loop until the clock is stable. If the clock (or crystal) does not start it will lock up the processor forever. When I go through the code I see these things and go in add time outs and error handling. Often it can be as simple as just enabling watch dog on reset, depending on the application requirements. Others require flagging error and writing errors to non volatile memory.
This is also why I hate vendor provided drivers, they often do not have error handling in the drivers. For example one vendor's driver did delay loops by setting the counter on systick and polling. If you did not look into the driver's source code then you would never know this. So when you used systick timer for other purposes (like RTOS) things would break. Some vendor's drivers do not reset peripherals registers before setting them up and assume the registers are in reset state. Thus your program can work perfect, then you add a boot loader which uses some peripherals and now your application breaks, because registers are not in reset state. One I2C driver polled the SDA/SCL lines and if they were stuck low it locked up forever... Again it is not that the code is bad, it is that they made some bad assumptions for my application.
After reset and clocks I will then go through and configure the heap an stack, I add in stack and heap monitoring. I find a lot of vendor's linker files often put the stack before the heap and then have a fixed size for the stack with no monitoring for stack overflow. More than once I have gone into companies who have strange bugs, because they overflow the stack, even when they have several kilobytes of unused SRAM. Or more often they have heap overflow bugs that causes processor to lock up after a few months in the field.
Again when I write embedded code, all the code in the project is now my problem. Therefore I like to read through and understand every line of code, even if it is GUI generated code or vendor peripheral drivers. It is not that the vendor's code is bad, it is rather the code often makes assumptions that are bad for my application. For example I tried Cypress UART driver and was checking for number of bytes received and it did not work. I read the docs for the driver and it was not helpful. When I read the code I realized that the driver expected you to pass a buffer to fill and it would return the number of bytes that had been filled in buffer. Where what I wanted was to know is if the UART driver had received a byte in it's FIFO. Of course I was calling the wrong function but the documentation for the UART driver did not explain what was going on. Note this took me way more hours to figure out than I would have liked, due to the multiple layers of abstraction in driver code and PSOC creator's poor code navigation capabilities, like "Alt-left arrow" not taking you back in code.
Again I would rather have control and know what is going on than to use a GUI and get going faster. However I am not the average developer either. I hate it things like PSOC creator which does not allow you to change certain compile options, like if the floating point uses hard or soft ABI. Again it is great to get going but when you hit the wall, you hit it hard and start questioning your life choices.... While using make files and editors like eclipse you maintain full control, which is a curse and a blessing. That is all the problems are yours and you can only blame yourself. That being said I like the GUI blocks having links to datasheets and documentation, so PSOC creator is not all bad.
For me with a fast PC I find that Eclipse is good enough, that is it is faster than I am. I have been starting to use Visual Studio Code more, which is much faster and I am starting to like it more. I need to figure out how to configure it for GDB and such to make it really useful. I have also heard that Segger's IDE is really good, but I have not tried it yet. But at the end of the day Eclipse works. Also with Eclipse I can use make files such that the make files can be used in continuous integration servers. Think about how you would have PSOC creator kick of nightly builds, I am sure it is possible, but might not be easy. Think about what happens if PDL has a bug or locks up your processor, how do you recover and track down issue? These things keep me up at night...
As you said the IDE is a tool, and like any tool it is the one you can use to get the desired results that is the best. I find that PSOC creator is not a good tool. For example often when I connect up the board, PSOC creator will popup an error saying it can not program board. I have found the only way to get PSOC creator to program boards again is to reboot my laptop. This is most likely some driver issues with their programmer. This is also why I like to stick to the Segger J-Links as they are a bit more stable.
I think we have similar motivations in complaining about the IDEs we use
I certainly agree with your comment regarding Visual Studio Code... I think that has been the most motivation for me recently not to "just like Eclipse for its familiarity " Like you have used Eclipse when I did a lot of windows work but I always felt it stagnated really quickly with other IDE's like VS Code came out.
I agree with you that it is important to know what the auto generated code does in any IDE... but I have also have to be pragmatic when I am working with new team members who are just starting and may have never worked on Embedded stuff before... then I find it soo much more useful to bring them up in an IDE that is visually friendly ( and for better or worse) hides a lot of the really low level stuff to begin with ... and as they get more proficient with "higher level" concepts of embedded practices , then I bring them into the Specifics of a particular MCU architecture and get into the low level stuff with them.
I don't want to get too into what people should and shouldn't know already when they start into the Embedded world as that is a WHOLE other topic that can get depressing quite quick
Getting back to your original comment I would love to see Cypress get more behind groups like PlatformIO to support open source 3rd party IDEs … ( There will always be a issues on what they do in the background in regard to auto generated code but I think it would bring a breath of freshness into the embedded world)
Anyway , best of luck in all your projects irrespective of the IDE
Hopefully we will be able to exchange notes again in the future.
I think there might be some machine specific issue with PSoC Creator. I request you to kindly create a new thread....One of our community members who works on PSoC Creator issues will get in touch with you to resolve the issue.