0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简化SBC的嵌入式Linux软件开发

星星科技指导员 来源:嵌入式计算设计 作者:Nathan Z. Gustavson, 2022-06-28 11:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如今,大多数从大学毕业并获得电气工程或计算机科学学位的程序员都非常精通 Linux 桌面平台上的编程。当这些程序员需要跨越式地对嵌入式 Linux 系统进行编程时,他们常常会惊讶和困惑,他们在桌面上编写的程序将无法运行他们的 Linux 嵌入式系统

为了缓解这个问题,一些程序员选择在嵌入式应用程序中使用桌面系统版本。这通常不太适合,因为台式机系统通常具有风扇和硬盘驱动器,它们是故障点。更大的障碍是快速变化;拥有最快、最新技术的需求在短短六个月内就淘汰了桌面系统。围绕一个没有寿命的平台设计一个寿命长的嵌入式产品是灾难的根源。

即使桌面平台可以保证从现在起大约五年后,Linux 内核和相关的发行版也是移动的目标。内核和标准库在不断发展,发行版也在努力跟上步伐。内核补丁和库更新可能会使用户的程序无法运行。当工程师由于安全漏洞或其他问题而需要更新开发机器时,这种情况会更加严重。需要一种从标准桌面环境中抽象出嵌入式开发环境的方法。

关键不仅是要找到一个长寿命的嵌入式Linux硬件平台,还要找到一个长寿命的嵌入式Linux软件平台。熟练的嵌入式 Linux 程序员通常可以通过收集正确的库和工具版本,并适当地修改 Makefile 来创建嵌入式开发平台。即使成功,它也是一个次优的开发环境。

理想情况下,编译器不应该依赖于其主机的库和内核,而是依赖于更静态目标的工具链。软件平台应与其他平台、其他操作系统(OS)和其他语言兼容。软件开发工具包 (SDK) 应该基于具有广泛社区支持的工具链,以便即使驱动 SDK 的组织之一停止支持它,它也可以在其他组织的肩膀上生存。

进入日食

Eclipse 是一个开源的、可再发行的、跨平台的代码开发框架。它本身就支持 Java 和 C/C++ 及其 CDT 插件。它提供了许多由商业集成开发环境 (IDE) 反复改造的相同功能(语法突出显示、语言感知搜索、代码完成等),但不依赖于任何特定的工具集来完成它(见图1)。

图 1:商业集成开发环境 (IDE) 反复改造的许多相同功能(语法突出显示、语言感知搜索、代码完成等)但不依赖于任何特定的一组完成它的工具

poYBAGK6eWuACZOaAARwCSx-aKI995.png

该解决方案的灵活性促使 EMAC 和其他嵌入式软件公司在 Eclipse 环境中构建开发平台。这种商业采用为嵌入式代码开发人员创造了事实上的标准化。OEM 可以编写与 GNU 工具链一起使用的 Eclipse 插件和项目,同时提供与运行 Windows 和 Linux 的众多商业平台的兼容性。

嵌入式 Java

EMAC 的原始 Eclipse 环境是为 SoM-400M 模块开发的,使用 Dallas/Maxim 的 DS400 TINI 处理器。该处理器的固件包含专有的嵌入式 JRE。通过为普通 JRE 环境编译类,用 TINI 特定 jar 替换核心 jar,然后将生成的类转换为 TINI 可执行文件来完成为系统构建 Java 代码。

为此,开发人员利用了 Eclipse 的原生 Ant 支持,它可以用来创建一种 XML 格式的高级 Java Makefile。Ant 然后使用 Eclipse 的 JDTcompileradaptor 类构建目标,这使得内部编译器可用于 Ant 的任务。Sourceforge TiniAnt 扩展然后执行从 Java 类到 TINI 可执行文件的最终转换。执行此操作所需的所有复杂声明都隐藏在顶级 build.properties 文件中,从而极大地降低了将 SoM-400M 编译为简单的标准 Ant 任务的复杂性。

交叉编译的 C

Eclipse 工具项目提供了一个开放的、可再发行的 C 开发插件,称为 CDT。除其他外,它还提供:

语法高亮

代码完成

即时构建

