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

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

3天内不再提示

标签 > OR1200

OR1200

+关注 0人关注

or1200主要是GNU开发工具链的安装,有了GNU工具链提供的工具,我们可以在Linux环境下将汇编、C代码编译成OR1200平台的可执行代码,这就是交叉编译的过程。

文章: 0
浏览: 182446
帖子: 0

OR1200简介

  OR1200主要是GNU开发工具链的安装,有了GNU工具链提供的工具,我们可以在Linux环境下将汇编、C代码编译成OR1200平台的可执行代码,这就是交叉编译的过程。有了OR1200的可执行代码,就能够在OR1200模拟器OR1KSim中运行该可执行代码,观察其是否如预期那样执行。

  在介绍GNU开发工具链之前简单说明交叉编译的概念,在嵌入式开发中,开发平台与运行平台往往是不同的,这是因为运行平台上一般都资源有限,不能够安装编译开发环境,因此需要在其他性能更好的平台上安装编译环境,比如我们常在x86的平台上开发OR1200、ARM的应用程序,但是x86与OR1200、ARM是不同的处理器体系结构,也就是处理器的指令集不同,那么就需要x86上的编译器编译得到能够在OR1200、ARM架构下执行的目标代码,这就是交叉编译。图2.1显示x86平台与OR1200平台上“寄存器相与”指令对应不同的二进制编码。

