




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统的定义及特点 定义 嵌入式系统是以应用为中心 以计算机技术为基础 软 硬件可裁剪 适应于 应用系统对功能 可靠性 成本 体积 功耗等方面有特殊要求的专用计算机系统 特点 1 嵌入式系统是面向特定应用的 嵌入式系统中的CPU是专门为特定应用设 计的 具有低功耗 体积小 集成度高等特点 能够把通用CPU中许多由板卡完成的 任务集成在芯片内部 从而有利于整个系统设计趋于小型化 2 嵌入式系统涉及先进的计算机技术 半导体技术 电子技术 通信和软件等各个 行业 是一个技术密集 资金密集 高度分散 不断创新的知识集成系统 3 嵌入式系统的硬件和软件都必须具备高度可定制性 4 嵌入式系统的生命周期相当长 嵌入式系统和具体应用有机地结合在一起 其升 级换代也是和具体产品同步进行的 5 嵌入式系统本身并不具备在其上进行进一步开发的能力 在设计完成以后 用户 如果需要修改其中的程序功能 必须借助于一套专门的开发工具和环境 6 为了提高执行速度和系统可靠性 嵌入式系统中的软件一般都固化在存储器芯 片或单片机中 而不是存贮于磁盘等载体中 3 与通用计算机相比 嵌入式系统有哪些特点 答 与通用计算机相比 嵌入式系统有以下特点 1 嵌入式系统通常是面向特定应用的 2 嵌入式系统的硬件和软件必须高效率地设计 做到量体裁衣 去除冗余 3 有实时操作系统的支持 4 嵌入式系统具有较长的生命周期 5 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中 而不是存储在 磁盘等载体中 6 具有专门的开发工具支持 操作系统在嵌入式系统中所起的作用 EOS负责嵌入系统的全部软 硬件资源的分配 调度作 控制 协调并发活动 它必 须体现其所在系统的特征 能够通过装卸某些模块来达到系统所要求的功能 嵌入 式操作系统在系统实时高效性 硬件的相关依赖性 软件固化以及应用的专用性等 方面具有较为突出的特点 嵌入式系统是以应用为中心 整合了计算机软件 硬件技术 通信技术和微电子技术 嵌入式 系统主要由嵌入式微处理器 外围硬件设备 嵌入式操作系统以及应用程序等四个部分组成 嵌入式操作系统是嵌入式系统应用的核心 嵌入式操作系统 大大地提高了嵌入式系统硬件工作效率 并为应用软件开发提供了极大的便 利 嵌入式操作系统 嵌入式linux学习 的功能 嵌入式操作系统除具备了一般操作系统 嵌入式linux系统 最基本的功能 如任务调度 同 步机制 中断处理 文件处理等外 还有以下两个方面的功能 1 构成一个易于编程的虚拟机平台 嵌入式操作系统构成一个虚拟机平台 EOS把底层的硬件细节封装起来 为运行在它上面的软 件 如中间件软件和各种应用软件提供了一个抽象的编程接口 软件开发在这个编程接口的上 进行 而不直接与机器硬件层打交道 EOS所提供的编程接口实际上就是操作系统对外提供的 系统调用函数 2 系统资源的管理者 嵌入式操作系统是一个系统资源的管理者 负责管理系统当中的各种软硬件资源 如处理器 内存 各种I O设备 文件和数据等 使得整个系统能够高效 可靠地运转 操作系统的作用主要体现在两方面 1 屏蔽硬件物理特性和操作细节 为用户使用计算机提供了便利 指令系统 成千上万条机器指令 它们的执行由微程序的指令解释系统实现 的 计算机问世初期 计算机工作者就是在裸机上通过手工操作方式进行工作 计算机硬件体系结 构越来越复杂 2 有效管理系统资源 提高系统资源使用效率 如何有效地管理 合理地分配系统资源 提高系统资源的使用效率是操作系统 必须发挥的主要作用 资源利用率 系统吞吐量是两个重要的指标 LinuxLinux与嵌入式使用的与嵌入式使用的uclinuxuclinux操作系统的关系操作系统的关系 Linux是一种很受是一种很受欢欢迎的操作系迎的操作系统统 它与 它与UNIX系系统统兼容 开放源代兼容 开放源代码码 它原本被 它原本被设设 计为计为桌面系桌面系统统 现现在广泛在广泛应应用于服用于服务务器器领领域 而更大的影响在于它正逐域 而更大的影响在于它正逐渐渐的的应应用于用于 嵌入式嵌入式设备设备 uClinux正是在正是在这这种氛种氛围围下下产产生的 在生的 在uClinux这这个英文个英文单词单词中中u表示表示Mi cro 小的意思 小的意思 C表示表示Control 控制的意思 所以 控制的意思 所以uClinux就是就是Micro Control Linux 字面上的理解就是 字面上的理解就是 针对针对微控制微控制领领域而域而设计设计的的Linux系系统统 uClinux是针对控制领域的嵌入式linux操作系统 它从Linux 2 0 2 4内核派生而来 沿袭了主流Linux的绝大部分特性 适合不具备内存管理单元 MMU的 微处理器 微控制器 没有MMU支持是uClinux与主流Linux的基本差异 标准Linux是针对有MMU的处理器设计的 在这种处理器上 虚拟地址被送到MMU 把虚拟 地址映射为物理地址 通过赋予每个任务不同的虚拟 物理地址转换映射 支持不同任务之间 的保护 对uCLinux 来说 其设计针对没有MMU的处理器 不能使用处理器的虚拟内存管理技术 uCLinux仍然 采用存储器的分页管理 系统在启动时把实际存储器进行分页 在加载应用程序时程序分页加 载 但是由于没有MMU管理 所以实际上uCLinux采用实存储器管理策略 uCLinux系统对 于内存的访问是直接的 所有程序中访问的地址都是实际的物理地址 操作系统对内存空间没 有保护 各个进程实际上共享一个运行空间 一个进程在执行前 系统必须为进程分配足够的 连续地址空间 然后全部载入主存储器的连续空间中 什么是内核 内核是操作系统最基本的部分 它是为众多应用程序提供对计算机硬件的安全访问的一部分软 件 这种访问是有限的 并且内核决定一个程序在什么时候对某部分硬件操作多长时间 内核 是一个操作系统的核心 是基于硬件的第一层软件扩充 提供操作系统的最基本的功能 是 操作系统工作的基础 它负责管理系统的进程 内存 设备驱动程序 文件和网络系统 决定 着系统的性能和稳定性 什么是Bootlonder 答案一搜狗百科 启动程序 英语 boot loader 也称启动加载器 引导程序 位于电脑或 其他计算机应用上 是指引导操作系统启动的程序 引导程序启动方式及程序视应用机型种类 而不同 BIOS开机完成后 bootloader就接手初始化硬件设备 创建存储器空间的映射 以 便为操作系统内核准备好正确的软硬件环境 BootLoader是依赖于硬件而实现的 特别是在 嵌入式领域 为嵌入式系统建立一个通用的BootLoader是很困难的 答案二百度百科 Boot Loader 是在操作系统内核运行之前运行的一段小程序 通过这段小程序 我们可以初始化硬件设备 建立内存空间的映射图 从而将系统的软硬件环境带到一个合适的状态 以便为最终调用操作 系统内核准备好正确的环境 通常 Boot Loader 是严重地依赖于硬件而实现的 特别是在嵌入式世界 因此 在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的 尽管如此 我们仍然可以对 Boot Loader 归纳出一些通用的概念来 以指导用户特定的 Boot Loader 设计与实现 使用带uclinux操作系统的嵌入式系统应该注意什么问题 3 uClinux的内存管理 uClinux同标准Linux的最大区别就在于内存管理 标准Linux是针对有MMU的处理器设计的 在这种处理器上 虚拟地址被送到MMU MMU把虚拟地址映射为物理地址 通过赋予每 个任务不同的虚拟 物理地址转换映射 支持不同任务之间的保护 对于uCLinux来说 其设计针对没有MMU的 处理器 不能使用处理器的虚拟内存管理技术 uClinux不能使用处理器的虚拟内存管理技术 应该说这种不带有MMU的处理器在嵌入式设 备中相当普遍 uClinux仍采用存储器的分页管理 系统在启动时把实际存储器进行分页 在加载应用程序时 程序分页加载 但是由于没有MMU管理 所以实际上uClinux采用实存储器管理策略 real memeory management 这一点影响了系统工作的很多方面 uClinux系统对于内存的访问是直接的 它对地址的访问不需要经过MMU 而是直接送到 地址线上输出 所有程序中访问的地址都是实际的物理地址 操作系统对内存空间没有保护 这实际上是很多嵌入式系统的特点 各个进程实际上共享一个运行空间 没有独立的地址 转换表 一个进程在执行前 系统必须为进程分配足够的连续地址空间 然后全部载入主存储器的连续 空间中 与之相对应的是标准Linux系统在分配内存时没有必要保证实际物理存储空间是连续 的 而只要保证虚存地址空间连续就可以了 此外磁盘交换空间也是无法使用的 系统执行时 如果缺少内存将无法通过磁盘交换来得到改善 uClinux对内存的管理减少同时就给开发人员提出了更高的要求 如果从易用性这一点来说 uClinux的内存管理是一种倒退 退回了到了UNIX早期或是Dos系统时代 开发人员不得不参 与系统的内存管理 从编译内核开始 开发人员必须告诉系统这块开发板到底拥有多少的内存 假如你欺骗了系统 那将在后面运行程序时受到惩罚 从而系统将在启动的初始化阶段对 内存进行分页 并且标记已使用的和未使用的内存 系统将在运行应用时使用这些分页内存 由于应用程序加载时必须分配连续的地址空间 而针对不同硬件平台的可一次成块 连续地址 分配内存大小限制是不同 目前针对EZ328处理器的uClinux是128k 而针对Coldfire处理 器的系统内存则无此限制 所以开发人员在开发应用程序时必须考虑内存的分配情况并关注 应用程序需要运行空间的大小 另外由于采用实存储器管理策略 用户程序同内核以及其它用 户程序在一个地址空间 程序开发时要保证不侵犯其它程序的地址空间 以使得程序不至于破 坏系统的正常工作 或导致其它程序的运行异常 从内存的访问角度来看 开发人员的权利增大了 开发人员在编程时可以访问任意的地址空间 但与此同时系统的安全性也大为下降 此外 系统对多进程的管理将有很大的变化 这一 点将在uClinux的多进程管理中说明 4 uClinux的多进程处理 uClinux没有MMU管理存储器 在实现多个进程时 fork调用生成子进程 需要实现数据保 护 由于uClinux的多进程管理是通过vfork来实现 因此fork等于vfork 这意味着uClinux系 统fork调用完成后 要么子进程代替父进程执行 此时父进程已经sleep 直到子进程调用exit 退出 要么调用exec执行一个新的进程 这个时候将产生可执行文件的加载 即使这个进程 只是父进程的拷贝 这个过程也不能避免 当子进程执行exit或exec后 子进程使用wakeup 把父进程唤醒 使父进程继续往下执行 uClinux的这种多进程实现机制同它的内存管理紧密相关 uClinux针对没有mmu处理器开发 所以被迫使用一种flat方式的内存管理模式 启动新的应用程序时系统必须为应用程序分配 存储空间 并立即把应用程序加载到内存 缺少了MMU的内存重映射机制 uClinux必须在 可执行文件加载阶段对可执行文件reloc处理 使得程序执行时能够直接使用物理内存 5 uCLinux针对实时性的解决方案 uClinux本身并没有关注实时问题 它并不是为了Linux的实时性而提出的 另外有一种Linux RT Linux关注实时问题 RT Linux执行管理器把普通Linux的内核当成一个任务运行 同时还管理了实时进程 而非实时进 程则交给普通Linux内核处理 这种方法已经应用于很多的操作系统用于增强操作系统的实时 性 包括一些商用版UNIX系统 Windows NT等等 这种方法优点之一是实现简单 且实时性能容易检验 优点之二是由于非实时进程 运行于标准Linux系统 同其它Linux商用版本之间保持了很大的兼容性 优点之三是可以支持 硬实时时钟的应用 uClinux可以使用RT Linux的patch 从而增强uClinux的实时性 使得uClinux可以应用于工业控制 进程控制等 一些实时要求较高的应用 6 uClinux的开发环境 1 GNU开发套件 GNU开发套件作为通用的Linux开放套件 包括一系列的开发调试工具 主要组件 Gcc 编译器 可以做成交叉编译的形式 即在宿主机上开发编译目标上可运行的二进制文件 Binutils 一些辅助工具 包括objdump 可以反编译二进制文件 as 汇编编译器 ld 连接器 等等 Gdb 调试器 可使用多种交叉调试方式 gdb bdm 背景调试工具 gdbserver 使用以太网络调试 2 Clinux的打印终端 通常情况下 uClinux的默认终端是串口 内核在启动时所有的信息都打印到串口终端 使用 printk函数打印 同时也可以通过串口终端与系统交互 uClinux在启动时启动了telnetd 远程登录服务 操作者可以远程登录上系统 从而控制系 统的运行 至于是否允许远程登录可以通过烧写romfs文件系统时由用户决定是否启动远程登 录服务 3 交叉编译调试工具 支持一种新的处理器 必须具备一些编译 汇编工具 使用这些工具可以形成可运行于这种处 理器的二进制文件 对于内核使用的编译工具同应用程序使用的有所不同 在解释不同点之前 需要对gcc连接做一些说明 ld link description 文件 ld文件是指出连接时内存映象格式的文件 crt0 S 应用程序编译连接时需要的启动文件 主要是初始化应用程序栈 pic position independence code 与位置无关的二进制格式文件 在程序段中必须包括reloc段 从而使的代码加载时可以进 行重新定位 内核编译连接时 使用ucsimm ld文件 形成可执行文件映象 所形成的代码段既可以使用间 接寻址方式 即使用reloc段进行寻址 也可以使用绝对寻址方式 这样可以给编译器更多 的优化空间 因为内核可能使用绝对寻址 所以内核加载到的内存地址空间必须与ld文件中给 定的内存空间完全相同 应用程序的连接与内核连接方式不同 应用程序由内核加载 可执行文件加载器将在后面讨论 由于应用程序的ld文件给出的内存空间与应用程序实际被加载的内存位置可能不同 这样 在应用程序加载的过程中需要一个重新地位的过程 即对reloc段进行修正 使得程序进行间 接寻址时不至于出错 这个问题在i386等高级处理器上方法有所不同 由上述讨论 至少需要两套编译连接工具 1 二进制工具 Binutils GNU binutils包包括了汇编工具 链接器和基本的目标文件处理工具 对binutils包的设置定义了所 需的目标文件的格式和字节顺序 Binutils包种的工具都使用了二进制文件描述符 BFD 库 来交换数据 通过设置文件config bfd 可以指定默认的二进制文件格式 例如elf little endian 和任何工具可用的格式 见例1 例1 在config bfd中添加的用来指定目标二进制格式的代码 arm uClinux armel uClinux tag defvec bfd elf32 littlearm vec targ selvecs bfd elf32 bigarm vec armcoff little vec armcoff big vec 2 C编译器 GNU编译器集GCC是通过使用一种叫做 寄存器转换语言 RTL 的方式实现的 假定现在 有一种基本的机器描述性文件 它已经能满足大家的需要 现在要做的仅仅是设置默认情况下 使用的参数和如何将文件组合成可执行文件的方式 GNU的文档提供了所有必需的资料 使 得用户可以为新型的处理器的指令集合提供支持 如果要针对体系的机器建立一个新的目标机 器 那么就必须指定默认编译参数和定制系统的特定参数 见例2 对于特定的目标系统 可 以使用TARGET DEFAULT宏来在target h文件中定义编译器的开关 目标t makefile段指定了应该构建哪一个额外的例程和其编译的方式 例2 使用uClinux arm h来指定默认的编译参数 undef TARGET DEFAULT define TARGET DEFAULT ARM FLAG APCS 32 ARM FLAG NO GOT 4 可执行文件格式 先对一些名词作一些说明 coff common object file format 一种通用的对象文件格式 elf excutive linked file 一种为Linux系统所采用的通用文件格式 支持动态连接 flat elf格式有很大的文件头 flat文件对文件头和一些段信息做了简化 uClinux系统使用flat可执行文件格式 gcc的编译器不能直接形成这种文件格式 但是可以形 成coff或elf格式的可执行文件 这两种文件需要coff2flt或elf2flt工具进行格式转化 形成flat 文件 当用户执行一个应用时 内核的执行文件加载器将对flat文件进行进一步处理 主要是 对reloc段进行修正 以下对reloc段进一步讨论 需要reloc段的根本原因是 程序在连接时连接器所假定的程序运行空间与实际程序加载到的 内存空间不同 假如有这样一条指令 jsr app start 这一条指令采用直接寻址 跳转到app start地址处执行 连接程序将在编译完成是计算出ap p start的实际地址 设若实际地址为0 x10000 这个实际地址是根据ld文件计算出来 因 为连接器假定该程序将被加载到由ld文件指明的内存空间 但实际上由于内存分配的关系 操作系统在加载时无法保证程序将按ld文件加载 这时如果程序仍然跳转到绝对地址0 x10000 处执行 通常情况这是不正确的 一个解决办法是增加一个存储空间 用于存储app start的 实际地址 设若使用变量addr表示这个存储空间 则以上这句程序将改为 movl addr a0 jsr a0 增加的变量addr将在数据段中占用一个4字节的空间 连接器将app start的绝对地址存储到 该变量 在可执行文件加载时 可执行文件加载器根据程序将要加载的内存空间计算出app st art在内存中的实际位置 写入addr变量 系统在实际处理时不需要知道这个变量的确切存储 位置 也不可能知道 系统只要对整个reloc段进行处理就可以了 reloc段有标识 系统可 以读出来 处理很简单 只需要对reloc段中存储的值统一加上一个偏置 如果加载的空间 比预想的要靠前 实际上是减去一个偏移量 偏置由实际的物理地址起始值同ld文件指定的 地址起始值相减计算出 这种reloc的方式部分是由uClinux的内存分配问 3 uClinux的内存管理 uClinux同标准Linux的最大区别就在于内存管理 标准Linux是针对有MMU的处理器设计的 在这种处理器上 虚拟地址被送到MMU MMU把虚拟地址映射为物理地址 通过赋予每 个任务不同的虚拟 物理地址转换映射 支持不同任务之间的保护 对于uCLinux来说 其设计针对没有MMU的 处理器 不能使用处理器的虚拟内存管理技术 uClinux不能使用处理器的虚拟内存管理技术 应该说这种不带有MMU的处理器在嵌入式设 备中相当普遍 uClinux仍采用存储器的分页管理 系统在启动时把实际存储器进行分页 在加载应用程序时 程序分页加载 但是由于没有MMU管理 所以实际上uClinux采用实存储器管理策略 real memeory management 这一点影响了系统工作的很多方面 uClinux系统对于内存的访问是直接的 它对地址的访问不需要经过MMU 而是直接送到 地址线上输出 所有程序中访问的地址都是实际的物理地址 操作系统对内存空间没有保护 这实际上是很多嵌入式系统的特点 各个进程实际上共享一个运行空间 没有独立的地址 转换表 一个进程在执行前 系统必须为进程分配足够的连续地址空间 然后全部载入主存储器的连续 空间中 与之相对应的是标准Linux系统在分配内存时没有必要保证实际物理存储空间是连续 的 而只要保证虚存地址空间连续就可以了 此外磁盘交换空间也是无法使用的 系统执行时 如果缺少内存将无法通过磁盘交换来得到改善 uClinux对内存的管理减少同时就给开发人员提出了更高的要求 如果从易用性这一点来说 uClinux的内存管理是一种倒退 退回了到了UNIX早期或是Dos系统时代 开发人员不得不参 与系统的内存管理 从编译内核开始 开发人员必须告诉系统这块开发板到底拥有多少的内存 假如你欺骗了系统 那将在后面运行程序时受到惩罚 从而系统将在启动的初始化阶段对 内存进行分页 并且标记已使用的和未使用的内存 系统将在运行应用时使用这些分页内存 由于应用程序加载时必须分配连续的地址空间 而针对不同硬件平台的可一次成块 连续地址 分配内存大小限制是不同 目前针对EZ328处理器的uClinux是128k 而针对Coldfire处理 器的系统内存则无此限制 所以开发人员在开发应用程序时必须考虑内存的分配情况并关注 应用程序需要运行空间的大小 另外由于采用实存储器管理策略 用户程序同内核以及其它用 户程序在一个地址空间 程序开发时要保证不侵犯其它程序的地址空间 以使得程序不至于破 坏系统的正常工作 或导致其它程序的运行异常 从内存的访问角度来看 开发人员的权利增大了 开发人员在编程时可以访问任意的地址空间 但与此同时系统的安全性也大为下降 此外 系统对多进程的管理将有很大的变化 这一 点将在uClinux的多进程管理中说明 4 uClinux的多进程处理 uClinux没有MMU管理存储器 在实现多个进程时 fork调用生成子进程 需要实现数据保 护 由于uClinux的多进程管理是通过vfork来实现 因此fork等于vfork 这意味着uClinux系 统fork调用完成后 要么子进程代替父进程执行 此时父进程已经sleep 直到子进程调用exit 退出 要么调用exec执行一个新的进程 这个时候将产生可执行文件的加载 即使这个进程 只是父进程的拷贝 这个过程也不能避免 当子进程执行exit或exec后 子进程使用wakeup 把父进程唤醒 使父进程继续往下执行 uClinux的这种多进程实现机制同它的内存管理紧密相关 uClinux针对没有mmu处理器开发 所以被迫使用一种flat方式的内存管理模式 启动新的应用程序时系统必须为应用程序分配 存储空间 并立即把应用程序加载到内存 缺少了MMU的内存重映射机制 uClinux必须在 可执行文件加载阶段对可执行文件reloc处理 使得程序执行时能够直接使用物理内存 5 uCLinux针对实时性的解决方案 uClinux本身并没有关注实时问题 它并不是为了Linux的实时性而提出的 另外有一种Linux RT Linux关注实时问题 RT Linux执行管理器把普通Linux的内核当成一个任务运行 同时还管理了实时进程 而非实时进 程则交给普通Linux内核处理 这种方法已经应用于很多的操作系统用于增强操作系统的实时 性 包括一些商用版UNIX系统 Windows NT等等 这种方法优点之一是实现简单 且实时性能容易检验 优点之二是由于非实时进程 运行于标准Linux系统 同其它Linux商用版本之间保持了很大的兼容性 优点之三是可以支持 硬实时时钟的应用 uClinux可以使用RT Linux的patch 从而增强uClinux的实时性 使得uClinux可以应用于工业控制 进程控制等 一些实时要求较高的应用 6 uClinux的开发环境 1 GNU开发套件 GNU开发套件作为通用的Linux开放套件 包括一系列的开发调试工具 主要组件 Gcc 编译器 可以做成交叉编译的形式 即在宿主机上开发编译目标上可运行的二进制文件 Binutils 一些辅助工具 包括objdump 可以反编译二进制文件 as 汇编编译器 ld 连接器 等等 Gdb 调试器 可使用多种交叉调试方式 gdb bdm 背景调试工具 gdbserver 使用以太网络调试 2 Clinux的打印终端 通常情况下 uClinux的默认终端是串口 内核在启动时所有的信息都打印到串口终端 使用 printk函数打印 同时也可以通过串口终端与系统交互 uClinux在启动时启动了telnetd 远程登录服务 操作者可以远程登录上系统 从而控制系 统的运行 至于是否允许远程登录可以通过烧写romfs文件系统时由用户决定是否启动远程登 录服务 3 交叉编译调试工具 支持一种新的处理器 必须具备一些编译 汇编工具 使用这些工具可以形成可运行于这种处 理器的二进制文件 对于内核使用的编译工具同应用程序使用的有所不同 在解释不同点之前 需要对gcc连接做一些说明 ld link description 文件 ld文件是指出连接时内存映象格式的文件 crt0 S 应用程序编译连接时需要的启动文件 主要是初始化应用程序栈 pic position independence code 与位置无关的二进制格式文件 在程序段中必须包括reloc段 从而使的代码加载时可以进 行重新定位 内核编译连接时 使用ucsimm ld文件 形成可执行文件映象 所形成的代码段既可以使用间 接寻址方式 即使用reloc段进行寻址 也可以使用绝对寻址方式 这样可以给编译器更多 的优化空间 因为内核可能使用绝对寻址 所以内核加载到的内存地址空间必须与ld文件中给 定的内存空间完全相同 应用程序的连接与内核连接方式不同 应用程序由内核加载 可执行文件加载器将在后面讨论 由于应用程序的ld文件给出的内存空间与应用程序实际被加载的内存位置可能不同 这样 在应用程序加载的过程中需要一个重新地位的过程 即对reloc段进行修正 使得程序进行间 接寻址时不至于出错 这个问题在i386等高级处理器上方法有所不同 由上述讨论 至少需要两套编译连接工具 1 二进制工具 Binutils GNU binutils包包括了汇编工具 链接器和基本的目标文件处理工具 对binutils包的设置定义了所 需的目标文件的格式和字节顺序 Binutils包种的工具都使用了二进制文件描述符 BFD 库 来交换数据 通过设置文件config bfd 可以指定默认的二进制文件格式 例如elf little endian 和任何工具可用的格式 见例1 例1 在config bfd中添加的用来指定目标二进制格式的代码 arm uClinux armel uClinux tag defvec bfd elf32 littlearm vec targ selvecs bfd elf32 bigarm vec armcoff little vec armcoff big vec 2 C编译器 GNU编译器集GCC是通过使用一种叫做 寄存器转换语言 RTL 的方式实现的 假定现在 有一种基本的机器描述性文件 它已经能满足大家的需要 现在要做的仅仅是设置默认情况下 使用的参数和如何将文件组合成可执行文件的方式 GNU的文档提供了所有必需的资料 使 得用户可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿色食品种植技术推广合作
- 一次难忘的旅行记作文6篇范文
- 生活垃圾分类网点的收集、运输与处理流程设计
- 新时代高校思政课育人功能的创新与实践
- 我眼中的环保英雄形象写人作文12篇
- 教育数字化背景下思政课教材建设的多维分析
- 科技行业产品种类统计表格
- 心灵的成长历程写人作文8篇范文
- 从水经注中看水文地理词汇学习
- 超大城市养老服务高质量发展的需求视角研究
- 国家开放大学本科《纳税筹划》在线形考(形考任务一至五)试题及答案
- 《技术成果投资入股个人所得税递延纳税备案表》
- MOOC 油气田应用化学-西南石油大学 中国大学慕课答案
- 《HSK标准教程4上》第4课自用课件
- 2023年温州中学自主招生理综模拟试题
- GB/T 43731-2024生物样本库中生物样本处理方法的确认和验证通用要求
- (高清版)TDT 1063-2021 国土空间规划城市体检评估规程
- 数据治理培训资料
- 天耀中华合唱简谱大剧院版
- 裂解裂化工艺培训课件
- 建筑装饰装修工程消耗量定额
评论
0/150
提交评论