调试器集成(使用 GDB 的 MI 接口

它不提供实际的编译器、链接器和调试器二进制文件。这些特定于正在构建的目标,并且必须从外部源提供。然后可以通过编写 Eclipse 插件将它们集成到 Eclipse 中,或者更简单地说,通过使用“标准”make 项目并在 Makefile 中指定编译器。

清单 1 中的 Makefile 将在 EMAC Eclipse 环境中编译一个简单的 Hello World 示例项目。

SDKBASE=。./。./

CROSS=$(SDKBASE)gcc-4.0.0-i486-D/bin/i486-linux-

CC=$(CROSS)gcc

LIBFLAGS =-lc

#VERBOSE=-v

CFLAGS= -g

OFLAGS=-Wl

TARGET=hello

CFILES=hello.c

all: $(TARGET)

$(TARGET): objects

$(CC) $(VERBOSE) *.o $(OFLAGS) $(SLIBS)-o $(TARGET) $(LIBFLAGS)

objects: $(CFILES)

$(CC) $(VERBOSE) $(CFLAGS) -c $(CFILES)

clean:

$(RM) *.o *.gdb $(TARGET)

TARGET_IP=192.168.0.1

LOGIN=someuser

PASSWORD=somepassword

upload

wput $(TARGET) ftp://$(LOGIN):$(PASSWORD)@$(TARGET_IP)/。./。./tmp/$(TARGET)

与嵌入式 Java 环境一样,所有项目共有的复杂编译器/链接器标志隐藏在更高级别的文件中,然后包含在 SDK 中的所有 Makefile 中。

EMAC 通过针对目标开发操作系统的库构建免费可用的 GNU 交叉编译器,为其所有板提供交叉编译器。在 Linux 上,这些库是原生的;在 Windows 上使用 Cygwin 库。然后,我们“隐藏”实际的 Eclipse 可执行文件并用一个批处理文件替换它,该批处理文件在 Eclipse 启动时临时添加所需的路径以支持 GNU 工具链。

调试

使用 GDB 和 GDBServer 进行调试以促进远程调试环境。为此,将编译后的可执行文件上传到 SBC 并启动 GDBServer 会话,侦听特定端口或串行终端。Eclipse 调试透视图允许用户通过指定要使用的连接参数以及为目标体系结构构建的 GDB 版本来调试应用程序。

“通过一点点集成,OEM 可以为其开发板创建一个强大的跨平台开发平台,该平台将在许多商业软件供应商采用的同一平台上运行。”

Debugging 透视图显示要调试的程序的源代码和生成的汇编代码。易于管理和监视断点和变量,以及逐行单步执行程序。源代码中的当前位置会自动突出显示。Eclipse 提供了一个图形化的调试环境,极大地简化了远程目标调试的过程。

目标沟通

在为嵌入式环境进行开发时,需要通过串行终端程序或使用 Telnet、SSH 或其他类似连接通过 TCP 与目标板建立连接。当这是通过命令行界面或图形前端完成时,程序员被迫不断地在窗口之间切换以同时监视连接和 IDE。

EMAC 通过集成 Eclipse 插件消除了这个问题,这些插件允许 SSH、Telnet 和终端连接都在 Eclipse 中。这允许程序员监控嵌入式目标板,就像它是本地文件系统一样,并直接发出命令,而无需离开 Eclipse 环境。

CVS

Eclipse 原生提供了强大的 CVS。通过设置 CVS 登录并向客户提供密码,开发人员可以确保他们始终可以访问最新版本的代码和产品的错误修复。

将 SDK 的软件补丁和全新组件上传到 CVS 服务器可为客户提供最新的软件支持,客户可以以图形方式查看文件中的差异,并使用已上传的部分、全部或不修补自己的 SDK 。

文档

Eclipse 提供了自己的本机浏览器,这有利于在工作区中创建 HTML 链接文档。通过这种方式,客户可以浏览 HTML 文档(类似于 Doxygen 和 Javadoc 生成的文档)。上下文相关的帮助也集成在 Eclipse 中(参见图 2),使新用户的工作效率更高。

图 2:上下文相关的帮助也集成在 Eclipse 中

pYYBAGK6eXWARKK0AAe3UaB-E_8246.png

该文档也可以直接链接回软件开发人员的网站,从而允许动态添加用户文档。用户可以使用选项卡从代码直接切换到文档,而不是一次浏览多个窗口。

集成工具,更好的开发

Eclipse 提供了一个环境,让 GNU 工具和商业工具可以一起发挥作用。只需稍加集成,OEM 就可以为其电路板创建一个强大的跨平台开发平台,该平台将在许多商业软件供应商采用的同一平台上运行。

在 Eclipse 框架内,EMAC 使用交叉编译来缓解将嵌入式开发环境从标准桌面环境中抽象出来的问题。调试是使用带有 Eclipse 窗口的 GDB 来完成的,用于调试器的输入和输出。与目标的通信也通过 Telnet、FTP、终端和 SSH 插件集成到 Eclipse 中。CVS 版本控制和 HTML 文档也是在 Eclipse 环境中完成的。

将上述所有开发功能整合到一个标准 IDE 中,构成了一个强大、高效的开发平台,可以与基于 Java 的小型 8 位控制器和用 C 编程的 32 位 Linux 服务器一起使用。

作者:Nathan Z. Gustavson,Eric Rossi

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11817

    浏览量

    219555
  • 服务器
    +关注

    关注

    14

    文章

    10359

    浏览量

    91758
  • JAVA
    +关注

    关注

    20

    文章

    3006

    浏览量

    116832
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一文浅谈嵌入式设计

    本文深入探讨嵌入式系统设计的完整流程与关键要点,从芯片选型、硬件架构到软件开发,助您掌握打造稳定高效智能设备的实战方法论。
    的头像 发表于 03-13 10:32 216次阅读

    嵌入式软件开发工具市场新动向:订阅制趋势下的中国开发者选择

    面对软件业从永久授权模式广泛转向订阅制的行业趋势,作为行业两大主流嵌入式软件开发工具,即Keil MDK与IAR Embedded Workbench也推出了不同的市场策略,正在为中国开发
    的头像 发表于 01-30 17:20 915次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>工具市场新动向:订阅制趋势下的中国<b class='flag-5'>开发</b>者选择

    嵌入式驱动开发,需要掌握哪些技能?

    单元测试、集成测试、系统测试等,并学会使用调试工具进行问题排查。 6、 其他嵌入式驱动开发,实质也是软件开发,还需要掌握开发文档的编辑、软件
    发表于 01-20 16:46

    Linux开发嵌入式必备命令速查表

    嵌入式开发中,Linux系统几乎成为必备的开发环境。不管你是在做STM32、RaspberryPi、还是基于ARM的板子,熟练掌握Linux命令不仅能加快
    的头像 发表于 01-19 09:06 1029次阅读
    <b class='flag-5'>Linux</b> 下<b class='flag-5'>开发</b><b class='flag-5'>嵌入式</b>必备命令速查表

    什么是嵌入式应用开发

    概述 所谓的嵌入式应用开发就是在嵌入式操作系统下进行开发、软硬件综合开发嵌入式应用
    发表于 01-12 16:13

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    功能包括: 测试通过/失败统计 代码覆盖率可视化 执行时间分析 缺陷跟踪和报告生成 winAMS的图形化界面可以直观展示测试结果和覆盖率数据。 七、总结与展望 C语言单元测试在嵌入式软件开发中具有不可
    发表于 12-18 11:46

    从小白到大牛:Linux嵌入式系统开发的完整指南

    从小白到大牛:Linux嵌入式系统开发的完整指南 一、小白入门:搭建 Linux 嵌入式开发的认知地基​ 对于零基础学习者,首先要打破 “
    发表于 12-16 10:42

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下
    发表于 11-28 07:48

    嵌入式与FPGA的区别

    ,一是嵌入式软件开发,主要与嵌入式cao作系统、应用软件等有关。第二是嵌入式硬件开发,需要掌握硬
    发表于 11-20 07:12

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    抢先体验 SHEL 流程简化所有 AMD 嵌入式开发平台上的软件项目生成过程 Zephyr RTOS 兼容性已扩展至第二代 AMD Versal AI Edge 系列、Kria SOM
    的头像 发表于 08-20 09:15 4219次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1438次阅读

    2025“芯原杯”全国嵌入式软件开发大赛圆满落幕

    此前,2025年7月20日至26日,第四届“芯原杯”全国嵌入式软件开发大赛决赛在海口成功举办。
    的头像 发表于 08-06 09:51 1572次阅读

    嵌入式软件开发常用的软件有哪些?

    对于初学嵌入式的朋友们,会想要了解嵌入式软件开发常用的软件有些,有什么用。那么看以下常用的软件介绍。 1.Visual Studio Cod
    发表于 07-03 17:06

    Linux嵌入式和单片机嵌入式的区别?

    区别 单片机嵌入式系统和Linux嵌入式系统是两种不同的嵌入式系统开发方式,它们在应用领域、开发
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29