5 Replies - 1290 Views - Last Post: 28 June 2013 - 09:10 PM

#1 Vincent_m  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 26-June 13

Developing Embedded Linux Firmware

Posted 26 June 2013 - 04:51 AM

I'm working toward developing a custom Linux-based firmware for ARM architecture for a gaming system I'm tinkering with. I know I have to build the Linux kernel from source for ARM architecture, but not sure where to go... I've also looked into the BuildRoot and Linux From Scratch projects as well.

For now, I think working on an embedded platform is a bit extreme. Since I'm just starting out, I'd like to develop my stripped-down Linux distro for x86. I'd build it, and test the firmware on a virtual machine. I'd like to have the OS stripped down as much as possible since it'll be intended for an embedded OS. I'd also be developing the GUI from scratch. I don't want it to be complex like a typical desktop OS, but rather simple like an embedded OS. Something similar to Android, iOS, or OUYA's GUI. I'm just not sure how to develop my own desktop environment.

Then, I'd develop an SDK from there.

Is This A Good Question/Topic? 0
  • +

Replies To: Developing Embedded Linux Firmware

#2 Skydiver  Icon User is online

  • Code herder
  • member icon

Reputation: 3458
  • View blog
  • Posts: 10,665
  • Joined: 05-May 12

Re: Developing Embedded Linux Firmware

Posted 26 June 2013 - 05:52 AM

Sounds like an interesting project. So do you have a specific question?
Was This Post Helpful? 0
  • +
  • -

#3 Vincent_m  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 26-June 13

Re: Developing Embedded Linux Firmware

Posted 26 June 2013 - 04:49 PM

Wow, I wrote this when I was tired and realized when I woke up that I didn't ask any questions haha... Yes, I have a few:

1) I guess what I'm wondering is, where do I start?
Could some one provide me with instructions, or to a resource that'll explain how to build this? I'd like the OS to be less than 256MB disk space and have an even smaller memory footprint. I'd like to aim for Tegra 4 hardware. Are there any forums dedicated to embedded system development?

2) How would I go about developing my own UI for my Linux distro?
I'd like to develop a window manager system, and I have a good idea on how I'd go about making mine, but I have no clue where to start, how to render it to the screen (I'm thinking about using OpenGL to do everything), etc. Are there any good resources that could show me how to develop my own desktop like Gnome or KDE? Mine will be much simpler in nature.

3) What is the anatomy of the Linux operating system file structure?
I have some idea what etc, usr, var, etc. all do, but is there a resource online that explains the operating system and how it works much better? I've done some research, and surprisingly, I have only come across resources here and there that give a little information on what I'm looking for. I want to know how Linux works at a deep level, etc.


Again, the project is aimed to create an embedded Linux-based OS like you'd find on Android, the PSP, iOS, OUYA, etc. I have quite a bit of programming experience and I've used Linux, UNIX, Mac OS X (it's UNIX), and Windows. I also have some basic knowledge of what an OS does, what a kernel is, what drivers do, kernel vs user space, processes and threads, etc. If anyone could point me to resources that'd be a good start or even give me a roadmap of some skills I'd need to pick up, that'd help me figure out what I need to search for.
Was This Post Helpful? 0
  • +
  • -

#4 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 7564
  • View blog
  • Posts: 12,685
  • Joined: 19-March 11

Re: Developing Embedded Linux Firmware

Posted 28 June 2013 - 08:02 PM

There are some projects that, if you're ready to do them, you probably don't have to ask how to start doing them.
I think this might be one of those. If you can't bite it off, you probably can't chew it.

Maybe you could try to identify some reasonable sub-problem that you'd be able to get a start on?
Was This Post Helpful? 1
  • +
  • -

#5 Vincent_m  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 4
  • Joined: 26-June 13

Re: Developing Embedded Linux Firmware

Posted 28 June 2013 - 08:36 PM

View Postjon.kiparsky, on 28 June 2013 - 08:02 PM, said:

There are some projects that, if you're ready to do them, you probably don't have to ask how to start doing them.
I think this might be one of those. If you can't bite it off, you probably can't chew it.

Maybe you could try to identify some reasonable sub-problem that you'd be able to get a start on?


This is exactly what I'm getting at. Kind of like building an emulator: if you have to ask, then you're not ready. Still, everyone needs to start somewhere, and that's what I'm after. I've had the opportunity to do more research, and I've found some more information on what makes up a Linux distro:
1) Linux Kernel: main interface between the application and the CPU
2) GNU Environment: provides system calls and everything POSIX
3) Device Drivers: collection of software and APIs that act as a extensions to the kernel allowing application code to interface with the hardware through this layer of software
4) Desktop Environment: the GUI that provides a convenient way for the user to interact with the operating system, and providing applications to help automate the experience (file explorer, Control Center, etc)
Was This Post Helpful? 0
  • +
  • -

#6 jon.kiparsky  Icon User is online

  • Pancakes!
  • member icon


Reputation: 7564
  • View blog
  • Posts: 12,685
  • Joined: 19-March 11

Re: Developing Embedded Linux Firmware

Posted 28 June 2013 - 09:10 PM

Frankly, none of those look like chewy sub-problems. Look for something that makes you think "well, I think I know how to start on that" or at least "well, I can imagine how that would work".

3) What is the anatomy of the Linux operating system file structure?


Depends on the distro. Should be documented for the distro you're using, but it's often assumed that you have an idea of what you're looking for, which is awkward for the beginner. If you're thinking about system admin stuff, Nemeth et al's Linux System Administration Handbook should be on your desk. 4th edition is the current one. It goes into some detail about the structure of the OS system files on various popular distros.

For more detail, there are a number of books with titles like "The Design of the Unix Operating System" and "The Design and Implementation of the 4.3BSD UNIX Operating System" (to pick two that are on my shelf) which give lots of the sort of information you're looking for. Both of those are dated, but they give you at least an idea of how one particular UNIX implemetation can be devised. From there, you can start to understand the more general logic, and from there you can understand more particular OS design decisions.
Was This Post Helpful? 1
  • +
  • -

Page 1 of 1