August 20th, 2024

So you want to build an embedded Linux system?

Embedded Linux systems are ideal for complex, internet-connected devices. Application processors with MMUs are essential for Linux, offering superior networking, security, and data management compared to bare-metal RTOS.

Read original articleLink Icon
So you want to build an embedded Linux system?

Embedded Linux systems are increasingly popular for engineers looking to develop more complex, internet-connected devices. This article serves as a primer for embedded engineers familiar with microcontrollers but new to microprocessors and Linux. It discusses the advantages of using application processors, which are essential for running Linux due to their memory management units (MMUs). The author emphasizes that once a system is booted into Linux, the development environment becomes uniform across different processors, making them nearly interchangeable. The article also highlights the importance of hardware design, noting that the complexity of PCB design varies significantly among application processors. The author shares insights from designing multiple development boards, focusing on cost optimization and troubleshooting. Key differences between microcontrollers and application processors are outlined, particularly the significance of MMUs for memory management and dynamic allocation. The article further explores the benefits of Linux in networking, security, and data management, contrasting it with bare-metal real-time operating systems (RTOS). Linux provides robust networking capabilities, easier debugging, and better security features, making it a compelling choice for embedded systems. The author encourages engineers to explore designing their own Linux boards, emphasizing the learning experience involved.

- Embedded Linux systems are suitable for complex, internet-connected devices.

- Application processors with MMUs are necessary for running Linux.

- Hardware design complexity varies significantly among application processors.

- Linux offers superior networking, security, and data management compared to bare-metal RTOS.

- Engineers are encouraged to design their own Linux boards for better learning and experience.

Link Icon 6 comments
By @manuel_w - 6 months
Since an embedded Linux system will likely require use of either Buildroot or Yocto, I'd like to ask the following slightly off-topic question:

Which SoM product line would you say has the best vendor support? I'm talking about quality of the BSP (board support package). (A meta-layer, in Yocto terms.)

Raspberry Pi has quite a community behind it, so meta-raspberrypi has a number of contributors. (None of which payed by the Raspberry Pi foundation, though.)

My latest project involved a NVidia Jetson SoM, and I was surprised to learn that the BSP doesn't see any support from NVidia at all. They rely on one motivated guy (Matt Madison) maintaining it in his free time.

I'd love to see a vendor that provides a first-class BSP maintained by their own people.

By @AtlasBarfed - 6 months
Isn't the punchline in most of these articles always "Hey so you want to get paid 50% of other people in IT in order to do this field that is 200% harder?"
By @ab71e5 - 6 months
Question for anyone who has done something similar : how feasible would the hardware part be for someone who has some basic electronic / breadboarding knowledge but no pcb design experience? Besides this excellent article what would be a good resource to learn to do something like this myself?
By @dilawar - 6 months
Excellent blog! Love the fact that a great amount of background information is added to the article. Can be read as an "introduction to embedded programming" chapter but not as boring as you find in textbooks.
By @amelius - 6 months
Embedded systems question. I have an nVidia Jetson, and I want to expose one of the USB3 ports to the user of the system (e.g. so they can attach a USB drive). However ... the USB3 port of the Jetson is not near the enclosure of the box. Now I'm thinking of using a USB3 cable, but I know from experience that this is not going to give a reliable connection. Any suggestions on how to properly do this? I don't want to move the Jetson, in part because I am planning to use the other exposed ports internally.
By @vegadw - 6 months
[2020]