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

相关文章

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

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下多