OR1200百科

  or1200开发环境的安装

  主要是GNU开发工具链的安装,有了GNU工具链提供的工具,我们可以在Linux环境下将汇编、C代码编译成OR1200平台的可执行代码,这就是交叉编译的过程。有了OR1200的可执行代码,就能够在OR1200模拟器OR1KSim中运行该可执行代码,观察其是否如预期那样执行。

  在介绍GNU开发工具链之前简单说明交叉编译的概念,在嵌入式开发中,开发平台与运行平台往往是不同的,这是因为运行平台上一般都资源有限,不能够安装编译开发环境,因此需要在其他性能更好的平台上安装编译环境,比如我们常在x86的平台上开发OR1200、ARM的应用程序,但是x86与OR1200、ARM是不同的处理器体系结构,也就是处理器的指令集不同,那么就需要x86上的编译器编译得到能够在OR1200、ARM架构下执行的目标代码,这就是交叉编译。图2.1显示x86平台与OR1200平台上“寄存器相与”指令对应不同的二进制编码。

  

  图2.1 x86平台与OR1200处理器“寄存器相与”指令的二进制编码是不一样的

  因此我们在x86上开发程序的时候就需要针对不同的目标平台使用不同的编译工具,从而得到可以在目标平台上执行的二进制代码。在这方面GNU工具链是一个很好的选择。GNU工具链 (GNU Toolchain) 是一组用于开发应用程序和操作系统的编程工具的集合,这些工具构成了一个完整的系统,最重要的是其支持多种目标平台,其中就包括本书要介绍的OR1200。

  GNU工具链包括GCC、Glibc、GDB、GNU Binutils。

  1、GCC

  GCC(GNU Compiler Collection)主要的工具包括cpp、g++、gcc、gcov、gprof等。其中cpp是C预处理器,主要用于在编译C、C++或Objective-C源代码之前对它们进行预处理,由编译器自动调用。g++和gcc可以认为分别是C++和C编译器。

  2、Glibc

  Glibc(GNU libc)是GNU的C标准库,Glibc是移植GNU工具链时一个不可或缺的部分。Glibc主要由两部分组成,一部分是头文件,另一部分是库的二进制文件,包括动态和静态两个版本。有了Glibc就可以使用C语言开发程序。

  3、GDB

  GDB(GNU symbolic debugger)是一个功能很强大的调试工具,可以让用户调试一个程序,包括让程序在希望的地方停下,此时,用户可以查看变量,寄存器,内存及堆栈,而且可以修改变量及内存值。

  4、GNU Binutils

  GNU Binutils(Binary Utilities) 是一组二进制工具集,用来编译、测试和分析软件。其中主要的两个工具是as和ld。as是GNU汇编器,通常也称为GAS(GNU Assembler),ld是GNU链接器,as对GCC的输出文件进行汇编产生目标文件,然后由ld链接目标文件、重定位数据,从而产生可执行文件。此外,GNUBinutils还包括其它一些工具,如下:

  (1)addr2line:用于将程序中的地址对应到文件名和相应的行号。给定一个地址和一个可执行文件,addr2line使用可执行文件中的调试信息来确定该地址所对应的文件和行号。

  (2)ar:用于建立、修改和提取档案文件 (archives)。档案文件经常被用作库文件,保存程序常用的函数过程。

  (3)c++filt:C++和Java中都有重载函数的特性,编译器要区分重载函数,就需要对函数标识符进行编码转换成一个汇编级别的标签 (label),这个过程称为名字改编 (name mangling) 或名字修饰 (name decoration)。而c++filt所执行的就是这个过程的逆过程。

  (4)dlltool:用于创建Windows动态链接库。

  (5)ld:是链接器,编译程序最后是调用ld,把目标文件和归档文件链接在一起,重定位数据并链接符号引用。

  (6)gold:是一种比ld更快,但只针对ELF文件格式的链接器。

  (7)nm:用于列出二进制文件 (包括库文件和可执行文件) 中的符号,这些符号可以是函数、全局变量、静态变量等等。

  (8)objcopy:用于将一种格式的目标文件复制成另外一种格式。

  (9)objdump:用于列出关于二进制文件的各种信息。

  (10)ranlib:用于为档案文件生成索引信息,这样可以提高档案文件的访问速度。

  (11)readelf:类似于objdump,但是它只能处理ELF格式的文件,并且没有使用GNU BFD库。

  (12)size:用于列出目标文件或者档案文件各段的大小。

  (13)strings:用于列出目标文件中的可打印字符串。

  (14)strip:用于移除目标文件中的符号,以减少程序文件的大小,这对于嵌入式系统比较有用。

  GNU工具链可谓博大精深,功能全面,诸位读者不要惊慌,本书不是一本介绍GNU工具链的书,只是使用到了其中一点工具(实际只有as、ld,因为测试代码都是用汇编写的),所以不懂GNU工具链没有关系,笔者会在使用到其中工具的时候做一个简单介绍,这就足够了。

  针对目标平台OR1200的GNU工具链,有三种安装方法:

  方法一:下载源文件,在Linux环境下自行编译

  方法二:下载编译好的针对OR1200处理器的GNU工具链,可在Linux环境下安装使用

  方法三:下载一个Ubuntu的虚拟机文件,里面安装好了针对OR1200处理器的GNU工具链

  方法一笔者试过,容易出问题,而且比较耗时,当然对GNU工具链有着强烈兴趣的朋友可以尝试。方法二笔者没用过。方法三简单直接,速度快,不易出错,而且基本都是Windows下的操作,适合新手,所以建议使用方法三,本书也只介绍方法三。

  在浏览器中输入地址:ftp://openrisc.opencores.org/virtualbox-image/,FTP的用户名和密码都是openrisc,登录后会出现如图2.2所示界面。

  

  图2.2 Ubuntu虚拟机镜像下载

  下载最新的那个文件就可以了,笔者使用的是2011-12-15版。下载完成后解压该文件,大约4GB左右。此时还需要下载VisualBox以打开该文件。VisualBox是一款开源的虚拟机软件,本书使用的是4.1.22版。下载完成后安装VisualBox,安装完成后打开VisualBox,界面如图2.3所示。

  

  图2.3 VisualBox主界面

  点击“新建”出现“新建虚拟机”向导,点击“下一步”,出现如下界面:

  

  图2.4 新建虚拟机设置一

  此处操作系统选择Linux,版本选择Ubuntu,点击下一步,设置内存大小,如图2.5所示。

  

  图2.5 新建虚拟机设置二

  内存大小依据个人情况设置,本人设置的是512M,已经够用了,毕竟我们需要编译的程序都是十分简单的,点击下一步,选择“使用现有的虚拟硬盘”,然后选择解压后的虚拟机文件。

  

  图2.6 新建虚拟机设置三

  点击“下一步”,VisualBox会将用户刚才的设置都列出来,确认无误后,点击“创建”,这样虚拟机就创建好了。启动虚拟机,显示如图2.7所示。

  

  图2.7 Ubuntu虚拟机桌面

  双击左边的“终端”图标,就可以打开终端,在终端中输入or32-elf-,然后按两次Tab键,会列出虚拟机中已安装的针对OR1200平台的所有编译工具,如图2.8所示。

  

  图2.8 Ubuntu中已安装的编译工具

  可见之前介绍过的GNU工具链中的GCC、as、ld、gdb等都包括在内。这样GNU工具链就安装完成了。Ubuntu虚拟机提供的功能远不止GNU工具链,还包括OR1K模拟器、用于硬件调试的OR_DEBUG_PROXY、OpenRISC平台参考SoC设计ORPSoCv2,其中在本书的研究过程中需要使用到OR1K模拟器——OR1KSim,2.2.5节会介绍其使用方法。

  最后,因为宿主机是Windows平台,而且在后面仿真时使用的ModelSim也是Windows平台的,为了方便文件的传递,这里需要设置虚拟机与宿主机的文件共享。打开VisualBox中虚拟机的设置界面,选择“共享文件夹”,如图2.9所示。

  

  图2.9 虚拟机与宿主机共享文件夹设置步骤一

  点击界面右边的添加文件夹按钮,出现如图2.10所示界面:

  

  图2.10 虚拟机与宿主机共享文件夹设置步骤二

  在其中选择共享文件夹的路径,设置名称,参考如上设置,然后启动虚拟机,打开终端,输入命令:

  [plain] view plain copysudo mount –t vboxsf UbuntuShareFolder /mnt/sharefolder

  该命令的作用是将共享文件夹挂载在/mnt/sharefolder目录下,sudo表示以Root用户身份执行该命令,终端会提示输入密码,Ubuntu虚拟机默认Root用户的密码是openrisc。这样就实现了虚拟机与宿主机的文件共享,对虚拟机而言共享文件放在/mnt/sharefolder路径下,对宿主机而言共享文件放在图2.10所示的E盘UbuntuShareFolder文件夹下。

