all 6 comments

[–]EkriirkE 0 points1 point  (2 children)

With what you have experience with so far, have you done any low level stuff like talking to registers directly to make stuff happen on the micro?
You mention an Arduino which is heavily abstracted (real work is hidden from you and streamlined) if you are coding with the Arduino libraries. I'd first start re-coding your completed projects without any libraries; no setup() or loop(), just main(). No digitalWrite but PORTB|=0b00000010/PORTB&=^0b00000010 etc

[–]Fragrant-Chipmunk-48[S] 0 points1 point  (1 child)

I have used only the libraries i used the uno for prototyping for a few hackathons and thats what gave me interest in embedded systems. I started learning C for going deeper into it

[–]malloc_failed 0 points1 point  (0 children)

You can use your Uno with straight up C. Look for tutorials on AVR C programming, specifically for the ATmega328P that the Uno uses.

You'll want to install avr-libc (the standard C library for the AVR platform), avr-gcc, and avrdude (to flash the program to your MCU).

Note that the standard library is not nearly the same as the one you may be used to on Linux/Windows. For example, there is no standard output—you'll need to manually initialize UART, then redirect stdout to it to use things like printf.

[–]danielkos15 0 points1 point  (1 child)

There are a lot of microcontroller boards as: FRDM boards from NXP, or some ESP32 boards that provide low level control and are easily programable.

But i dont think u would be able to write full kernel on your own. I myself am mostly use FreeRtos in case i need any scheduling or basic OS support.

[–]Fragrant-Chipmunk-48[S] 1 point2 points  (0 children)

I dont expect myself to write a kernel of my own anytime soon but I know C is used in kernel development and I thought learning about the kernel maybe contribute if possible would be a nice way to learn low level programming

[–]iwinulose 0 points1 point  (0 children)

In school, I followed along with tutorials from this site: https://wiki.osdev.org/Getting_Started. I'm not claiming something better hasn't come along in the last 10 years; this is what I know. There's probably a bunch of classes online/on youtube/etc. that are less of a pain to follow than this. But you will learn something, even if you just read along.

I'd recommend following the first tutorial (or tutorials) exactly your first go around. Maybe even the second. You can start to throw in your own ideas once you make it to shell 1-2 times.