交叉开发环境
基于OpenOCD和JTAG的嵌入式交叉开发环境
基于OpenOCD和JTAG的嵌入式交叉开发环境
黄子晨;李德华
【期刊名称】《仪器仪表用户》
【年(卷),期】2012(019)001
【摘要】嵌入式开发必须首先完成其交叉编译调试环境的建立.文章针对boot-loader与嵌入式内核的调试,提出了一种基于OpenOCD和JTAG的嵌入式交叉开发环境的构建方法.其主要由GDB前端、GDB调试编译器、守护进程OpenOCD 和JTAG调试器四个部分构成,其构建方法简单调试界面人性化,为调试工作提供了稳定平台.
【总页数】3页(P73-75)
【作者】黄子晨;李德华
【作者单位】华中科技大学图像识别与人工智能研究所,武汉430074;华中科技大学图像识别与人工智能研究所,武汉430074
【正文语种】中文
【中图分类】Ti311.56
【相关文献】
1.基于OpenOCD和DAP的嵌入式远程调试系统研究与设计 [J], 余梓奇;章建雄;马鹏;阎燕山
2.基于JTAG技术的嵌入式交叉调试软件 [J], 阳富民;柯滔;涂刚
3.嵌入式Linux交叉开发环境 [J], 康涌泉;桑楠;邹楚雄;邓竹莎
4.基于Openocd的嵌入式软件开发平台的研究和设计 [J], 段富刚;施展
5.基于网络的嵌入式Linux系统交叉开发环境搭建 [J], 王蓉蓉;邵平凡
因版权原因,仅展示原文概要,查看原文内容请购买。
交叉编译环境以及开发板上-binsh:.hello:notfound(使用arm-linu。。。
交叉编译环境以及开发板上-binsh:.hello:notfound(使⽤arm-linu。
⽬标板是S3C2440.⾄于交叉编译环境的搭建就不多说了,⽹上很多教程.搭建好了交叉编译环境后,第⼀件事就是传说中的”Hello,World!”.⼀. 主机编译环节我使⽤的系统是ubuntu10.04,搭建好交叉编译环境后,终端输⼊arm-linux-gcc -v能够正常显⽰版本信息,但是输⼊sudo arm-linux-gcc -v后却显⽰命令⽆法找到.我试过很多种⽅法,⽐如sudo -s切换到root后,编辑$PATH,将编译器路径加⼊.然后exit到普通⽤户.仍然不能执⾏sudo arm-linux-gcc -v. 这⾥如果哪位⼤⽜知道是什么原因的可以留⾔告诉我,谢谢:)由于编译.c的⽂件后,要产⽣新的⽂件,因此要super的权限.⼜不能使⽤sudo arm-linux-gcc,于是可以先sudo -s到root⽤户,再使⽤arm-liunux-gcc来进⾏编译.⼆. ⽬标板执⾏环节我是使⽤FTP在主机和⽬标板之间传送⽂件.传送过去后要注意改变权限.这⾥要注意⼏点:1. 要确定ftp过来后的⽂件的默认的存放路径.这个只要在⽬标机的终端机上确认下即可.(这个地⽅没有确认可能就会显⽰找不到命令)2. 传送过来的⽂件要更改权限才能运⾏.可以⽤:chmod 777 hellochmod +x hello3. 执⾏./hello这时,报错:-/bin/sh: ./hello: not found三. 问题排除⽤过绝对路径也试过之后就确定并不是⽂件是否存在的问题,⽽是这个⽂件并不能被执⾏.GOOGLE之后可以发现,排除上⾯提到问题后,就将问题定位到动态链接库上.于是在主机上⽤arm-linux-gcc -static -o 来进⾏静态编译.然后将新产⽣的⽂件传到⽬标板上.可以发现通过静态编译的⽂件明显⽐动态编译的要⼤.然后再次执⾏./hello 可以看到屏幕上出现了久违的Hello,World!问题到这⾥还没有完,我们可以再思考下怎么彻底解决,⽽不是每次都使⽤静态编译.既然是动态库引起的问题,那么应该和编译器的版本有关.在安装编译环境的时候同时安装了3.4.1和4.3.3两个版本.⽤户⼿册上说其中3.4.1是⽤来编译u-boot的,4.3.3版本是⽤来编译Linux内核和Qtipia的,两个版本均可以⽤来编译应⽤程序.既然我们的内核使⽤4.3.3编译的,⽽我们刚才编译hello是使⽤3.4.1编译的,那么会不会是这个原因呢?于是我们试⼀下,将$PATH中的原来包含3.4.1/bin 的路径改为 4.4.3/bin . 修改的⽅法⽹上有很多.(直接export PATH=”想要的路径”)再次编译,下载.⽬标板上执⾏,成功显⽰”Hello,World!”.可以看到系统中动态库的⽀持和编译器还是有关的./lzjsky/p/3730183.html。
交叉开发环境搭建实验报告
实验报告实验题目交叉开发环境搭建姓名:学号:课程名称:所在学院:专业班级:任课教师:实验项目名称交叉开发环境搭建一、实验目的与要求:(一)、实验目的:1、熟悉嵌入式Linux交叉开发环境的搭建与使用。
(二)、实验要求:根据实验指导书的步骤进行嵌入式Linux交叉环境的搭建。
二、实验设备:华清远见试验箱,PC机,华清远见开发环境三、实验方法(原理,流程图)交叉开发环境是指先在一台通用PC上进行软件的编辑、编译与连接,然后下载到嵌入式设备中运行调试的开发过程。
通用PC成为宿主机,嵌入式设备成为目标机。
在虚拟机中编译好程序,使用tftp的方式下载内核,运行到开发板上;使用nfs方式挂载文件系统,为后续的开发做准备。
四、实验过程、步骤及内容1、配置开发环境网络虚拟机网络方式为桥接模式,此状态下虚拟机下的操作系统和主机操作系统为平级状态。
给虚拟机下的Ubuntu一个静态的IP地址。
配置虚拟机网络环境:$ sudo vim /etc/network/interfaces修改文件如下图所示,保存退出。
应用网络修改。
$ sudo /etc/init.d/networking restart如上图所示表明IP修改成功。
使用【ifconfig】命令查看修改的结果。
2、配置交叉工具链修改文件~/.bashrc,添加如下内容$ sudo gedit /etc/bash.bashrc添加下面一行代码到文件的末尾export PATH=$PATH:/usr/local/toolchain/toolchain-4.4.6/bin/ 但要注意,添加的代码要手动自己添加重启配置文件$ source /etc/bash.bashrc工具链的测试$ arm-none-linux-gnueabi-gcc -v出现如上图所示就证明交叉工具链安装好了。
3、拷贝文件将华清远见-CORTEXA9资料拷贝到Ubuntu共享目录下。
4、将共享目录中需要下载的文件拷贝到tftp目录中拷贝u-boot-fs4412.bin、uImage、exynos4412-fs4412.dtb文件到虚拟机Ubuntu 下的/tftpboot目录下。
第4章 嵌入式交叉开发环境
4.1 交叉开发环境介绍 4.1.1 交叉开发概念模型、
各种连接方式 HOST TARGET
内核映像 根文件系统
下载内核映像 内核映像 挂接NFS文件系统
TARGET就是目标板,HOST是开发主机。在开发主 机上,可以安装开发工具,编辑、编译目标板的 Linux引导程序、内核和文件系统,然后在目标板 上运行。通常这种在主机环境下开发,在目标板 上运行的开发模式叫作交叉开发。
4.3 主机开发环境配置
4.3.1 主机环境配置 主机端安装Linux操作系统的时候,只要磁盘有足够空间,最 好是完全安装。 接下来就是主机Linux环境配置。 然后把交叉开发工具链的路径添加到环境变量PATH中,这 样可以方便地在Bash或者Makefile中使用这些工具。 /etc/profile是系统启动过程执行的一个脚本,对所有用户都生 效。 ~/.bash_profile是用户的脚本,在用户登录时生效。 ~/.bashrc也是用户的脚本,在~/.bash_profile中调用生效。 把环境变量配置的命令添加到其中一个文件中即可。
4.3.5 NFS服务 NFS服务的主要任务是把本地的一个目录通过网络 输出,其他计算机可以远程地挂接这个目录并且 访问文件。 NFS服务有自己的协议和端口号,但是在文件传输 或者其他相关信息传递的时候,NFS则使用远程过 程调用(RPC,Remote Procedure Call)协议。
4.4 启动目标板 4.4.1 系统引导过程 第一阶段是目标板硬件初始化,解压内核映像,再 跳转到内核映像入口。 第二阶段是内核的初始化,初始化设备驱动,挂接 根文件系统。 第三阶段是执行用户空间的init程序,完成系统初始 化、启动相关服务和管理用户登录等工作。
Байду номын сангаас
4.1 嵌入式系统开发工具链
ARM公司的开发工具(续)
RealView MDK是完备的嵌入式开发环 境,它包括多个组成部分: uVision3集成 开发环境、RealView C/C++编译器、 RealView宏汇编器、RealView工具 集、RTL-ARM实时库、uVision调试器以 及GNU GCC。 RealVw MDK有评估版和完整版,评估 版具有很大的限制。
../gcc-4.1.1/configure --prefix=/usr/local/gcc-4.1.1 -enable-threads --disable-checking --enable-long-long -host=i386-redhat-linux --with-system-zlib --enablelanguages=c,c++
源码安装gcc过程(8)
测试 用新的编译命令(gcc4、g++4等)编 译你以前的C、C++程序,检验新安装的 GCC编译器是否能正常工作。 根据需要,可以删除或者保留${srcdir}和 ${objdir}目录。
★★
4、二进制方式安装arm-elf-gcc
cygwin下安装交叉工具链
arm-elf-tools-cygwin.sh armtools.tar.gz EmbestArmTool.exe
★
组件介绍(续)
2. binutils
是一组二进制工具程序集合,是辅助GCC的主 要软件。 主要包括:
as:GNU汇编器 ld:GNU链接器 ar:创建归档文件,向库中添加/提取obj文件 nm:列出obj文件中的符号 objcopy:复制和转化obj文件
组件介绍(续)
2. binutils
tornado教案
管理Tornado中的交叉开发工具链 管理Tornado中的交叉开发工具链 Tornado中的交叉开发 具有VxWorks操作系统及其组件的配置、 具有VxWorks操作系统及其组件的配置、 VxWorks操作系统及其组件的配置 编译环境的设置、Makefile自动生成等功能 编译环境的设置、Makefile自动生成等功能 允许对工程管理器进行定制和扩展
vxworks_romCompress
之压缩ROM-Based 为Bootable Image之ROM Image之压缩 之 之压缩 Image
vxworks_romResident
为Bootable Image之ROM Image之ROM-Resident 之 之 Image
8.1.2 工程创建
8.1.3 编译链接
在Workspace的【Builds】选项卡中 Workspace的 Builds】 完成编译策略的制定后, 完成编译策略的制定后,可使用 Tornado的 Build】菜单中的【Build】 Tornado的【Build】菜单中的【Build】 All】 /【ReBuild All】等命令完成目标程 序的编译链接
8.1.1 交叉开发环境的建立
主机系统 目标机系统
Application WindSh Editor CrossWind Browser WindView Target Agent
图 5-1 Tornado 交叉开发环境 BSP
Target Server VxWorks
8.1.2 工程创建
1.有关概念
第8章 Tornado交叉开发环境
本章以硬件目标板(非仅 目标仿真器) 本章以硬件目标板(非仅VxSim目标仿真器) 目标仿真器 为目标机, 为目标机,介绍 Tornado交叉开发基本流程 Tornado交叉开发基本流程 基于目标板的Bootable Project实例 基于目标板的 实例 基于目标板的Downloadable Project实例 基于目标板的 实例 多任务调试方法
电子科技大学嵌入式软件工程ppt课件
嵌入式软件的交叉开发环境
• 物理连接和逻辑连接 – 物理连接是指宿主机与目标机通过物理线路连 接在一起,连接方式主要有三种:
• 串口 • 以太口 • OCD(On Chip Debug)方式,如JTAG、BDM等
5.3.2 宿主机上的交叉开发环境
(2)将交叉编译器路径添加到系统环境变量中,便于使用:
gedit /etc/profile 添加以下四行到该文件中: export PATH=/usr/local/arm/4.3.2/bin:$PATH export TOOLCHAIN=/usr/local/arm/4.3.2 export TB_CC_PREFIX=arm-linuxexport PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi
• 调试器与ROM Monitor之间的通信遵循 远程调试协议。
宿主机
目标机
调试器
Windows或其它桌 面操作系统 PC机等硬件
逻辑上的连接 物理上的连接
监控程 序(ROM 被调试 Monitor) 程序
嵌入式 硬件
ROM Monitor调试方式
ROM Monitor
• 在目标机上电或复位后首先执行的就是 ROM Monitor,它对目标机进行一些必 要的初始化
交叉调试
非交叉调试
调试器和被调试程序运行在不同 调试器和被调试程序运行在同一
的计算机上
台计算机上
可独立运行,无需操作系统支持
需要操作系统的支持
被调试程序的装载由调试器完成
交叉编译环境搭建
进行嵌入式开发时,首先要建立交叉编译开发环境。下面将从建立交叉编译环境的原因、方法以及使用等几个方面入手。
1, 交叉编译
交叉编译就是在一个平台上生成另一个平台上的可执行代码。这里注意的是所谓的平台,实际上它包含两个概念:体系结构(Architecture)和操作系统(Operation System)。
一般而言,需要交叉编译的原因有两个。首先,在项目的起始阶段,目的平台尚未建立,因此需要做交叉编译,以生成我们所需要的Bootloader(启动引导代码)以及操作系统核心;其次,当目的平台能启动之后,由于目的平台上资源的限制,当我们编译大型程序时,依然可能需要用到交叉编译。
2, 制作工具链
建立交叉编译开发工具链有两种方法。自己动手编译一个工具链,或者直接下载
同一个体系结构可以运行不同的操作系统;同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上市Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
#file hello_arm
Hello_arm:ELF 32-bit LSB executable,ARM,version 1 (ARM),for GNU/Linux 2.0.0,dynamically linked (uses shared libs),not stripped.
如果做到了这一步,就说明你的交叉编译环境已经构建好了,接下来你就可以就行嵌入式开发了。
制作好的工具链。一般而言,如果客户自己购买开发板,厂家都提供交叉编译工具链,读者只要在Linux环境中解压安装并配置环境变量就可使用。
交叉编译环境的配置与使用
交叉编译环境的配置与使用交叉编译是指在一个不同的开发环境中编译程序,以在目标平台上运行。
目标平台可以是不同的硬件架构、操作系统或操作系统版本。
交叉编译可以有效地减少在目标平台上进行开发和测试的时间,尤其是在限制了资源的嵌入式系统中。
配置交叉编译环境的步骤主要包括以下几个方面:1. 选择交叉编译工具链:交叉编译工具链是包含了交叉编译器、交叉链接器和相关工具的集合。
根据目标平台的特点,可以选择使用已有的工具链,或者自己构建定制的交叉编译工具链。
常见的交叉编译工具链有Cygwin、GCC等。
3.配置交叉编译环境:在配置交叉编译环境之前,首先需要确定目标平台和目标操作系统的相关信息,例如:处理器架构、操作系统版本、库文件位置等。
然后设置环境变量,包括设置交叉编译工具链的路径、目标平台和操作系统的相关信息。
4. 编写和编译代码:在配置好交叉编译环境后,可以使用常规的编程工具,如IDE或命令行工具,编写程序代码。
在编译时,需要使用交叉编译工具链中的编译器和相关工具来进行编译。
例如,使用交叉编译工具链中的gcc来代替本机的gcc进行编译。
5.链接和生成目标文件:编译成功后,会生成目标文件,即在目标平台上可以运行的可执行文件或库文件。
在链接时,需要使用交叉链接器来链接目标文件和相关库文件。
6.在目标平台上运行:将生成的目标文件复制到目标平台上,并通过目标平台的方式运行。
例如,在嵌入式系统中,可以通过串口或其他方式加载程序并运行。
1.确定目标平台和操作系统的要求:在进行交叉编译之前,需要确保了解目标平台和操作系统的相关要求,例如处理器架构、操作系统版本、库文件位置等。
这些信息将有助于选择合适的交叉编译工具链和配置交叉编译环境。
2.编写适用于目标平台的代码:在进行交叉编译时,需要注意编写适用于目标平台的代码。
例如,需要避免使用与目标平台不兼容的库函数和系统调用,以及考虑目标平台的资源限制等。
3.调试和测试:由于交叉编译环境和目标平台的不同,可能会遇到一些问题,如编译错误、链接错误或运行错误等。
嵌入式交叉开发环境介绍
嵌入式交叉开发环境介绍嵌入式交叉开发环境是为嵌入式系统开发而设计的一种开发环境。
嵌入式系统是指嵌入到其他设备或系统中的计算机系统,它们通常用于执行特定的功能,如控制、监测或通信。
嵌入式交叉开发环境包含了一系列的工具和技术,用于编译、调试和部署嵌入式软件。
嵌入式交叉开发环境的一个关键组成部分是交叉编译器。
由于嵌入式系统和主机系统的硬件架构不同,所以需要使用交叉编译器将源代码从开发主机编译为可以在目标嵌入式系统上运行的可执行文件。
交叉编译器提供了与目标硬件平台兼容的编译器,链接器和调试器等工具。
另一个重要的组件是调试器。
嵌入式系统通常没有显示屏和键盘,因此调试器是必不可少的工具。
调试器通过连接到目标系统上的调试接口,提供了远程调试和监视嵌入式系统的功能。
调试器可以跟踪程序执行状态、检查变量的值和监控系统资源的使用情况,从而帮助开发人员识别和修复程序中的错误。
除了交叉编译器和调试器,嵌入式交叉开发环境还包括了其他一些工具和组件,用于测试、优化和部署嵌入式软件。
例如,性能分析工具可以帮助开发人员分析程序的性能瓶颈,并优化代码以提高系统的响应能力。
代码覆盖工具可以帮助开发人员检测测试覆盖率,确保所有的代码路径都得到了测试。
部署工具可以帮助开发人员将编译好的可执行文件和相关文件传输到目标系统上,并安装和配置软件。
同时,嵌入式交叉开发环境还需要具备与目标硬件平台兼容的驱动和库。
驱动程序提供了访问硬件设备的接口,使开发人员可以与外部设备进行通信和控制。
库提供了一系列的功能和算法,以简化嵌入式软件的开发。
常见的库有操作系统库、数学库和图形库等。
总之,嵌入式交叉开发环境是一个针对嵌入式系统开发的综合工具和技术集合。
它提供了交叉编译器、调试器、开发套件、测试工具、部署工具、驱动程序和库等组件,帮助开发人员更高效地开发、调试和部署嵌入式软件。
嵌入式交叉开发环境在嵌入式系统开发中发挥着重要的作用,可以提高开发效率、降低开发成本,并最终达到实现高质量的嵌入式软件的目标。
交叉开发的概念
交叉开发的概念在软件开发领域,交叉开发指的是使用一种特定的开发环境或工具链,可以在一台主机上构建和调试软件,然后将其部署到不同的目标平台或操作系统上运行。
换句话说,交叉开发是指在一台计算机上使用一种操作系统或平台来开发和构建适用于另一种不同的操作系统或平台的软件。
交叉开发的核心概念包括目标平台、主机平台、交叉编译、交叉调试和交叉部署。
目标平台目标平台指的是所要运行软件的实际设备或操作系统版本。
它可以是不同的操作系统(如Windows、Linux、macOS)或嵌入式系统(如ARM、MIPS、PowerPC)。
在交叉开发中,目标平台通常与主机平台不同。
主机平台主机平台是指执行开发环境和工具链的计算机的操作系统或平台。
它可以是个人电脑、服务器或开发板。
在交叉开发中,主机平台与目标平台不同。
交叉编译交叉编译是指使用主机平台上的编译器和工具链来生成适用于目标平台的二进制可执行文件或库。
由于主机平台和目标平台的差异,交叉编译需要解决平台相关的问题,如指令集、系统调用、库依赖等。
交叉编译通常需要使用交叉编译工具链,它包含了适用于目标平台的编译器、链接器和库。
交叉编译的重要性在于它使开发人员能够在一台计算机上进行开发和构建,而不需要为每个目标平台配置一个独立的开发环境。
这样可以节省时间和成本,并提高开发效率。
交叉调试交叉调试是指在主机平台上使用调试器来调试运行在目标平台上的软件。
由于目标平台与主机平台不同,传统的调试技术无法直接应用于目标平台。
交叉调试工具可以通过远程调试协议或仿真器与目标平台进行通信,以实现在主机平台上调试目标平台上的软件。
交叉调试的重要性在于它使开发人员能够在开发阶段进行实时调试和故障排除,提高软件质量并加快开发进度。
交叉部署交叉部署是指将在主机平台上构建的软件部署到目标平台上运行。
由于主机平台与目标平台的差异,交叉部署需要解决平台相关的问题,如二进制文件格式、库依赖、配置文件等。
交叉部署的重要性在于它使开发人员能够方便地将软件发布到不同的目标平台上,提供更广泛的软件支持,并满足不同用户的需求。
基于OpenOCD和JTAG的嵌入式交叉开发环境
Op n D 和 J AG 的 嵌 入 式 交 叉 开 发 环 境 的 构 建 方 法 。 其 主 要 由 GD 前 端 、 B 调 试 编 译 器 、 护 进 程 O e OC 和 e OC T B GD 守 pn D J AG 调 试 器 四个 部 分 构 成 , 构 建 方 法 简 单 调 试 界 面 人 性 化 。 调试 工 作 提供 了稳 定 平 台 。 T 其 为
s a l r s - e e o me ti t f c . tbe co sd v lp n er e n a
Ke d y wors:0p n e OCD;J AG ;e e d d;c o sc mpl T mb d e rs o i e
O 引 言
随着信 息技 术的发展和后 P C时代的到来 , 低功耗 的嵌入 式设备 已经大量应用于移动通讯设备与个人终 端 、 平板 电脑 。
HUANG . h n.U . u Zic e De h a
( u zo gU i r t o cec n eh o g , h n4 0 7 ,C ia H ahn nv sy f i ea d e i S n o n
Ab t c : s r t Emb d e e eo me tmu tfs o lt sc o sc mpl e u gn n i n n .Th r s -e eo me t a e d d d v lp n s i tc mpe e i rs -o i d b g ig e vr me t r t er o e co s d v lp n e vr me tb s d o e OCD a d J AG s u e o o tla e n y t m e n l e u gn . I c n it fGDB ni on n a e n Op n n T i s d f rb o ・ d ra d s se k r e b g ig t o sss o o d
交叉开发环境中的目标机代理设计
在嵌入 式应用开 发前期 ,程序 员开发 自己的嵌入式应 用 ,经过交叉编译、链 接 ,可以使用仿真器模拟 目标机环境 进行初步调试运行 。嵌入式硬件 系统千差 万别 ,到了嵌 入式 开发 的中后期 ,需要把嵌入式应 用转移到 目标机继 续进行开 发、调试 ;同时软件开发者需要对 目标 系统 ,例如 硬件 的各 种寄存器、 内存空 问,操作 系统 的信 号量、消息队列、任务
命令功能表功能子模块服务命令标识函数的功能tgtping测试主机与目标机是否连接tgtconnect连接主机和目标机连接管理模块tgtdisconnect断开连接regsget获取目标机寄存器信息寄存器模块regsset设置目标机寄存器信息ctxstep单步执行一个任务ctxcont继续执行一个任务ctxstop停止一个任务的执行ctxcreate创建一个任务ctxdel删除一个任务ctxsuspend暂停执行指定任务ctxresume重新执行指定任务ctxstatusget获得任务运行状态funccall创建一个任务并运行指定函数任务执行模块dircall运行指定函数事件模块evtget获取目标机代理的一个事件evtpadd添加一个事件点事件点模块evtpdelete删除一个事件点memread读目标机内存memwrite写目标机内存memfill以指定格式填写目标机内存memscan扫描目标机内存数据格式memmove移动目标机内存信息memchecksum校验目标机的指定内存块内存管理模块memtxtupdate在目标机写之后同步主机端信息功能执行模块提供的请求执行函数主要功能如下
机上 ,称为 目标机 。
和 目标机服务器管理 所有主机 端工具和在仿真器 或 目标机 中
运行的嵌入式应用的通信和信息的交互
目标机端板级支持包( S ) B P提供 了对 底层 硬件的抽象 , 屏 蔽 了硬件物理特性 的差异 。 系统核心只提供了最基本 的功能 , 而对硬件 设备的驱动还需设备驱动程序 。网络 库和图形库为 嵌入 式应 用提供 网络协议栈、图形应 用等 功能 。 嵌 入式应用是 由程序员开发 的应 用程序 。 目标机代 理管
嵌入式处理器课程复习参考习题-3(含答案)
一、判断1. 嵌入式系统是看不见的计算机系统,其开发环境和运行环境一致。
()2. PC 机可包含在嵌入式系统中。
()3. 通常嵌入式系统是一个通用的计算平台,其软件是应用程序和操作系统两种软件的一体化程序。
()4. 嵌入式硬件系统的多样性不仅表现在嵌入式CPU 的多样性、而且具有相同微处理器的硬件系统可能会有多种不同的外围电路。
()5. 嵌入式硬件系统的核心是嵌入式微处理器,其主要体系架构有SPARC、Pentium、Itanium 等。
()6. AMBA 总线是片内总线,包括高速总线AHB 和低速总线APB。
()7. NandFlash 是一种Flash Memory 它既可以做主存也可做外存使用。
()8. NorFlash 是一种Flash Memory 它既可以做主存也可做外存使用。
()9. 在ARM CPU 模式中System 模式与User 模式的运行环境一样,但是它可以不受任何限制地访问任何资源。
()10. 在ARM CPU 模式中除User 模式外,其它模式都被称为特权模式,User 模式可直接改变CPU 的模式。
()11. ARM 处理器主要有两种工作状态:ARM 和Thumb,ARM 和Thumb 之间状态的切换将影响CPU 的模式或寄存器的内容。
()12. ARM 是32 位嵌入式处理器,并可以进入16 位运行模式, 可支持大、小端数据格式()13. X86 CPU 的异常向量与ARM CPU 的异常向量的区别是:在X86 平台上,当有异常发生时CPU 是到指定的向量地址读取要执行的程序的地址。
而ARM CPU 是到向量地址的地方读取指令,也就是ARM 的向量地址处存放的是一条指令(一般是一条跳转指令)。
()14. 存储器映射编址是指I/O 端口的地址与内存地址统一编址,即I/O 单元与内存单元在同一地址空间。
其优点是可采用丰富的内存操作指令访问I/O 单元、无需单独的I/O 地址译码电路、无需专用的I/O 指令。
linux交叉编译环境搭建步骤
linux交叉编译环境搭建步骤正文:在进行Linux交叉编译之前,我们需要先搭建好相应的交叉编译环境。
下面是搭建步骤的详细说明:步骤一:安装必要的软件包首先,我们需要安装一些必要的软件包,包括GCC、binutils、glibc 以及交叉编译工具链等。
可以通过包管理器来安装这些软件包,比如在Ubuntu上可以使用apt-get命令,CentOS上可以使用yum命令。
步骤二:下载交叉编译工具链接下来,我们需要下载相应的交叉编译工具链。
可以从官方网站上下载已经编译好的工具链,也可以通过源码自行编译得到。
下载好之后,将工具链解压到一个目录下。
步骤三:配置环境变量为了方便使用交叉编译工具链,我们需要将其添加到系统的环境变量中。
可以通过编辑.bashrc文件来实现,添加类似下面的内容:```shellexport CROSS_COMPILE=/path/to/cross-compiler/bin/arm-linux-export ARCH=arm```其中,/path/to/cross-compiler是你下载的交叉编译工具链的路径。
步骤四:测试交叉编译环境在配置好环境变量之后,我们可以通过简单的测试来验证交叉编译环境是否搭建成功。
比如,可以尝试编译一个简单的Hello World程序,并在目标平台上运行。
步骤五:编译其他软件当交叉编译环境搭建成功,并且测试通过之后,我们就可以使用这个环境来编译其他的软件了。
比如,可以使用交叉编译工具链来编译Linux内核、U-Boot引导程序、驱动程序等。
总结:搭建Linux交叉编译环境是进行嵌入式开发的基础工作之一。
在搭建好环境之后,我们可以使用交叉编译工具链来编译适配于目标平台的软件,从而实现在开发主机上进行开发和调试的目的。
基于网络的嵌入式Linux系统交叉开发环境搭建
Sh S c r S e1 缩 写 ) 过 使 用 sh 道 , 以 把 所 有 传 s (e ue H 1的 通 s隧 可
2 客户 机 端 配置
基于 网络 的 开发 环境 的最 主 要 的特 点就 是 既能 方 便 多个
输 的数 据进 行加 密 , 够 防I D s p 骗 。同 时, 能 L n  ̄I欺 由于 传输 的 数据 是经过 压缩 的 , 以可 以加快 传输 的速 度 。 所
够 的资源在 本机 ( 即板 子 上 系 统 ) 行 开 发 工 具 和 调 试 工 具 。 运 通 常 的 嵌 入 式 系 统 的 软 件 开 发 采 用 一 种 交 叉 编 译 调 试 的 方 式 。 叉 编 译 调 试 环 境 建 立 在 宿 主 机 ( 一 台P 机 ) , 应 交 即 C 上 对
该方 案需 要 在 每 台客 户 机 上安 装 X h l . sel 0.通 过sh 录 2 s登
Ln x 务 器 。通 讯 方 式 如 图 2 示 。 iu  ̄ 所
开发 者的协 同工作 , 又能方 便单个 开 发者 日常 的使用 。客 户机
作 者 简 介 : 蓉 蓉 (9 4 ) 女 , 北 恩 施 人 , 汉 科 技 大 学 硕 士 研 究 生 , 究 方 向 为 嵌 入 式 Ln x 统 ; 平 凡 ( 9 8 , , 北 成 宁 人 , 汉 科 技 大 王 18~ , 湖 武 研 iu 系 邵 1 5 ~) 男 湖 武
的可 移植 性 、 配 置和 可剪 裁 性 , 便 能灵 活地 适 应不 同的软 可 以
硬性环 境 。 因此 , 一种能 使开 发过 程变得 更简 便 、 高效 的交互 更
式 开 发 环 境 被 提 出来 。
1 配 置 整体 开 发 环境
嵌入式Linux交叉开发环境
1 嵌入 式软件 的交叉开发
宿主 机 :P C
编译器 汇 编 器 连接器
调 试 工 具
目标 机 :嵌 入 式 系统平 台
】 I Fah ls DOC l l
I
虚 ̄ L n x 作系统 A iu 操
g d o -ln x o s n iu
一
选择交叉编译程序 , 定程序的安装过程和安装位置等 。 确
一
般而言 , 交叉开发环境的搭建过程 的核心 , 即交叉编译
工具 、 汇编工 具 、 连接工具 、 调试工具 的建立 , 大体上都的遵循
图 2所 示 流 程 。
编 译 调 试工 具g b d
款高性能 、 功耗 S C模 式 C U, 低 O P 可运 行 MIS2指 令 系 P3
பைடு நூலகம்
Jn 0 6 u e2 0
嵌 入 式 Ln x交 叉 开 发 环 境 iu
康 涌泉 , 桑 楠, 邹楚雄 , 竹 莎 邓 ( 电子科 技 大 学 计 算机科 学与 工程 学院 , 四川 成都 605 ) 104
( isu@t cr) d—h i o o m. n
摘 要: 对嵌 入 式软件 交叉 开发 技 术进行探 讨 和研 究。利 用 开源软 件在 Widw 操作 系统 下 , no s 构 建 了一个嵌 入 式 Lnx的 交叉 开发环 境 , iu 开发 了 b sbx等 应 用程 序 , “ 芯 g3 i开发板搭 建 了一 uyo 为 龙 s2”
中要用到的工具都集成 到一个应 用环境 中 , 帮助用户方便 的
IE等 。 出于商业利 益 的考 虑 , D 但 这些 产 品一般 都未 开放源
码, 特别是在 Widw n o s环境 下如 何 实现 面 向嵌 入 式 Lnx应 iu 用的交叉开发 , 更是作为核心技术加 以保 护。 “ 龙芯 g3 i是由中科院计 算机技 术研 究所 自主研发 的 s 2”
GEC6818交叉开发环境搭建拟稿
GEC6818交叉开发环境搭建拟稿为manjaro linux配置交叉⼯具链为gec6818开发版下载⼀个arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 交叉⼯具链压缩包,⽂件可以在⽹上找到将压缩包放⼊linux共享⽂件夹下,在manjaro linux中,进⼊到共享⽬录下,执⾏以下命令,将编译⼯具链解压到manjaro 的/usr/local/⽬录下:tar -xvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /usr/local/然后进⼊cd /usr/local ⽬录,可以看到多了⼀个arm-2014.05⽬录接下来 `cd /usr/local/arm-2014.05/bin 为编译⼯具建⽴软链接为编译⼯具建⽴软连接为了后⾯⽅便使⽤,这⾥我们为arm-none-linux-gnueabi-gcc和arm-none-linux-gnueabi-g++建⽴软链接,其他的暂时不设置我们在 bin/ ⽬录新建⼀个⽬录mkdir -m 755 softlink放置软链接。
进去cd softlink⽬录后,执⾏以下命令建⽴软链接ln -s ../arm-none-linux-gnueabi-gcc arm-linux-gccln -s ../arm-none-linux-gnueabi-g++ arm-linux-g++为linux配置环境变量添加环境变量路径 /etc/profile⽂件中:执⾏sudo vim /etc/profile 按住shift+g 跳到⾏尾,按o键在最后⼀⾏加⼊⼀句:export PATH=/usr/local/arm-2014.05/bin/softlink:$PATH添加之后,执⾏source /etc/profile命令或者重启manjaro使编译⼯具⽣效.测试编译⼯具此时我们在manjaro⾥写⼀个 hello world 的简单hello.c程序,使⽤命令 arm-linux-gcc hello.c -o hello ,如果编译器搭建好了,会⽣成⼀个可执⾏⽂件 hello,在开发板中执⾏显⽰ hello world 表⽰开发环境搭建成功。
安装CC++交叉编译环境
安装CC++交叉编译环境转:/nokiaguy/article/details/8509739X86架构的CPU采⽤的是复杂指令集(Complex Instruction Set Computer,CICS),⽽ARM架构的CPU使⽤的是精简指令集(Reduced Instruction Set Computer,RISC)。
由于这两种架构的CPU使⽤了不同的指令集,因此在X86架构上开发可运⾏在ARM架构上的程序就必须要使⽤交叉编译器。
通常交叉编译器和相关⼯具包含的了很多可执⾏⽂件以及⼤量的共享库及头⽂件等资源。
这些资源的集合称为交叉编译环境。
在Internet上可以找到集成好的交叉编译环境,Android NDK和Android源代码中也包含的交叉编译环境。
当然,如果我们需要⼀个完全独⽴的交叉编译环境,可以下载集成好的交叉编译环境,也可以⾃⼰制作(⽐较复杂,建议读者下载集成好的交叉编译环境)。
下⾯介绍⼀个CodeSourcery 交叉编译环境,这个交叉编译环境直接下载安装就可以安装。
读者可通过如下的⽹站访问CodeSourcery下载页⾯。
上⾯的页⾯并未直接提供CodeSourcery的下载链接,读者可以点击“Download the GNU/Linux Release”链接,并输⼊Email(建议使⽤Gmail)、地址等信息,最后点击“Get Lite!”按钮提交信息。
如图2-29所⽰。
最后系统会将下载地址发送到刚才输⼊的Email。
进⼊下载页⾯,会看到如图2-30所⽰的不同版本的下载链接,选择最新的版本即可。
图2-30 CodeSourcery的不同版本进⼊CodeSourcery的下载页⾯后,会看到如图2-31所⽰的下载链接。
⽬前CodeSourcery有Windows和Linux两个版本。
本书使⽤的是第1个(IA32 GNU/Linux Installer)。
Linux版本的安装⽂件是bin格式,读者可执⾏下⾯的命令安装CodeSourcery。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 交叉开发环境
网络进行通信,调试器可以控制、访问被调试进程,读取被 调试进程的当前状态,并能够改变被调试进程的ห้องสมุดไป่ตู้行状态。
交叉调试(Cross Debug)又常常被称为远程调试(Remote Debug),是一种允许调试器以某种方式控制目标机上被调试 进程的运行方式,并具有查看和修改目标机上内存单元、寄 存器以及被调试进程中变量值等各种调试功能的调试方式。
第4章 交叉开发环境
第4章 交叉开发环境
4.1 交叉编译 4.2 交叉开发环境 4.3 交叉开发工具组成 4.4 宿主机与目标机之间的通信方式 4.5 交叉开发环境建立 4.6 基于UP-NETARM2410-S开发平台交叉开发环境建立 4.7 交叉编译和交叉调试实例 本章小结
第4章 交叉开发环境
一般而言,远程调试过程的结构如图4-2所示。
第4章 交叉开发环境 图4-2 远程调试结构图
第4章 交叉开发环境
由上可知交叉调试典型特点如下: (1) 调试器和被调试进程运行在不同的机器上,调试器 运行在PC或者工作站上(宿主机),而被调试的进程则运行在 各种专业调试板上(目标机)。 (2) 调试器通过某种通信方式与被调试进程建立联系, 如串口、并口、网络、DBM、JTAG或者专用的通信方式。 (3) 在目标机上一般会具备某种形式的调试代理,它负 责与调试器共同配合完成对目标机上运行着的进程的调试。 这种调试代理可能是某些支持调试功能的硬件设备(如DBI 2000),也可能是某些专门的调试软件(如gdbserver)。
第4章 交叉开发环境
2. 交叉调试器和系统仿真器 嵌入式软件经过编译和链接后即进入调试阶段,嵌入式 软件开发过程中的交叉调试与通用软件开发过程中的调试方 式有所差别。 在通用软件开发中,调试器与被调试的程序往往运行在 同一台计算机上,调试器是一个单独运行着的进程,它通过 操作系统提供的调试接口来控制被调试的进程。 在嵌入式软件开发中,调试时采用的是在宿主机和目标 机之间进行的交叉调试,调试器仍然运行在宿主机的通用操 作系统之上,但被调试的进程却是运行在基于特定硬件平台 的嵌入式操作系统中,调试器和被调试进程通过串口或者
图4-1 交叉开发环境模式
第4章 交叉开发环境
宿主机(Host)是一台通用计算机(如PC机或者工作站), 功能较强,各种Linux 发行版本可以直接在PC机上安装,功 能十分强大。它不仅能够支持各种处理器和外围设备接口, 而且提供了图形化的用户交互界面和丰富的开发环境,更重 要的是Linux 系统性能稳定。它为开发者提供了以下功能:
开发工具一般是IDE(集成开发环境),它集成了编译器 (用于编译目标CPU识别的机器代码)、编辑器、仿真调试器 等诸多工具,如果用C语言编写程序,可能还包括相应的标 准C库。
第4章 交叉开发环境
宿主机/目标机开发模式就是在一个CPU上运行一个程 序,另一个CPU编译和调试程序。和它对应的是宿主机开发 模式,就是在自己的CPU上编译和运行自己的程序,比如在 PC机上用VC编译程序直接运行。因此,宿主机/目标机开发 模式并不是一个新名词。
第4章 交叉开发环境 综上所述,编译、链接和调试嵌入式应用软件的环境, 它与运行嵌入式应用软件的环境有所不同,这样的环境称为 交叉开发环境(Cross Development Environment)。 需要交叉开发环境的支持是嵌入式软件开发时的一个显 著特点。交叉开发环境模式一般如图4-1所示。
交叉编译环境说明的问题和上面的一样,只是针对编译 环境而言,这里的环境包括目标CPU的编译器和库文件等, 至于为什么叫交叉编译,同样是因为运行编译程序的CPU不 是在为自己工作,而是在编译另一个CPU的程序。这样说来, 以上例子中的编译环境同样属于一个交叉编译环境(在PC机 上编译单片机程序),只不过都被IDE集成好了。
4.1 交 叉 编 译
交叉编译这个概念的出现和流行是和嵌入式系统的广泛 发展同步的。常用的计算机软件都需要通过编译的方式,把 使用高级计算机语言编写的代码(比如C代码)编译成计算机 可以识别和执行的二进制代码。比如在 Windows平台上, 可使用Visual C++ 开发环境编写程序并编译成可执行程序。 这种方式下,我们使用PC平台上的Windows工具开发针对 Windows本身的可执行程序,这种编译过程称为本机编译。
可见,以这种方式开发嵌入式系统软件的过程需要相应 的开发环境。于是就有了交叉开发环境的模式,即宿主机/ 目标机模式。
第4章 交叉开发环境
4.2 交叉开发环境
在开发单片机系统时,需要使用一台主机外加操作系统, 如Windows 2000,再装上单片机厂商提供的开发软件,即 开发环境,在开发环境里面编译程序,用鼠标单击“build” 快捷键,即生成的可执行程序配合仿真器还可以进行单步调 试、观察寄存器等。
然而,在进行嵌入式系统的开发时,运行程序的目标平 台通常具有有限的存储空间和运算能力等,例如常见的 ARM平台,其一般的静态存储空间大概是16~32 MB,而 CPU的主频大概在100~500 MHz之间。这种情况下,在
第4章 交叉开发环境
ARM平台上进行本机编译就不太可能了。这是因为一般的 编译工具链(compilation tool chain)需要很大的存储空间,并 需要很强的CPU运算能力。为了解决这个问题,交叉编译工 具就应运而生了。通过交叉编译工具,我们就可以在CPU能 力很强、存储空间足够的主机平台上(比如PC上)编译出针对 其他目标平台的可执行程序,再下载到目标平台上的特定位 置上运行。
① 非常稳定的多任务操作系统; ② 丰富的设备驱动程序支持和网络工具; ③ 强大的Shell; ④ 本地编译器; ⑤ 编辑器; ⑥ 图形化的用户界面。
第4章 交叉开发环境
4.3 交叉开发工具组成
1. 交叉编译器和交叉链接器 在完成嵌入式软件的编码之后,需要进行编译和链接, 以生成可执行代码。由于开发过程大多是在使用Intel公司 x86系列CPU的通用计算机上进行的,而目标环境的处理器 芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列 的微处理器,这就要求在建立好的交叉开发环境中进行交叉 编译和链接。 交叉编译器和交叉链接器是能够在宿主机上运行,并且 能够生成在目标机上直接运行的二进制代码的编译器和链接 器。例如在基于ARM体系结构的交叉开发环境中,armlinux-gcc是交叉编译器,arm-linux-ld是交叉链接器。