After some years, I still feel inadequate as a programmer, since I don't have a lot of experience with low level stuff and I'm really interested in it. I got an Arduino starter kit, but still I don't feel satisfied. I would like to do some MCU programming (in assembly) from the metal -> up. That means that I don't want any software on my MCU and I would like to write absolutely everything myself. That would be considered a hobby and time is not an issue.
Question:
I'm sorry if my post is inadequate in some form.
Thanks, Chris.
Yes it's possible - and what's better is you can use your existing Arduino (and its handy bootloader) as a bare-metal ATmega328p development board, simply by ignoring the Arduino IDE and libraries, and directly using avr-gcc to build and avrdude to load your hex files via the bootloader. You can even use the version of these tools installed by the Arduino IDE.
Of course there are countless other chips, boards, compilers and IDEs you can buy as well - but we try to keep things generic on SE sites and not delve into shopping recommendations.
To address your last point, most MCUs come with very little built-in software. But some do have an on-board bootloader (either permanent or previously flashed) which can accept a program over a serial port or USB. That's a very handy feature, as it means you can use a cheap, standard "consumer" cable to interface with them, rather than a $10-$1000 hardware programmer. Generally this code runs only on startup or only in a special mode - the rest of the time, your software (or libraries you choose to link to and deploy with your code) are all that is running on the CPU. But yes, there are a few cases where someone has taken an MCU with a lot of onboard flash, and put a runtime interpreter for something like .NET on it. If you want to do bare metal programming, then those are probably not what you want.