嵌入式linux的软件开发环境分析

上传人:F****n 文档编号:96403255 上传时间:2019-08-26 格式:PPT 页数:75 大小:901.50KB
返回 下载 相关 举报
嵌入式linux的软件开发环境分析_第1页
第1页 / 共75页
嵌入式linux的软件开发环境分析_第2页
第2页 / 共75页
嵌入式linux的软件开发环境分析_第3页
第3页 / 共75页
嵌入式linux的软件开发环境分析_第4页
第4页 / 共75页
嵌入式linux的软件开发环境分析_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《嵌入式linux的软件开发环境分析》由会员分享,可在线阅读,更多相关《嵌入式linux的软件开发环境分析(75页珍藏版)》请在金锄头文库上搜索。

1、嵌入式Linux 的软件开发环境,编译原理 Linux 环境下的GCC 及ARM交叉编译器的概念和使用 调试技术 内核编译、裁减以及Linux 的移植,什么是编译程序,从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序.,功能,术语 编译程序的源语言(源程序) 编译程序的目标语言(目标程序) 编译程序的实现语言,高级语言 书写的程序,编译程序,低级语言程序,什么是编译程序,分类 软件 系统软件 语言处理系统,分类,软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发

2、挥作用。他和具体的应用领域无关,如编译系统和操作系统等。,语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。,预处理器,编译器,汇编器,装配连接编辑,骨架程序,源程序,目标汇编程序,可重定位机器代码,绝对机器码,可重定位目标文件库,语言处理过程,语言转(变)换系统,C+编译器,C+,C,Java,Bytecode,Java编译器,术语,编译程序(compiler) 编译程序的源语言(源程序) (source language)(source program) 编译程序的目

3、标语言(目标程序) (object or target language)(object or target program) 编译程序的实现语言(implementation language) 语言处理程序(language processor) 语言转(变)换(language transformation),编译过程和编译程序的结构,编译逻辑过程 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成,词法分析,从左至右读字符流的源程序、识别(拼)单词 例: position := initial + rate * 60;,词法分析,position := initial

4、+ rate * 60; 单词类型 单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 60 分号 ;,又如一个C源程序片断: int a; a = a + 2; 词法分析后可能返回: 单词类型 单词值 保留字 int 标识符(变量名) a 界符 ; 标识符(变量名) a 算符(赋值) = 标识符(变量名) a 算符(加) + 整数 2 界符 ;,语法分析,功能:层次分析.依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树). position := initia

5、l + rate * 60 ; 规则 :=“:=” :=“+” :=“*” :=“(”“)” := := :=,赋值语句,标识符,表达式,表达式,+,表达式,表达式,标识符,整数,标识符,:=,表达式,*,id1:=id2+id3*N,语义分析,语义审查(静态语义) 上下文相关性 类型匹配 类型转换 例: Program p(); Var rate:real; procedure initial; position := initial + rate * 60 /* error */ /* error */ /* warning */; ,又如: int arr 2,abc; abc = ar

6、r * 10; Program p(); Var rate:real; Var initial :real; Var position :real ; position := initial + rate * 60,语义分析(semantic analysis),中间代码生成(intermediate code generation),源程序的内部(中间)表示 三元式、四元式、P-Code、C-Code、 U-Code、bytecode ( * id3 t1 t2 ) t2 = id3 * t1 t2 := id3 * t1,中间代码生成,id1:= id2 + id3 * 60 (1) (i

7、nttoreal, 60 - t1 ) (2) (* , id3 t1 t2 ) (3) (+ , id2 t2 t3 ) (4) (:= , t3 - id1 ),代码优化,id1:= id2 + id3 * 60 (1) (inttoreal 60 - t1 ) (2) ( * id3 t1 t2 ) (3) ( + id2 t2 t3 ) (4) ( := t3 - id1 ) 变换 (1) ( * id3 60.0 t1 ) ( 2)( + id2 t1 id1 ),代码优化(code optimization),t1 = b* c t1 = b* c t2 = t1+ 0 t2 =

8、t1 + t1 t3 = b* c a = t2 t4 = t2 + t3 a = t4,目标代码生成,(* , id3 60.0 t1 ) (+ , id2 t1 id1 ),movf id3,R2 mulf #60.0,R2 movf id2,R1 addf R2,R1 movf R1,id1,符号表管理(symbol table),记录源程序中使用的名字 收集每个名字的各种属性信息 类型、作用域、分配存储信息,Const1 常量 值:35 Var1 变量 类型:实 层次:2,出错处理(error handling),检查错误、报告出错信息、排错、恢复编译工作,编译程序结构(compone

9、nts),词法分析程序 语法分析程序 语义分析程序 中间代码生成程序 代码优化程序 目标代码生成程序 符号表管理程序 出错处理程序,出 错 处 理,表 格 管 理,编译阶段的组合,分析,综合(synthesis) 源程序的分析 线性分析 层次分析 语义分析 目标程序的综合 编译的前端(front end) 编译的后端(back end) 遍(趟)从头到尾扫描源程序(各种形式)一遍(pass),高级语言解释系统(interpreter),功能 让计算机执行高级语言(basic,Matlab,prolog) 与编译程序的不同 1)不生成目标代码 2)能支持交互环境 (同增量式编译系统) 源 程 序

