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命令之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 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1