2015-05-06 10:09 AM
My list of options I've worked out are IAR, Keil, Rowley, (maybe DS5 or others?)
* ONE MAN TEAM... this is important. I have to personally be able to keep every aspect straight. I'm planning on hiring another guy in my department, but it'll likely be a student with zero low level knowledge * There are other options, but large userbase and support are very important factors. * The costs are absolutely third or fourth considered aspects. I've brought in a LOT in product revenue, so I can justify anything I feel like the value is there for. * CMSIS or Not, I don't know. I'm a very low level guy, but porting is a nice idea if it works. * STM32Cube seems to be an interface that still works with other toolchains (I think), do a lot of you guys use it? * My huge annoyance with PIC was that I was stuck with marginal toolchains, I want to move to ARM to have options, but I'd really like to make the ''right'' choices the first go around, I realize things like IAR vs Keil are preference, but if anyone can dumb it down I'd appreciate that. * Pretty well sold on the STM32 series, huge variety and I can get a 20-pin single can, a mid-range dual can, or high end. Very pleased there. Is there anything STM32 aren't great at compared to other vendors? * I have yet to work with an RTOS, but it's an eventuality as project size is growing. I can't do this all on my own without stepping up a level. So, that's also playing into my toolchain choices. Any advice or recommendations would be welcome. Thanks! #arm #keil #compiler #toolchain #llvm2015-05-09 02:26 PM
Another vote for IAR Embedded Worbench for ARM. It works well and has been solid. You can get a free copy if you are doing less than 32K in compiled code. They require either a dongle or node locking for the paid compiler, which is extremely annoying.
Another vote against using the Cube. It tries to hide the hardware so the programmers do not soil their undergarments at the mere thought of having to interact with the hardware. Programmers who need that level of coddling should not be doing embedded programming. It is a perfect manifestation of: If you make something that any idiot can use, only idiots will be using it -- those that did not start out as one will become on by using it.2015-05-10 02:07 AM
Looking for some bootloader options, I stumbled upon two incarnations of basically the same lwIP/TFTP/HTTP IAP project, one older based on the Standard Peripheral Library (often mistaken for CMSIS) (http://www.st.com/web/en/catalog/tools/PF257905) , one newer based on Cube ([STM32Cube_FW_F4_V1.4.0]\Projects\STM324xG_EVAL\Applications\LwIP\LwIP_IAP\). I did not try to compile them myself, but the following are quotes from the respective projects main.h:
(SPL): For example, with all option enabled the total readonly memory size using EWARM compiler v6.10, with high optimization for size, is 39928 bytes (32894 bytes of readonly code memory and 7034 bytes of readonly data memory). However, with TrueSTUDIO, RIDE and TASKING toolchains the total readonly memory size exceeds 48 Kbytes, with this result four sectors of 16 Kbytes each will be used to store the IAP code, so the user Flash address will start from Sector4. (Cube): For example, with all option enabled the total readonly memory size using TrueSTUDIO compiler v4.30, with high optimization for size, is 69840 bytes. Based on this result four sectors of 16 Kbytes and a sector of 64 Kbytes will be used to store the IAP code, so the user Flash address will start from Sector5. Being nontrivial code, I believe these figures are of some relevance to this thread's topic.2015-05-10 05:02 AM
Though it's mostly a matter of opinion, I also fancy using the GNU tools.
The reason for me to use GNU is that there are no other tools available for my platform.So if you want people on other platforms to be able to build your code, you might want to consider using GCC and OpenOCD; perhaps with Eclipse (I do not use Eclipse myself; the compiler and OpenOCD is fine for me).If you're on Windows and you don't need to share your code with others, then you can pick anything you like. ST provides a complete IDE, ARM provides the KEIL tools and there are several others, which I don't even know about. :)Note: KEIL now supports LLVM, in case you prefer this compiler.