Home > On-Demand Archives > Talks >
Getting Linux To Run On Your Custom Board
Mohammed Billoo - Watch Now - EOC 2020 - Duration: 38:30
The ability of silicon vendors to pack more components and capability into a single silicon die has allowed these System On Chips (SoCs) to support Linux. In turn, developers have been able to quickly migrate their application to be deployed "to the edge" without significant rework. The main objective of this session is to provide embedded systems engineers an overview on the steps necessary to get Linux running on a custom board, issues they may face, and how to debug these issues. This session will provide an introduction to Linux and its value in embedded systems, and how it differs from "traditional" Linux that runs on desktops. This session will also discuss how Linux differs from other embedded software paradigms, such as "bare-metal" and RTOS-based application development.
Thank you for checking out my presentation! Glad you enjoyed it and found it beneficial. I've become involved in the breadbee project: https://github.com/breadbee/breadbee
You can pick up a dashcam that has a similar processor until the board is shipped. The one I'm using is:
https://www.ebay.com/itm/Xiaomi-70mai-Dash-Cam-Lite-1080P-Smart-Car-DVR-Camera-130-Wifi-Driving-Recorder/184299943727?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649
Feel free to reach out to me at mab@mab-labs.com if you have any more questions.
Do you know what the minimal hardware requirements are for running a Linux kernel?
Most of my experience comes from running GNU/Linux on servers, but I also worked at a telecommunications company for two years as a device developer. I was the team lead for our embedded PBX appliance, which ran OpenWrt, a distribution targeting routers and other networking hardware.
I am now the chief technology officer at a startup for a fitness device which is running a bare metal appliance based on CMSIS on an STM32 chip.
Generally, you just need an MMU (ARM A series) and the RAM requirements are dependent on the application(s) you want to run on the board. The kernel and busybox don't consume much RAM at all (you can get away with 64 MB of RAM). Feel free to reach out to me at mab@mab-labs.com for any help you'd like for your startup (I've been doing a fair amount of bare-metal/FreeRTOS development recently along with my Linux work)..
In terms of getting involved with kernel development, are there any IRC channels that you would recommend?
For getting started with Linux kernel development in general, you might want to checkout the kernel newbies project: https://kernelnewbies.org
I don't use IRC so don't know of any channels. But, the best way to get involved is to dive right in. I've become involved in the breadbee project (https://github.com/breadbee/breadbee) and am working on getting the USB controller working. If you see any driver that piques your interest, file an issue and Daniel will help you get started. The lack of HW is not a showstopper - you can pick up the following board to get you started (the processor is a close variant of the one on the final HW):
https://www.ebay.com/itm/USA-Xiaomi-70mai-Smart-Recorder-Lite-1080P-HD-Dash-Cam-Car-DVR-Security-Camera/254538154167?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
And you can email me with any questions at mab@mab-labs.com
Excellent presentation
Thank you! Glad you benefited from the talk.
Interesting talk !! Should have focussed more on the actual board bringup workflow.
Thanks for the feedback. I'll definitely focus more on the board bringup workflow, with a proper demo, in a future presentation/blog post.
Great presentation Mohammed. Hope all is well
-Zahir Quijano
Zahir! Thanks for the kind words. I'm glad you enjoyed it and hope everything is well with you too!
Very insightful session. Yet not exposed to Embedded Linux much but was able to relate with steps I did to run Linux on iMx 8. Very nice presentation
Thank you! Glad you benefited from the presentation.
Nice Job. Good presentation and useful info. I usually do "bare metal" stuff but who knows what might come up.
Thanks
Jim Bernitt
Thank you!
Very insightful and a nice intro/overview. Thanks Mohammed!
Thank you! Glad you enjoyed it.
In the Ethernet DTS example, what is the purpose of having "simple-bus" in the compatible? Would it actually work if there was no driver for the first item in compatible? I've been confused about why DTS files will have "fall back" options in compatible string.
Drew,
Excellent question. The "simple-bus" marking will result in the corresponding bus to be a simple memory map interface. Its main purpose is to still allow the children of the parent bus node to still be enumerated as platform devices, and allow their corresponding drivers to attempt to interface with the device. The purpose of the fallback options has been to allow at least some driver to get some sort of barebones functionality up for the device. I hope this helps! Let me know if you have any more questions.
Thank you for the presentation... I have been working in Embedded (Automotive) and although learned Embedded Linux, what I remember and learnt is patchy.. One of the topics I wanted to get back to was this and you have given me a good platform to start with... Like the idea especially of updating the fbdev to interact with the display.. The other one you mention that there would be possibility of getting boards; any suggestions of project where we can contribute... I have been involved working with Cortex A systems using proprietary OSes & BSPs (picked up some good debugging skills and reading code) and now want to know more on Linux...
Thanks again!!