嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen Spring 2006 中国科学技术大学计算机系.

Slides:



Advertisements
Similar presentations
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Advertisements

实用操作系统概念 张惠娟 副教授 1.
LINUX 环境下程序开发基础 曙光用户培训课程系列 课程时间:1.5小时 更新日期:2008年3月.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Android快速开发入门 巫文杰、Android工程师 讲师的CSDN博客地址
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Linux环境下程序编译 曙光信息产业(北京)有限公司.
Android开发入门 -----Android 开发“Ready go!” 主讲:李晓蕾
Hadoop I/O By ShiChaojie.
张吉豫 GNU编译工具链使用简介 张吉豫
陈香兰 助教:陈博、李春华 嵌入式操作系统 陈香兰 助教:陈博、李春华.
第二讲 搭建Java Web开发环境 主讲人:孙娜
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
第 5 章、連結與載入 作者:陳鍾誠 旗標出版社.
2018/12/3 C++程序链接过程简介 杨森 2018/12/3.
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第一讲: 基本流程(1).
中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2010
第17章 网站发布.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
作业调度系统常用命令.
YMSM D-PACK 安装手册 作成者:D-PACK维护组(YMSLx) 作成日:
VSS使用简介 王树升
产品防伪防窜管理系统 工具下载安装指引 信息管理部.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Gzip编译及调试 曹益华
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
编程作业3:网页正文抽取 (10分).
(第2版).
C语言程序设计 主讲教师:陆幼利.
微机系统的组成.
Web安全基础教程
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
第四章 团队音乐会序幕: 团队协作平台的快速创建
第1章 c++概述 1.1 C++语言的简史及特点 1.2 简单的C++程序 1.3 C++语言的基本组成
Platform Builder使用介绍 WINCE系统应用开发流程说明 ACTION RDC 杨 涛 2005.Dec.3th
姚金宇 MIT SCHEME 使用说明 姚金宇
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
主讲:陈香兰 助教:贾永泉、毛熠璐 (西区电三421) Autumn 2007
第4章 Excel电子表格制作软件 4.4 函数(一).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
FPGA系统设计与实践 本章小结(第5章).
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen Spring 2006 中国科学技术大学计算机系

Embedded Operating Systems 上周三 嵌入式系统基本概念 嵌入式硬件的发展 嵌入式软件及其开发 嵌入式操作系统及系统开发 典型嵌入式操作系统介绍 嵌入式操作系统选型 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 上周四 GNU Tools简介 GCC Binutils Gdb make xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 本课的主要内容: 第一部分:开发工具介绍(续) 第二部分:SkyEye介绍 xlanchen@2006.5.24 Embedded Operating Systems

开发工具介绍(续) xlanchen@2006.5.24

Embedded Operating Systems 主要内容 GNU Tools介绍(续) ld 交叉编译环境的安装 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems GNU Tools—ld ld,The GNU Linker Linux上常用的链接器 ld软件的作用是把各种目标文件(.o文件)和库文件链接在一起,并定位数据和函数地址,最终生成可执行程序 gcc可以间接的调用ld,使用gcc的-Wl参数可以传递参数给ld 使用命令:ld --help可以列出ld常用的一些选项 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems ld使用举例(1) 源程序 编译hello.c到hello.o 命令:gcc -c hello.c xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems ld使用举例(2) 链接(演示) 命令:ld –dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o hello.o –lc –o hello 运行 ./hello xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 目标文件 ld通过BFD库可以读取和操作coff、elf、a.out等各种执行文件格式的目标文件 BFD(Binary File Descriptor) 目标文件(object file) 由多个节(section)组成,常见的节有: text节保存了可执行代码, data节保存了有初值的全局标量, bss节保存了无初值的全局变量。 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 使用objdump查看目标文件的信息(演示) objdump –h hello.o 比较hello xlanchen@2006.5.24 Embedded Operating Systems