查看详情

相关标签

相关话题

换一批
  • IOT
    IOT
    +关注
    IoT是Internet of Things的缩写,字面翻译是“物体组成的因特网”,准确的翻译应该为“物联网”。物联网(Internet of Things)又称传感网,简要讲就是互联网从人向物的延伸。
  • 海思
    海思
    +关注
  • STM32F103C8T6
    STM32F103C8T6
    +关注
    STM32F103C8T6是一款集成电路,芯体尺寸为32位,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。
  • 数字隔离
    数字隔离
    +关注
    数字隔离技术常用于工业网络环境的现场总线、军用电子系统和航空航天电子设备中,尤其是一些应用环境比较恶劣的场合。数字隔离电路主要用于数字信号和开关量信号的传输。另一个重要原因是保护器件(或人)免受高电压的危害。本文详细介绍了数字隔离器工作原理及特点,选型及应用,各类数字隔离器件性能比较等内容。
  • 硬件工程师
    硬件工程师
    +关注
    硬件工程师Hardware Engineer职位 要求熟悉计算机市场行情;制定计算机组装计划;能够选购组装需要的硬件设备,并能合理配置、安装计算机和外围设备;安装和配置计算机软件系统;保养硬件和外围设备;清晰描述出现的计算机软硬件故障。
  • wifi模块
    wifi模块
    +关注
    Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。
  • 74ls74
    74ls74
    +关注
    74LS74是双D触发器。功能多,可作双稳态、寄存器、移位寄存器、振荡器、单稳态、分频计数器等功能。本章详细介绍了74ls112的功能及原理,74ls74引脚图及功能表,74ls112的应用等内容。
  • MPU6050
    MPU6050
    +关注
    MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。
  • Protues
    Protues
    +关注
    Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
  • UHD
    UHD
    +关注
    UHD是”超高清“的意思UHD的应用在电视机技术上最为普遍,目前已有不少厂商推出了UHD超高清电视。
  • STC12C5A60S2
    STC12C5A60S2
    +关注
    在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
  • 循迹小车
    循迹小车
    +关注
    做单片机的工程师相比都堆循迹小车有所认识,它是自动引导机器人系统的基本应用,那么今天小编就给大家介绍下自动自动循迹小车的原理,智能循迹小车的应用,智能循迹小车程序,循迹小车用途等知识吧!
  • 光立方
    光立方
    +关注
    光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世。这是新中国成立六十周年国庆晚会最具创意的三大法宝之首。
  • K60
    K60
    +关注
  • LM2596
    LM2596
    +关注
    LM2596是降压型电源管理单片集成电路的开关电压调节器,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。固定输出版本有3.3V、5V、12V,可调版本可以输出小于37V的各种电压。
  • 光模块
    光模块
    +关注
    光模块(optical module)由光电子器件、功能电路和光接口等组成,光电子器件包括发射和接收两部分。简单的说,光模块的作用就是光电转换,发送端把电信号转换成光信号,通过光纤传送后,接收端再把光信号转换成电信号。
  • STM32单片机
    STM32单片机
    +关注
    STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核
  • 步进驱动器
    步进驱动器
    +关注
    步进驱动器是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速和定位的目的。
  • Nexperia
    Nexperia
    +关注
    Nexperia是大批量生产基本半导体的领先专家,这些半导体是世界上每个电子设计都需要的组件。该公司广泛的产品组合包括二极管、双极晶体管、ESD 保护器件、MOSFET、GaN FET 以及模拟和逻辑IC。
  • CD4046
    CD4046
    +关注
    cD4046是通用的CMOS锁相环集成电路,其特点是电源电压范围宽(为3V-18V),输入阻抗高(约100MΩ),动态功耗小,在中心频率f0为10kHz下功耗仅为600μW,属微功耗器件。本章主要介绍内容有,CD4046的功能 cd4046锁相环电路,CD4046无线发射,cd4046运用,cd4046锁相环电路图。
  • COMSOL
    COMSOL
    +关注
    COMSOL集团是全球多物理场建模解决方案的提倡者与领导者。凭借创新的团队、协作的文化、前沿的技术、出色的产品,这家高科技工程软件公司正飞速发展,并有望成为行业领袖。其旗舰产品COMSOL Multiphysics 使工程师和科学家们可以通过模拟,赋予设计理念以生命。
  • 加速度传感器
    加速度传感器
    +关注
    加速度传感器是一种能够测量加速度的传感器。通常由质量块、阻尼器、弹性元件、敏感元件和适调电路等部分组成。
  • 联网技术
    联网技术
    +关注
  • 服务机器人
    服务机器人
    +关注
    服务机器人是机器人家族中的一个年轻成员,到目前为止尚没有一个严格的定义。不同国家对服务机器人的认识不同。
  • 四轴飞行器
    四轴飞行器
    +关注
    四轴飞行器,又称四旋翼飞行器、四旋翼直升机,简称四轴、四旋翼。这四轴飞行器(Quadrotor)是一种多旋翼飞行器。四轴飞行器的四个螺旋桨都是电机直连的简单机构,十字形的布局允许飞行器通过改变电机转速获得旋转机身的力,从而调整自身姿态。具体的技术细节在“基本运动原理”中讲述。
  • 基站测试
    基站测试
    +关注
    802.11ac与11基站测试(base station tests) 在基站设备安装完毕后,对基站设备电气性能所进行的测量。n的区别,802.11n无线网卡驱动,802.11n怎么安装。
  • TMS320F28335
    TMS320F28335
    +关注
    TMS320F28335是一款TI高性能TMS320C28x系列32位浮点DSP处理器
  • 静电防护
    静电防护
    +关注
    为防止静电积累所引起的人身电击、火灾和爆炸、电子器件失效和损坏,以及对生产的不良影响而采取的防范措施。其防范原则主要是抑制静电的产生,加速静电泄漏,进行静电中和等。
  • SDK
    SDK
    +关注
      SDK一般指软件开发工具包,软件开发工具包一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。软件开发工具广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
  • OBD
    OBD
    +关注
    OBD是英文On-Board Diagnostic的缩写,中文翻译为“车载诊断系统”。这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态,一旦发现有可能引起排放超标的情况,会马上发出警示。

关注此标签的用户(0人)

编辑推荐厂商产品技术软件/工具OS/语言教程专题