Question is how much do you do with arduino before switching?
Perhaps just as long as it takes to work through the experiments in the Starter Kit. Maybe use it on some future mechatronics projects, maybe not. But it is worth the time and effort to work through the experiments. Learn a language, learn a device/paradigm, learn something about electronics and IO, then move on. Maybe a month's work...
I did just one program as I was dense to how C worked. once I have got my head around what was purely C and what may be hardware I went in search of more and rewrote my first program in bare metal.
Doing more than getting to grips with writing some code an the arduino will not help as once you do proper embedded you work in an entirely different way. You don't have to bare metal an ARM, just do an AVR. To do anything clever with a micro you will need to understand the chip and bare metal it or use some other abstractioan system that caters to your MCU in full.
And if the project is sizeable, you probably need to learn Linux and, in particular 'make'. Then there is the absolute nightmare of getting OpenOCD and JTAG to work or some variant of ICSP. You aren't using a development board with USB programming, are you? That might not qualify as 'bare metal'.
i am writing my first bare metal project on ARM now. Firstly what i need to do the arduino is incapable of and it's not even hard, secondly all the problems I am having are with my limited experience and skills in C, nothing to do with the IDE or abstraction. As i have to work closely to the hardware I could not do it any other way.
And the Starter Kit deals with programming in C (in general) although it will be targeting Arduino. C is a project in itself. I started with a PIC16F877 and still like the PIC16F628 (if I am FORCED to use PICs) but my favorite among the AVRs is the ATmega128. But I wrote the code in C on Linux, used 'make' to control the build and AVRdude to do the ICSP programming. It worked extremely well. I like the larger AVRs but, you know, I can do the same thing using an Arduino board as the target and not one bit of Arduino code. In fact, the Arduino IDE uses AVRdude to do the device programming. I don't need the IDE, I don't need the setup()/loop() structure, I can do anything the chip can do using any IDE I want along with 'make' and the avr-gcc tools. I would just use the board to hold the chip long enough to program it.
Deadline is 5 weeks away, usable MCU's that run arduino are out of stock but I have 1000 SAMC21 chips that I asked to be ordered back in October. Next date any of those come out of a fab is November this year - apparently, so by hook or by crook I am bare metalling this little bastard !
Don't know if an RTOS is part of your solution but here's a paper:
http://ww1.microchip.com/downloads/en/appnotes/atmel-42382-getting-started-with-freertos-on-atmel-sam-flash-mcus_applicationnote_at04056.pdfThe secondary reason for using an RTOS is to segment the code. Tasks don't need to know what other tasks are doing, they are self-contained entities. You build your project by concentrating on the task code, not the overall structure. Structure comes from FreeRTOS.
It is rumored that IBM used to figure 100 lines of debugged code per day per programmer. You should have plenty of time.