链接描述文件( Linker script ) 可以使用链接描述文件控制ld的链接过程。 链接描述文件,command file 又称为链接脚本,Linker script 用来控制ld的链接过程 描述各输入文件的各节如何映射到输出文件的各节 控制输出文件中各个节或者符号的内存布局 使用的语言为: The ld command language,链接命令语言 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems ld命令的-T commandfile选项指定了链接描述文件名 如果不指定链接描述文件,ld就会使用一个默认的描述文件来产生执行文件 找到实际项目中的链接描述文件(演示) xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 链接描述文件的命令 链接描述文件的命令主要包括如下几类: 设置入口点命令 处理文件的命令 处理文件格式的命令 其他 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 常用的命令 设置入口点 格式:ENTRY(symbol) 设置symbol的值为执行程序的入口点。 ld有多种方法设置执行程序的入口点,确定程序入口点的顺序如下: ld命令的-e选项指定的值 Entry(symbol)指定的值 .text节的起始地址 入口点为0 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 常用的命令 INCULDE filename 包含其他filename的链接描述文件 INPUT(file,file,…) 指定多个输入文件名 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 常用的命令 OUTPUT_FORMAT(bfdname) 指定输出文件的格式 OUTPUT_ARCH ( bfdname ) 指定目标机器体系结构,例如: OUTPUT_ARCH(arm) xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 常用的命令 MEMORY: 这个命令在用于嵌入式系统的链接描述文件中经常出现,它描述了各个内存块的起始地址和大小。格式如下: MEMORY { name [(attr)]:ORIGIN = origin,LENGTH = len … } 例如: xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems Memory举例 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems SECTIONS命令 SECTIONS 告诉ld如何把输入文件的各个节映射到输出文件的各个节中。 在一个链接描述文件中只能有一个SECTIONS命令 在SECTIONS命令中可以使用的命令有三种: 定义入口点 赋值 定义输出节 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 定义输出节 SECTIONS { ... secname : { contents } ... } 例如: xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 定位计数器 定位计数器,The Location Counter 一个特殊的ld变量,使用“.”表示 总是在SECTIONS中使用 例如: xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 一个简单例子 下面是一个简单的例子: 例中,输出文件包含text,data,bss三个节,而输入文件也只包含这3个节: SECTIONS { .=0x01000000; .text:{*(.text)}; .=0x08000000; .data:{*(.data)}; .bss:{*(.bss)}; } xlanchen@2006.5.24 Embedded Operating Systems

SECTIONS举例(对应于上面的MEMORY例子) xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 实际项目中的链接描述文件 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems GNU tools 交叉开发环境的安装 交叉开发环境 源代码配置安装,or 直接安装二进制工具 第一种方法比较复杂,如果有现成的二进制交叉环境,建议直接使用 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 使用源代码安装交叉开发环境 GNU tools的各个软件包相对独立, 在选择时要注意各个软件包的版本号及其依赖关系 如果全部是最新版本,也并不能保证可以配置并安装成功 在安装GNU tools交叉开发环境之前,首先必须建立本地GNU tools环境 xlanchen@2006.5.24 Embedded Operating Systems

一个可行的GNU tools与 Linux内核之间关系表 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 交叉开发环境的安装顺序 需要5个步骤完成整个GNU Tools的配置/编译/安装: 内核头文件配置 binutils软件包安装 Bootstrap GNU编译器(可完成基本C语言编译工作的编译器) C library的安装,一般是glibc 完整的GNU编译器安装 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 软件包安装步骤 对每个单独的软件包,一般安装过程包括下面4步 下载并解压软件包 配置软件包 编译软件包 安装软件包 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 安装现成的二进制交叉环境 下载arm-elf-tools的最新版本或合适的版本 如:arm-elf-tools-20030314.sh 安装 在root权限下运行 sh ./arm-elf-tools-20030314.sh 这个命令会在开发主机上自动建立一个uClinux-ARM的交叉编译环境 xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 安装成功? 检查一下(演示) 对 arm-elf运用shell的tab功能可以看到一系列arm-elf打头的程序,如 binutils系列、gcc、gdb等等 运行arm-elf-gcc –v xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems xlanchen@2006.5.24 Embedded Operating Systems

Embedded Operating Systems 第一部分结束 GNU Tools之一:ld 安装交叉编译环境 xlanchen@2006.5.24 Embedded Operating Systems