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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Nathan Z. Gustavson, 2022-06-22 11:48 次阅读

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

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

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

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

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

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

进入日食

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

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

poYBAGKykSmAY5kwAAVdvF7EaMM414.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 版本来调试应用程序。

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 中

poYBAGKykTKAYH0oAAljVhF9L_0603.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

审核编辑:郭婷

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

    关注

    4981

    文章

    18265

    浏览量

    288200
  • Linux
    +关注

    关注

    87

    文章

    10986

    浏览量

    206710
  • 服务器
    +关注

    关注

    12

    文章

    8099

    浏览量

    82482
收藏 人收藏

    评论

    相关推荐

    AMD Vitis™ Embedded嵌入式软件开发套件的功能和特性概述

    Vitis Embedded 是一款独立的嵌入式软件开发套件,主要用于为 AMD 自适应 SoC 和 FPGA 中的 AMD 嵌入式处理子系统(基于 ARM 的子系统和 AMD MicroBlaze)
    的头像 发表于 04-08 10:50 311次阅读
    AMD Vitis™ Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>套件的功能和特性概述

    嵌入式人工智能的就业方向有哪些?

    的发展方向有很多,门槛高低不一样。下面给大家列举一些相应岗位所需具备的技能: 一:嵌入式Linux,C语言开发工程师,Linux软件开发工程
    发表于 02-26 10:17

    嵌入式软件开发应该掌握哪些知识?

    知识点学习 熟悉 Linux 的基本使用对于嵌入式软件开发至关重要。包括文件系统的管理、用户权限的控制、软件包管理等。嵌入式开发人员需要能够
    发表于 02-19 11:23

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发
    的头像 发表于 01-22 15:27 565次阅读

    嵌入式硬件和软件哪个好?

    这类技术都是看经验的,经验越高,那他的身价也相应变高。据统计,65%的电子产品开发企业中,嵌入式软件开发工程师团队,往往只占全公司人数的5%,但是却创造了全公司超过70%的效益。 嵌入式
    发表于 12-05 15:17

    嵌入式软件开发流程

    电子发烧友网站提供《嵌入式软件开发流程.ppt》资料免费下载
    发表于 11-17 14:37 1次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>流程

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

    分享一些嵌入式软件开发常用工具。 1、Keil MDK:这是德国Keil公司开发的基于8051、9051、ARM7、ARM9系列微控制器的嵌入式
    发表于 11-10 11:03

    什么是嵌入式Linux

    之有运行程序的能力与作用。在很多智能家电开发,智能产品的研究上有着主导的作用。(对个人、团队开发产品有兴趣的朋友一定要看看嵌入式!) linux
    发表于 10-11 13:47

    嵌入式Linux开发教程

    嵌入式Linux开发教程(下册)
    发表于 09-27 07:11

    Microchip University免费课程9《用于简化嵌入式软件开发的 MPLAB® 代码配置器(MCC)》

    今天推荐Microchip University课程9 《 用于简化嵌入式软件开发的 MPLAB 代码配置器(MCC) 》 。 内容简介 在本课程中,您将学习使用MCC导航和管理项目设置,设置和配置
    的头像 发表于 09-25 15:25 646次阅读

    嵌入式Linux应用开发的完全手册

    论坛疯狂发帖求教,现在回头一看不免感叹:怎么会提出这么弱智的问题?但是,当时就是被这类问题折磨得寝食难安。 相对于嵌入式Linux常识的匮乏,更大的困难是缺乏完善的知识结构:只了解硬件,或是只了解软件
    发表于 09-25 07:12

    基于树莓派的嵌入式Linux开发教学

    树莓派对于全球嵌入式 Linux 开发及教育已经并将继续带来广泛的影响,及早将之引入我国主流的嵌入式开发与教学环境中或将是有益的。尽管传统的 “ARM
    发表于 09-21 07:09

    嵌入式软件好还是硬件好?

    越高,那他的身价也相应变高。据统计,65%的电子产品开发企业中,嵌入式软件开发工程师团队,往往只占全公司人数的5%,但是却创造了全公司超过70%的效益。 嵌入式
    发表于 09-18 15:31

    Vitis统一软件平台文档:嵌入式软件开发

    电子发烧友网站提供《Vitis统一软件平台文档:嵌入式软件开发.pdf》资料免费下载
    发表于 09-15 10:11 0次下载
    Vitis统一<b class='flag-5'>软件</b>平台文档:<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>

    107使用ADS v1.2进行嵌入式软件开发

    当开始为嵌入式应用程序开发软件时,ADS的用户可能不知道他们的目标硬件的技术规格。目标外围设备、内存映射甚至处理器本身的细节可能是未知或未确定的。 为了在知道或考虑此类细节之前进行软件开发,ADS
    发表于 08-30 06:27