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使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署