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

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

3天内不再提示

常见的嵌入式程序加载方式介绍

电子设计 来源:电子设计 作者:电子设计 2021-01-20 16:48 次阅读

1、大型的嵌入式系统ARM + Linux架构为例)

类似于电脑程序,手机APP的加载方式,稍微大型的嵌入式系统(Linux),应用程序经过编译、连接之后,形成一个类似于exe、apk的可执行文件,将这个执行文件放置到文件系统中的固定路径下。以Linux为例,常用文件系统ext3、ext4等等,文件系统根目录下有许多文件夹(可理解为C盘,D盘),如bin、root、usr、opt等。

进入存放被执行文件的路径,使用./XXX命令,执行该XXX程序。如果需要开机就执行、该程序,则需要将该可执行文件启动,加载到开机启动项内。

TIPS:如使用execve命令执行该程序,通过ext4文件的fsopen函数找到XXX这个文件,然后解释其ELF格式,在创建好页表后,将code段和data段搬到内存,初始化bss段,最后跳到entry所在的地方。

2、小型的嵌入式程序(51为例)

应用程序在编译、链接之后,会通过二进制工具分析可执行文件的格式,抽出code和data段数据,生成.HEX格式或者.BIN格式,下载到SOC内置的flash中。在上电之后就直接执行了。

3、还有一种这样的嵌入式系统架构,SOC的计算能力比较弱,但内存资源在百K级别,其能支持简单的操作系统,例如UCOS,而其一般没有外挂SDRAM,但其会将代码存放在外置的存储设备中,如nand和card,MP3、U盘就是这种嵌入式系统架构的最典型应用。MP3一般支持音乐、图片、电子书等等应用,代码量比较大,不适宜放到内置flash中,所以放到外置存储中。其成本敏感,内存要控制到最小,所以很多时候要对固件进行优化。那么它的应用程序的加载过程如何呢?

1)应用程序编译、链接之后生成可执行文件,可执行文件格式一般比较复杂。通过二进制工具将code、data和entry、bss等信息重新组成一个简单的文件,这样操作系统在加载这个文件的时候由于格式简单,可以用较少的内存和较少的计算就可以完成。这个简单的文件会和OS一块放到系统区,即不是放到一般文件系统所管理的用户数据区。当然,在系统区也有文件系统管理,但这个文件系统往往是自定义的最简单的文件系统(自己设计一个简单文件系统),而不是ext4,fat这些文件系统。

2)当需要运行某个应用时,通过系统区的简单文件系统找到这个文件,并进行简单的解释,将code和data搬到内存中,初始化bss后即跳到entry执行。

来源:电子创新网

审核编辑黄昊宇

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

    关注

    5056

    文章

    18949

    浏览量

    301392
收藏 人收藏

    评论

    相关推荐

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备的“大脑”,主要功能是根据需要管理和控制设备
    的头像 发表于 09-30 10:05 282次阅读

    嵌入式开发常见问题排查

    归结为相对简单的小问题。接下来,我们将讨论一些嵌入式开发中常见的问题及其解决方法。一、问题复现要有效解决问题,首先需要能够稳定地复现它。一般来说,容易复现的问题也相对
    的头像 发表于 09-22 08:04 206次阅读
    <b class='flag-5'>嵌入式</b>开发<b class='flag-5'>常见</b>问题排查

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始嵌入式
    的头像 发表于 09-02 09:11 320次阅读

    嵌入式五种常见模拟电路

    嵌入式系统设计中,模拟电路是不可或缺的一部分。它们负责处理真实世界中的信号,如声音、温度、压力等,并将这些信号转换成数字信号,或者对这些信号进行放大、滤波等处理。以下是五种常见的模拟电路及其
    发表于 08-28 15:31

    嵌入式QT常见开发方式有哪些?

    嵌入式QT常见开发方式有哪些? 嵌入式工程师在学习和使用Qt进行开发时,常见的几种开发方式包括
    发表于 08-12 10:05

    嵌入式系统怎么学?

    、C++或者Python。这些语言在嵌入式系统开发中都被广泛应用。 3、微处理器/微控制器架构:学习常见的微处理器和微控制器架构,如ARM、AVR、PIC等,了解其特性和应用场景。 4、嵌入式系统开发
    发表于 07-02 10:10

    USB嵌入式主机堆栈

    在USB标准下,USB设备之间不能直接通信。它们只能与控制一个或多个设备通信的总线的 USB 主机通信。常见的 USB 主机是 PC。本应用笔记讨论了 USB 嵌入式主机,它可以使嵌入式应用
    发表于 05-03 09:13 160次阅读
    USB<b class='flag-5'>嵌入式</b>主机堆栈

    再谈嵌入式实时操作系统

    由于嵌入式处理器早期功能单一且运算能力不高,嵌入式应用已不能满足各个领域不断增长的需求。嵌入式操作系统应运而生,嵌入式操作系统可以支持新时代复杂、多任务环境和功能的
    的头像 发表于 04-09 17:27 692次阅读
    再谈<b class='flag-5'>嵌入式</b>实时操作系统

    维谛嵌入式开关电源常见告警处理方法

    维谛嵌入式开关电源常见告警处理方法
    的头像 发表于 04-09 17:15 1079次阅读
    维谛<b class='flag-5'>嵌入式</b>开关电源<b class='flag-5'>常见</b>告警处理方法

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发。
    的头像 发表于 01-22 14:22 887次阅读

    嵌入式音频应用开发介绍

    音频是声音的一种数字化表示方式,它的应用领域非常多,很多领域的应用技术已经很成熟,比如常见的:通信、娱乐、医疗(超声)、人机交互等等。就我目前接触到的消费类嵌入式设备而言,
    的头像 发表于 12-27 09:32 1004次阅读
    <b class='flag-5'>嵌入式</b>音频应用开发<b class='flag-5'>介绍</b>

    用C语言构建高效的嵌入式程序

    嵌入式工程师在编写C语言程序时,需要注重效率和清晰的思路。本文将通过解析经典问题“猴子选大王”来展示如何用C语言思维方式构建高效、清晰的程序
    的头像 发表于 12-21 09:27 575次阅读

    什么是嵌入式系统?嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 2308次阅读

    定制嵌入式主板:满足客户的实际需求

    随着物联网、智能家居、智能工厂等应用的不断发展,嵌入式系统的应用场景也越来越广泛。嵌入式系统的核心部分是嵌入式主板,而定制化的嵌入式主板已经成为了很多企业和项目的首选。本文将从以下几个
    的头像 发表于 11-24 11:51 819次阅读
    定制<b class='flag-5'>嵌入式</b>主板:满足客户的实际需求

    嵌入式程序员应知道的几个基本问题

    电子发烧友网站提供《嵌入式程序员应知道的几个基本问题.pdf》资料免费下载
    发表于 11-20 11:21 0次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>程序</b>员应知道的几个基本问题