So You Want to Be an Embedded Linux Developer

2024-01-04 10:32
文章标签 linux developer embedded want

本文主要是介绍So You Want to Be an Embedded Linux Developer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

摘自www.linux.com

 

Android smartphones and tablets represent only the most visible part of a larger embedded Linux ecosystem that extends throughout industries like consumer electronics, telecom, manufacturing, and transportation. As device requirements call for more intelligence and networking savvy, Linux has become the oft-hidden secret sauce in everything from set-top boxes to home automation systems to rugged field handhelds.

It's not surprising then that embedded Linux developers continue to be in high demand. But just who are these people, what skills do they need, and how do they spend their days? Are they primarily programmers writing to hardware targets or are they mechanical and electrical engineers who know some coding?

Justin Waters

Justin Waters is manager of embedded development at Timesys.

The good news for developers who want to check out embedded is that software is increasingly running the show. With multi-faceted system-on-chips (SoCs) running today's gadgets, "most of the deep EE issues have been abstracted away in digital circuits," says Justin Waters, Manager, Embedded Development at Timesys, which offers its LinuxLink development platform. "The remaining issues are much more software-oriented."

Still, most embedded applications require someone with deep understanding of hardware design. In addition, many projects demand knowledge of hardware tools like soldering irons, oscilloscopes, target debuggers, and logic and network analyzers.

"It's often said that software dominates the embedded world these days, but that varies considerably according to the project and industry," says Rick Lehrbaum, a consultant and publisher of theDeviceGuru blog. Lehrbaum co-founded AmPro, now part of Adlink, and is known as the chief developer of the PC/104 embedded board form-factor.

The Job Description

Rick Lehrbaum

Rick Lehrbaum, a consultant and publisher of the DeviceGuru blog co-founded AmPro and is known as the chief developer of the PC/104 embedded board form-factor.

"Embedded development" encompasses a wide range of potential jobs, from hardware design to firmware development to COTS-based system development. Arguably, Android app programming could be included, although it often has more in common with general software development.

Developing firmware requires especially demanding skills, says Lehrbaum. "Firmware developers need to understand lower-level hardware function control," he says. "At the same time, they need to know issues like user interface design and system reliability."

Firmware developers, who often work hand in hand with hardware engineers, need a thorough knowledge of the Linux kernel and components, and possibly Android expertise as well. They also need to know at least one processor architecture. In consumer electronics, this is typically ARM, but in other areas, especially networking and industrial, x86 is far more prevalent, along with MIPS or PowerPC. Increasingly, developers are asked to optimize code for multi-core processors, which in turn demands a deeper understanding of multitasking.

Most embedded development jobs require an understanding of hardware design, prototyping, compiling, debugging and testing tools. It is also important to be able to write interfaces to multiple peripherals, including serial busses, timers, generators, DACs, and display devices. Your dreams will be filled with device drivers.

Projects based on off-the-shelf COTS hardware, using embedded module form-factors such as PC/104, COM Express, and QSeven, generally require less time and expertise than custom hardware projects. Using larger carrier-board formats with real-world ports like Mini-ITX reduces the learning curve even further.

"For COTS developers, the effort consists mostly of software development," says Lehrbaum. "But there's still the need for some knowledge of mechanical engineering, such as packaging, as well as electronic design, including custom I/O interface development."

COTS developers are facing new challenges as modules move from x86 to ARM. "The transition to ARM is a big challenge and opportunity," says Lehrbaum. "Most ARM chips are highly customized, whereas x86 is more of a well-defined system."

Team Players

Embedded projects tend to be more diverse in scope than server- or desktop-oriented projects. In consumer electronics in particular, there is a continuing churn of new platforms, applications, components, processors, peripherals, and features, any of which can trip up the others.

"The biggest challenge is the sheer size of the market," says Waters. "There are so many different architectures, operating systems, and component vendors, that it's impossible for any one person to master it all. The embedded world is so heterogeneous that it's very difficult for somebody to find a niche."

Due to the variety of hats required, embedded development is usually performed in teams, with different members playing specialized roles, says Lehrbaum. In addition, different industries and device targets often demand specific knowledge.

"Embedded development is all about the target device," says Lehrbaum. "Environmental factors and standards vary greatly depending on the industry." For example, one needs to know about SAE for automotive applications, MIL-STD for military systems, and HIPAA for medical devices, he adds.

Despite the need for specialization, all the developers need at least a basic understanding of all development facets. Even mobile app developers using a higher-levelAndroid framework, for example, need a grounding in power management, sensors, telephony, storage, and security. For mobile devices, power management consumes a lot of development time.

Troubleshooting: Diggers Wanted

The wide variety of components, skills, and tasks required in embedded development can be maddening, but this can also make it more compelling than standard software development. In addition, many developers like the sense of fulfillment they get from a finished device.

Your satisfaction may vary, however, if you become easily bored or frustrated with debugging and testing, which always seems to take longer with embedded. Many developers relish the forensic challenge of hunting down and squashing obscure bugs while many others simply endure it as a necessary evil.

"Embedded troubleshooting often means interacting with the system at the chip-, interface-, and protocol levels," says Lehrbaum. "Developers need to understand the hardware enough to build fail-safe code and control the system so it doesn't violate parameters."

According to Waters, embedded debugging is the largest missing skillset among entry-level developers. "Most college coursework focuses on software development using a full-fledged debugger, but with all of the moving parts of a low-level system, these tools aren't terribly useful," he says. "A developer needs to truly understand how the pieces interact and come up with specialized ways to find the source of an issue. It's important to be able to 'think around' difficult problems and function outside of a traditional debugging environment."

This heuristic, trial-and-error process tends to self-select for a particular embedded hacker temperament. "The most successful embedded developers I know are what I call 'diggers'," says Waters. "They have the patience to dig in to a difficult problem and get down to the basics of what could be going wrong; they have the desire to peel away the abstractions. By contrast, for a higher-level programmer, this can be a distraction -- it's often helpful for them to ignore the implementation."

Open Source Challenges and Benefits

logo training

Visit training.linuxfoundation.org for more information on embedded development classes.

Due to the crazy-quilt nature of open source and distributed resources, embedded Linux development tends to be more complex compared to a proprietary OS. Yet, open source more than pays for that complexity in other ways, say Waters and Lehrbaum.

"The wealth of sample open source code for all types of devices is invaluable," says Waters. "It allows developers to leverage existing code with minimal changes. There's also a large focus on portability and standardized interfaces."

The open source community is another great asset. "Chances are, you aren't the only one having the same problem," says Waters. "Unless you're on the bleeding edge, there's a good chance the issue has already been fixed."

To get more information on what it takes to be a Linux developer, check out the Linux Foundation'sLinux training site. 

 

5 signs you might like embedded development:

- You're a software developer with a deep knowledge of hardware design.
- You like working on a team.
- Building devices gives you a sense of accomplishment. 
- You have the patience to dig into difficult problems to get to the root cause.
- You like the challenge of juggling a wide variety of components, skills and tasks

这篇关于So You Want to Be an Embedded Linux Developer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569040

相关文章

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效