This is a bit of a simplistic Q and I am in the early stages of deciding...
My background is a huge amount of assembler on Z80, Z180, Z280, 80x86,
8031, 8051, AT90S1200, H8/300, etc. Plus a bit of C. No C++.Now I am starting on a new product which will need about 1MB of *data* storage (factory initialised so can be on chip FLASH) plus some floating point maths, and will be done mostly in C.
I have been using Atmel chips for many years but they seem to run each one for only a few years nowadays, and that is my biggest negative on Atmel. We were going to do this (and other upcoming projects, mostly serial comms) with one of the ATmega128 type of chips but each time I look at the range, they seem to have discontinued half of the specific devices.
Whereas the H8/300 has only just gone on LTB, after some 25 years... which leads me to think ST is the way to go as this is a "serious" industrial product which will run for at least 10 years. Also, looking at what other firms use (e.g. Pico) they seem to be often using the ST
32F103 or similar which comes in a huge family, from miniscule 6mm x 6mm chips with 16k FLASH (cost $1 1k+) to 1MB FLASH for about $10.The devt kits seem to use GNU compilers and the Eclipse IDE, with IAR charging even more for their compilers than they ever used to. IAR compilers used to be good but they did contain some really bad details e.g. an incredibly slow sscanf() where they were doing multiple floating point ops for every single input digit. I spent ages optimising that stuff. I think their runtimes were written in generic C and that was it. The tool cost is not that important in this case however.
I' be very interested in hearing peoples' views on this. I really want a 10 year life of the actual device.