All boards marked obsolete in CubeMX IDE and general rant about software quality.
Today I decided to start a fresh project on my NUCLEO-F429ZI board. As I tried to select the board, I was notified that that board is obsolete, and CubeMX won't generate code for it. Soon, I found that all boards are marked obsolete! So I am pretty sure it is a bug. But that means I can't proceed with my work unless I am willing to spend time on finding and setting up the old working version - if at all it is still available for download. and then merge my code to the latest CubeMX generated code when the bug is fixed. This is a lot of extra work.
There should be more stringent testing done on software before releasing it. This is not the first instance of ST's software creating trouble. I do understand presence minor bugs. But the kind of bugs I come across with ST give an impression that the software development processes are far from mature.
Examples:
- When you make some changes in the .ioc file and regenerate the code, once in a while it says firmware not available in repository even thought it is very much available. Then it does not even try to download it again, instead, it deletes everything - all project files and also the .git folder which hosts the GIT repository!! This means any local commits to GIT are lost and even if you have pushed the commits remotely, your project is now just a bunch of files disconnected from the git repo! Anybody who uses version control (and everybody in software business should be using one), would know that .git and certain other critical files are not to be deleted.
- STM32H743ZI firmware was extremely buggy. Had to discontinue trying to make it work and switched Cortex M4 as I did not trust H7 line to be stable enough for use.
- Firmware updates and code generation logic jostle all code around. If you compare the source file using a version control system, you will feel the file has changed completely. But what has indeed happened is the code generator decided to shuffle the position of routines, add some white space remove some white space etc. So if I want to see what exactly has changed between versions, I can't do it efficiently, the tool tells me every single line has changed! Instead, if you maintain the order and not fool around with white spaces, it would make comparing changes much more manageable. It is important to know what has changed so that you can trace back errors to specific changes if something that worked in the previous version does not work in the new version. This makes me feel that the writers of the software gave no consideration to how software development works , or perhaps they don't follow best practices themselves and were therefore oblivious to how important this is.
My sincere request to Management:
Please focus on software quality. We don't need 1000s of different part variants. Even 10 parts would enough but build robust software around them. The amount of time I have wasted fighting ST's tools and generated code makes me wonder if I should stay put with ST.
Please on-board some new members with good experience in best practices around software development. If I may suggest, get someone from pure software development background this person need not have any idea about hardware or firmware - you need someone like a enterprise software programmer with experience of working in large teams and using version control systems to the hilt and someone who knows the best practices in software. My observation has been that embedded software engineers are in general not as good with best practices around code management as their pure software counterparts are. I have seen too may embedded engineers saving dozens of copies of their work-space as a crude and error prone version control system.
