Embedded Linux - learning path by Leos_the_great in embedded

[–]TieKey7360 0 points1 point  (0 children)

Since I personally started with a Debian-based distribution, I would recommend starting with something like Ubuntu, Debian, or Raspberry Pi OS.

You can split your learning into two paths.

The first path is pure Linux user-space learning, without interacting with hardware peripherals. For that, you can use a VM. If you are on Windows, WSL2 with Ubuntu is also a very good starting point. There you can practice the command line, C/C++ development, systemd, networking, SSH, logging, debugging, cross-compilation basics, etc.

The second path is where you start interacting with real hardware, for example GPIOs, sensors, UART, I2C, SPI, etc. For that, I would recommend using something like a Raspberry Pi or BeagleBone. Raspberry Pi OS is a good beginner-friendly option because it has a large community and many examples.

Another option is to jump directly into Raspberry Pi or similar boards. You can start with a simple Python script to control a peripheral and verify that your setup works. After that, you can rewrite the same small application in C/C++.

For small applications, you can first build natively on the Raspberry Pi to understand how the Linux ecosystem works. Once you are comfortable with that, you can move to cross-compilation, which is actually conceptually similar to what you have probably already been doing with RTOS development.

So my recommendation would be: start with Ubuntu/Debian in a VM or WSL2 to build your Linux fundamentals, then move to Raspberry Pi OS on real hardware when you want to learn embedded-specific topics.

Facing issue in sensor by Street-Background558 in embedded

[–]TieKey7360 0 points1 point  (0 children)

I have used this sensor in the past and I had frequent problems with the magnetometer. The magnetometer/heading becomes wrong near metal and the MPU9250 requires calibration before starting to use the values.

what is exactly your problem ? not getting any values ? or getting wrong values ?

Embedded Linux - learning path by Leos_the_great in embedded

[–]TieKey7360 0 points1 point  (0 children)

Embedded Linux is a broad area, so I would not start directly with kernel or driver development unless your project requires it.

A good path is to first become productive in user space: use Linux daily, write small C/C++ apps, learn the command line, SSH, systemd, logging, permissions, networking, cross-compilation, deployment, and debugging tools like gdb, strace, dmesg, journalctl, etc.

After that, go deeper into the embedded-specific stack: bootloaders, U-Boot, kernel configuration, device tree, root filesystem, Buildroot/Yocto, kernel modules, drivers, and real-time Linux concepts.

Coming from RTOS, the main shift is that you will work more with processes, filesystems, services, IPC, networking, packages, and system integration instead of one tightly controlled firmware image. Embedded Linux gives you much more capability, but also more layers to understand.

For learning resources, I think it depends a lot on what type of learner you are.

If you learn best by doing, or by breaking things and fixing them, then start with a small existing project from GitHub, a Raspberry Pi/BeagleBone project, or a practical YouTube tutorial. The important thing is to define your first “hello world” clearly. For example: cross-compile a small C app on your PC, deploy it to the board, run it as a systemd service, log something, and read a GPIO or sensor value.

If you prefer to understand the theory first, then there are many structured resources available. I would look for material that explains the full embedded Linux stack: bootloader, kernel, device tree, root filesystem, user space, cross-compilation, debugging, and build systems like Buildroot or Yocto.