10、 初始数据,解释系统,直接对源程序中的语句进行分析,执行其隐含的操作。 如: b := 2 ; a := b+2 ; 编译程序 write a ; 解释程序直接将4的值输出(显示),编译阶段和运行阶段存储结构,名字表,目标代码缓冲区,编译用源程序中 间表示各种表格,目标代码区,数据区,源程序缓冲区,编译技术的发展和应用,功能:程序 集成环境 实现方式 手工 机器语言 汇编 系统程序设计语言 自动构造工具lex yacc gcc,编译程序的发展,语言范型(paradigms) 命令式(imperative language) 应用式(applicative) 基于规则的(rule-based)

11、面向对象的(object-oriented) 编译程序执行环境 批处理 交互环境 嵌入系统环境,研究领域,并行编译技术 交叉编译技术 硬件描述语言及其编译技术,并行化编译技术,目的:提高并行计算机体系结构的性能。 超大规模计算的日益增长的需求 高性能计算机 并行软件,并行体系结构,单机速度,并行体系结构,途 径 1,途 径 2,并行体系结构 编译技术支持 串行程序并行化 编译技术支持 并行程序设计语言编译 依赖于目标机的优化(低层),由于目标机指令系统与宿主机的指令系统不同,编译时将应用程序的源程序在宿主机上生成目标机代码,称为交叉编译。,O,A,B,交叉编译器,硬件描述语言及其编译技术,电路

12、设计依据 验证结果 如:VHDL,嵌入式开发工具基本概念,嵌入式系统和系统软件级的开发所需的计算机知识较多,而首当其冲的是嵌入式开发工具的学习,首先我们需要清楚的是为什么我们需要嵌入式开发工具: 在嵌入式系统开发中目标机与宿主机是分离的,它们之间往往具有不同的组织结构,例如:我们在研究过程中宿主机一般均为,而目标机为不同的开发板,这些开发板和具有不同的体系结构,而我们为了使在上运行的程序在目标机上能够运行就需要将源程序编译成相应的目标代码,而这就是我们需要嵌入式开发工具的主要原因,嵌入式开发工具简介(一),在众多嵌入式开发工具中GNU Tools(基于Open Source的软件)是Linux

13、环境下最重要的开发工具集,为了有效的开发嵌入式系统,至少需要了解和掌握如下几类工具: (1)编译开发工具:即能够把一个源程序编译生成一个可执行的软件,如gcc等。 (2)调试工具:即能够对执行程序进行源码或汇编级调试的软件,如gdb。 (3)软件工程工具:用于协助多人开发或大型软件项目的管理的软件,如make,cvs。,嵌入式开发工具简介(二),在GNU Tools中最基本的一些工具就包括: ld(链接器), as(汇编器), gcc(C语言编译器), glibc(包含各种基本函数实现的软件库) 上述大部分软件均可以在ftp:/ftp.gnu.org/gnu/上下载。,嵌入式开发工具简介(三)

14、,binutils是一组二进制工具程序集,它主要包括链接器,汇编器和其它用于处理目标文件和档案的工具。 其中链接器为ld,它的主要作用是把各种目标文件(O文件和)和库文件链接在一起,并根据定位数据和函数的地址,最终生成执行程序。 汇编器主要是AS: 是GNU编译器的汇编器(Assembler),负责把.S或.s为后缀的汇编文件编译成. 以.o为后缀的目标文件 处理目标文件和档案的主要工具是ar,它用于建立,修改和提取归档文件。一个归档文件是包含多个被包含文件的单个文件程序员可以从归档文件中检索并得到原始的被包含文件的内容,模式,时间戳,所有者和组等属性,嵌入式开发工具简介(四),glibc是G

15、NU的C语言标准程序库,C语言将部分函数留给操作系统来实现,当我们的程序需要调用 时,就要通过操作系统提供的C程序库来取得这些服务。 程序库与应用程序的链接方式可分为静态与动态链接两种方式,当应用程序需要一个动态链接库时就需要我们自己安装一个动态库在Linux操作系统中。,嵌入式开发工具简介(五),Gcc编译工具:gcc是一个强大的工具集合,它主要为GNU提供C编译器,现在Gcc也开始支持多种工具语言,如JAVA,FORTRAN等。如果能较好的掌握它,我们就能够通过它提供的足够多的参数来全面控制代码的生成。,GNU Tools的安装(一),在安装GNU Tools之前你需要注意的有两个问题: (一)需要了解宿主机和目标机的体系结构。这是因为不同的体系结构所需的开发工具的版本是不同的。 (二)不同开发工具之间版本的控制。,GNU Tools的安装(二),此图列出了到目前为止成功的版本配置,GNU Tools的安装(三),对于每个单独的工具软件包,它的配置/编译/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号