第五章嵌入式开发平台组建_第1页
第五章嵌入式开发平台组建_第2页
第五章嵌入式开发平台组建_第3页
第五章嵌入式开发平台组建_第4页
第五章嵌入式开发平台组建_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章嵌入式开发平台组建第五章嵌入式开发平台组建第1页,共134页,2023年,2月20日,星期三学习目标1、了解嵌入式系统开发平台的基本知识

2、熟悉嵌入式系统程序调试的常用方法

3、掌握ADS嵌入式开发平台的组建方法

4、掌握Linux嵌入式开发平台的组建方法第2页,共134页,2023年,2月20日,星期三5.1开发平台简介嵌入式系统的开发通常采用宿主机-目标机模式,使用交叉编译的方法,开发模型如图:

5.1.1开发模型宿主机就是常用的PC机,嵌入式开发环境通常建立在宿主机上。宿主机的操作系统一般是通用的Windows或Linux系统。目标机就是嵌入式应用系统,形态和结构各异,它运行嵌入式操作系统,与主机通过串口、以太网口、JTAG调试口、USB口或其他方式通信,下载运行在宿主机中编译好的代码。第3页,共134页,2023年,2月20日,星期三5.1开发平台简介

开发环境建立在宿主机上,用户所有的开发工作大都在宿主机开发环境中进行,包括程序编辑、编译、链接等。生成的可执行目标代码通过串口或以太网口下载到目标机,在目标机执行时,可以把执行结果回显到宿主机上,宿主机还可以通过开发环境提供的调试工具对代码进行调试。

5.1.1开发模型第4页,共134页,2023年,2月20日,星期三5.1开发平台简介

RTOS(RealTimeOperationSystem,实时操作系统)是嵌入式应用软件的运行基础,它与硬件平台息息相关。随着应用系统越来越复杂,需要管理的资源越来越多,没有操作系统对其调度是不行的。操作系统向应用软件提供访问资源的BSP(BoardSupportPackage,板级支持包),这样就可以屏蔽部分硬件,使开发者不必关注过多的硬件细节,减小开发难度。同时,通过RTOS,还可以提高应用软件在不同硬件平台间的代码复用率。

5.1.1开发模型第5页,共134页,2023年,2月20日,星期三5.1开发平台简介在嵌入式应用软件开发中,目前大部分使用C语言作为编程语言。与一般C语言编译器不同的是,嵌入式C语言编译器通常都经过优化,以提高编译效率。另外,由于嵌入式处理器速度的提高和存储空间的增加,一些嵌入式平台也开始采用C++作为编程语言。

5.1.1开发模型第6页,共134页,2023年,2月20日,星期三5.1开发平台简介在嵌入式系统开发环境中,交叉调试工具是必需的。交叉调试工具用于在宿主机上调试目标机上运行的程序。调试时,在目标机上运行一个代理,以接收主机发送过来的命令和代码,并且解释执行。通过调试器,开发者可以设定程序运行的起止位置和断点,同时可以查看和设置变量、寄存器及内存中的值,设置程序运行的条件,使开发者感到如同在目标机上调试程序一样方便。

5.1.1开发模型第7页,共134页,2023年,2月20日,星期三5.1开发平台简介

嵌入式系统是硬件和软件的综合体,开发嵌入式系统首先需要建立一个嵌入式硬件平台。嵌入式硬件平台的构建常用以下三种方案:

1、购置实验箱

2、购置开发板

3、自制电路板5.1.2硬件开发平台第8页,共134页,2023年,2月20日,星期三5.1开发平台简介设计ARM硬件系统,一般遵从以下原则:

(1)采用新型的和适合应用场合的ARM,可极大地提高系统的程序执行效率,缩短系统反应时间,满足适时性要求。

(2)采用低功耗贴片封装元器件,可以有效地降低功耗,减小电路板面积,提高电路本身的抗干扰能力,从而提高系统的稳定性和可靠性。

(3)采用通用型平台硬件电路设计,可以根据需要增删部件而生产不同型号的产品。

(4)在硬件电路设计中将富余的端口都做成插座形式的接口。

(5)通过选择CPU芯片,将逻辑接口芯片尽量集成在片内,可以简化系统设计。5.1.2硬件开发平台第9页,共134页,2023年,2月20日,星期三5.1开发平台简介

嵌入式软件开发环境依赖于嵌入式软件系统架构。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通信协议、数据库、浏览器和应用程序等。其中,嵌入式操作系统是用来支持嵌入式应用的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动、通信协议、图形用户界面等。

5.1.3软件开发环境第10页,共134页,2023年,2月20日,星期三5.1开发平台简介

目前流行的嵌入式操作系统主要有Linux、WindowsCE、VxWorks、ucOS等,由于Linux的源代码开放、内核可裁剪、支持多任务和安全可靠等诸多优点,使得它已成为一款应用广泛的操作系统。5.1.3软件开发环境第11页,共134页,2023年,2月20日,星期三5.1开发平台简介1、ADS开发环境

ADS(ARMDeveloperSuite,ARM开发环境)在没有硬件平台的情况下,可以提供软件模拟的方法进行软件开发,即ARMulate模式,在PC机上模拟调试。经模拟调试以后,当目标机硬件研制成功时,再利用ARM提供的JTAG端口将目标程序下载到目标机进行实时调试。

5.1.3软件开发环境第12页,共134页,2023年,2月20日,星期三5.1开发平台简介2、Linux交叉编译环境

对于以Linux作为操作系统的嵌入式系统开发,可以借助于PC机的丰富资源和强大功能,在PC机的Linux环境下进行应用程序的编写和交叉编译,把生成的目标程序通过串口和网口下载到目标机进行调试。这种开发模式的特点是,在开发过程的始终,宿主机和目标机都在一个强大的Linux网络之中。

5.1.3软件开发环境第13页,共134页,2023年,2月20日,星期三5.1开发平台简介

嵌入式系统的调试方式有多种,常见的有模拟器方式、监控器方式、仿真器方式和在线调试器方式四种。5.1.4嵌入式系统的调试方式第14页,共134页,2023年,2月20日,星期三5.1开发平台简介

1、模拟器方式

调试工具和待调试的应用软件都在宿主机上运行,通过软件手段模拟目标机的行为,达到程序调试的目的,此为模拟器方式。简单的模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存储空间和外设,进行语法和逻辑上的调试。

模拟器软件独立于微处理器硬件,一般与编译器集成在同一个环境中,是一种有效的源程序检验和测试工具。但值得注意的是,模拟器的功能毕竟是以一种处理器模拟另一种处理器的行为,在指令执行时间、中断响应、定时器处理等方面,有时会存在很大的差别。另外,它也无法实现嵌入式系统在实际运行中的真实状况。

ADS中的ARMulator模拟器就属于此种工具,它可以模拟开发各种ARM嵌入式处理器,具有指令和定时等模拟功能。5.1.4嵌入式系统的调试方式第15页,共134页,2023年,2月20日,星期三5.1开发平台简介

2、监控器方式

宿主机和目标机通过某种接口(通常是串口)连接,宿主机上提供调试界面,被调试程序下载到目标机上运行,这种调试方式属于监控器方式。

监控程序是一段运行于目标机上的可执行程序,主要负责监控目标机上被调试程序的运行情况,并在宿主机的控制下,及时反馈目标机的运行信息,与宿主机端的调试器一起完成对应用程序的调试。监控器方式操作简单易行,功能强大,不需要专门的调试硬件,适用面宽,已广泛应用于多种嵌入式系统的开发之中。但监控器调试主要用于调试目标机应用程序,不适宜调试目标机操作系统。5.1.4嵌入式系统的调试方式第16页,共134页,2023年,2月20日,星期三5.1开发平台简介

2、监控器方式

ARM公司的Angel是可以常驻在目标机Flash中的监控程序,只需通过串行口与宿机相连,就可以在宿主机上对基于ARM架构处理器的目标机进行监控式开发和调试。5.1.4嵌入式系统的调试方式第17页,共134页,2023年,2月20日,星期三5.1开发平台简介

3、仿真器方式

仿真器(In-CircuitEmulator,ICE)是一种完全仿造调试目标CPU设计的仪器,目标系统对用户来说是完全透明的、可控的。仿真器与目标机通过仿真头连接,与主机有串口、并口、以太网口或USB口等连接方式。仿真器可以真正地运行所有的目标CPU动作,并且可以在其使用的内存中设置非常多的硬件中断点,实时查看所有需要的数据,从而给调试过程带来很多便利。由于仿真器自成体系,调试时可以连接目标机,也可以不接目标机。5.1.4嵌入式系统的调试方式第18页,共134页,2023年,2月20日,星期三5.1开发平台简介

3、仿真器方式

使用ICE同使用一般的目标硬件一样,只是在ICE上完成调试后,需要把调试好的程序重新下载到目标系统上而已。由于ICE价格昂贵,而且每种CPU都需要一种与之对应的ICE,使得开发成本较高。5.1.4嵌入式系统的调试方式第19页,共134页,2023年,2月20日,星期三5.1开发平台简介

4、在线调试器方式

使用ICD(In-CircuitDebugger,在线调试器)和目标机的调试端口连接,发送调试命令和接收调试信息,可以完成必要的调试功能。一般情况下,在以ARM为CPU的目标机上采用JTAG边界扫描口进行调试。

使用合适的开发工具可以利用这些接口。例如,ARM目标机,可以将JTAG调试器接在目标机的JTAG口上,宿主机通过JTAG口与ARM处理器核进行通信。由于JTAG调试的目标程序是在目标机上执行,因此,这种方式更接近于目标硬件。该方式是目前采用较多的一种调试方式。5.1.4嵌入式系统的调试方式第20页,共134页,2023年,2月20日,星期三5.1开发平台简介

由于嵌入式系统中微处理器的多样性,嵌入式系统的可移植性显得更加重要,所以,有些嵌入式操作系统的内核明确分成两层,其上层一般称为内核,而低层则称为硬件抽象层或硬件适配层,更通俗地称为BSP(BoardSupportPackage,板级支持包)。BSP是操作系统与目标硬件的中间接口,是软件包中具有平台依赖性的一部分。5.1.5板级支持包第21页,共134页,2023年,2月20日,星期三5.1开发平台简介

BSP将实时操作系统和目标应用环境的硬件连接在一起,充分利用硬件设备的特性,其功能主要包含以下两项:

1、在系统启动时,对硬件进行初始化

2、为驱动程序提供访问硬件的手段

开发一个性能稳定可靠、可移植性好、可配置性好、规范化的BSP将大大提高嵌入式操作系统各方面的性能。在目标环境改变的情况下,嵌入式操作系统的BSP只需要在原有基础上稍作调整,就可以适应新的目标环境,这无疑将显著缩短开发周期,提高开发效率。5.1.5板级支持包比如对设备的中断,对CPU、寄存器和内存的分配等进行操作。这个工作是比较系统化的,要根据CPU的启动、操作系统的初始化和系统的工作流程等多方面要求来决定。驱动程序经常要访问设备的寄存器,通过对设备的寄存器进行操作而达到控制设备的目的。如果目标系统采用统一编址的方式,开发者在驱动程序中用C语言的函数就可访问。但是,如果目标系统采用独立编址方式,那么C语言就不能直接访问设备中的寄存器,只有用汇编语言编写的函数才能对外围设备寄存器的访问。BSP就是为上层的驱动程序提供访问硬件设备寄存器的函数包。

第22页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

嵌入式系统开发离不开具体的硬件平台。基于ARM2410S嵌入式微处理器,平台由微处理器核心板、主板及LCD三部分组成,具有丰富的接口资源和良好的可扩展性,为嵌入式系统设计提供了一种参考方案。虽然如此,其开发理念和开发方法在其他硬件平台上也是相似的,只是地址分配、接口方式和存储处理稍有区别而已。在掌握一般开发方法的基础上,其开发技术可以方便地用于其他任何一种平台。第23页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

UP-NETARM2410-S开发平台基于ARM2410S嵌入式微处理器,采用核心板加主板的结构方式,主工作频率202M,可移植Linux、WindowsCE、VxWorks和ucOS等操作系统,支持QT/E等嵌入式图形界面,包括完整的驱动程序。

5.2.1系统概述第24页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.1系统概述第25页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.1系统概述第26页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.2核心板结构UP-NETARM2410-S开发平台核心板资源主要有:(1)CPU:ARM920T结构芯片,工作频率202MHz,SAMSUNG公司的S3c2410X(2)FLASH:64MBNAND型,型号为SAMSUNG的K9F1208(3)RAM:64MBSDRAM,型号为HY57V561620AT-H(4)200管脚精密插座

第27页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.2核心板结构由于ARM2410S微处理器位于核心板中,通过200引脚的插座引出CPU的接口线,电路板布线比较复杂,所以采用6层印刷电路板布线。第28页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.3主板结构UP-NETARM2410-S开发平台主板资源主要有:(1)USB口:包括一个USBDevice接口和4个USBHost接口。前者直接来自处理器,后者是处理器的Host接口经过由AT43301构成的USBHUB电路扩展出来的4个Host接口。(2)JTAG调试口:20针标准口,14针简易口。(3)AUDIO口:44.1KHz音频,采用UDA1341芯片构成,可放音和录音,通过IIS总线连接到处理器,具有功放电路驱动喇叭,板载MIC和音频IO插座。第29页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.3主板结构UP-NETARM2410-S开发平台主板资源主要有:(4)鼠标、键盘和IC卡接口:通过一片ATMEGA8单片机作为控制器,驱动PS2接口、IC卡接口和板载KEYPAD。ATMEGA8单片机通过IIC总线和ARM处理器连接。(5)AD口:3个电位器控制输入,8个通道经过跳线设置可全部作为外部模拟电压输入,同时在板上设模拟电压输入专用接口,由S3C2410芯片管脚引出。(6)DC/STEP电机:直流电机信号来自PWM输出,步进电机信号来自EXIO扩展,EXIO扩展电路由74HC573构成,分配专用地址段,和IDE接口在同一BANK。第30页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.3主板结构UP-NETARM2410-S开发平台主板资源主要有:(7)IDE卡接口:IDE接口直接出自扩展总线,由软件完成驱动控制。(8)CF卡接口:PCMCIA模式的CF卡接口。(9)SD卡插座:直接来自s3c2410的SD控制器。(10)PCMCIA插座:PCMCIA接口挂在扩展总线上,通过EPM3128A100CPLD和HC245芯片等实现总线隔离和控制,并需要配置专用的电源控制芯片TPS2211。(11)IrDA/RS485:利用UART2实现,分别经过TFDU4100收发器和MAX485芯片完成。要作IrDA实验,必须将UART2设置到IrDA电路上,而不能同时作RS485实验。第31页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.3主板结构UP-NETARM2410-S开发平台主板资源主要有:(12)CAN总线:由控制器MCP2510和驱动器TJA1050构成。(13)DA电路:设置两个10位DAC端口,采用MAX504接SPI总线,输出两路模拟电压(预留一路)。(14)串口:包括两个RS232接口,处理器的UART0和UART1经过MAX3232芯片电压转换后用DB9插座输出。(15)以太网卡接口:包括两个相同的网卡电路,芯片型号AX88796,10M/100M自适应(预留一个)。第32页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.3主板结构UP-NETARM2410-S开发平台主板资源主要有:(16)168Pin的扩展插座:该插座和计算机的内存条插座规格一致,用户可以据此设计合适的扩展板。扩展槽上包含扩展总线的所有信号,可复用的系统资源以及开发平台尚未使用的空置资源。(17)显示接口:采用8寸16bitTFTLCD显示器,640×480分辨率,型号是LQ080V3DG01。S3C2410处理器内含LCD控制器,这使得LCD部分的电路非常简单,LCD控制器的信号线经过驱动电路后即可连接LCD模块。(18)触摸屏:采用2410CPUAD单元的接口方案,可实现触摸屏功能。第33页,共134页,2023年,2月20日,星期三5.2UP-NETARM2410-S开发平台

5.2.4地址空间分配UP-NETARM2410-S拥有64MBNANDFLASH和64MBSDRAM,其地址空间分配如表所示开始地址区域大小用途说明0x000000000x00020000128KBootLoader存储区0x000300000x001000001MLinux内核存储区0x001300000x003000003MLinux根文件系统存储区0x004300000x0200000032MWinCE存储区0x300000000x0400000064MSDRAM区第34页,共134页,2023年,2月20日,星期三5.3ADS开发环境

ADS全称为ARMDeveloperSuite,是ARM公司推出的新一代ARM集成开发工具,可以完成ARM应用软件的编辑、编译和链接等工作,支持包括Windows和Linux在内的多种操作系统。第35页,共134页,2023年,2月20日,星期三5.3ADS开发环境

ADS由三部分组成:命令行工具集成开发环境实用程序和支持软件5.3.1ADS的组成第36页,共134页,2023年,2月20日,星期三5.3ADS开发环境

1.命令行工具命令行工具通过命令方式实现嵌入式应用程序的编译与调试,也可以将许多编译命令编写在一个脚本文件中,通过运行脚本文件自动完成编译工作。命令行工具可分为三个部分:编译器、链接器和符号调试器。5.3.1ADS的组成第37页,共134页,2023年,2月20日,星期三5.3ADS开发环境

1.命令行工具1)编译器ADS提供多种编译器,以支持ARM和Thumb指令的编译,主要有:Armcc:ARMC编译器,用于将用ANSIC编写的程序编译成32位ARM指令代码。Tcc:ThumbC编译器。Armcpp:ARMC++编译器。Tcpp:ThumbC++编译器。Armasm:ARM和Thumb的汇编语言编译器。5.3.1ADS的组成第38页,共134页,2023年,2月20日,星期三5.3ADS开发环境

1.命令行工具2)链接器armlink是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目标文件,以供进一步的链接。5.3.1ADS的组成第39页,共134页,2023年,2月20日,星期三5.3ADS开发环境

1.命令行工具3)符号调试器armsd是ARM和Thumb的符号调试器。借助armsd,可以进行源码级的程序调试,也可以进行单步调试、设置断点、查看变量和内存单元的内容。5.3.1ADS的组成第40页,共134页,2023年,2月20日,星期三5.3ADS开发环境

2.GUI集成开发环境GUI开发环境包含CodeWarrior和AXD两部分,前者是集成开发工具,后者是可视化调试工具。CodeWarrior集成开发环境为管理和开发应用项目提供了良好的图形用户界面,使用CodeWarrior可以为ARM和Thumb处理器开发用C、C++或者汇编语言编写的程序代码。在整个开发周期中,开发者无需离开CodeWarrior,就能编写和编译基于ARM的嵌入式程序。5.3.1ADS的组成第41页,共134页,2023年,2月20日,星期三5.3ADS开发环境

2.GUI集成开发环境AXD(ARMeXtendedDebugger,ARM扩展调试器),是可视化的调试工具。AXD本身是一个软件,开发者通过这个软件可以对包含有调试信息的、正在运行的ARM可执行代码进行程序调试,如变量的查看,断点的设置等。5.3.1ADS的组成第42页,共134页,2023年,2月20日,星期三5.3ADS开发环境

3.实用工具ADS提供一组实用工具以辅助ARM程序的编写与调试,主要有:(1)Flashdownloader:该工具用于把二进制映象文件从宿主机下载到ARM目标机上的Flash存储器中。(2)fromELF:这是Arm映象文件转换工具,可将ELF格式的文件转换为各种格式的输出文件,包括BIN格式映像文件等。FromELF命令也能够为输入映像文件产生文本信息,例如,代码和数据长度。5.3.1ADS的组成第43页,共134页,2023年,2月20日,星期三5.3ADS开发环境

3.实用工具(3)armar:ARM库函数生成器,它可将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个ELF文件。5.3.1ADS的组成第44页,共134页,2023年,2月20日,星期三5.3ADS开发环境

4.支持软件ADS为用户提供ARMulator软件,使用户可以在软件仿真的环境下调试用户应用程序。ARMulator是一个ARM指令集仿真器,集成在ARM的调试器AXD中,提供对ARM处理器的指令集仿真,为ARM和Thumb提供精确模拟,使用户可以在硬件尚未做好的情况下,开发应用程序代码。5.3.1ADS的组成第45页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用

CodeWarrior提供一个简单通用的图形化用户界面,用于管理ARM软件开发项目。可以以ARM和Thumb处理器为对象,利用CodeWarrior开发C、C++和ARM汇编程序。第46页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程创建项目工程是嵌入式实际开发中必不可少的一部分,工程将所有的源码文件组织在一起,并能够决定最终生成文件存放的路径、输出的格式等。在CodeWarrior中新建一个工程的方法有两种,可以在工具栏中单击“New…”按钮,也可以在“File”菜单栏中选择“New…”菜单项。第47页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程

在这个对话框中为用户提供了7种可选择的工程类型:ARMExecutablImageARMObjectLibraryEmptyProjectMakefileImporterWizardThumbARMExecutableImageThumbExecutableimageThumbObjectLibraryARMExecutablImage:用于由ARM指令代码生成一个ELF格式的可执行映像文件。

ARMObjectLibrary:用于由ARM指令代码生成一个armar格式的目标文件库EmptyProject:用于创建一个不包含任何库或源文件的空白工程。

MakefileImporterWizard:用于将VisualC的nmake或GNUmake文件转入到CodeWarriorIDE工程文件。ThumbARMExecutableImage:用于由ARM指令和Thumb指令的混合代码生成一个可执行的ELF格式的映像文件。ThumbExecutableimage:用于由Thumb指令创建一个可执行的ELF格式的映像文件。

ThumbObjectLibrary:用于由Thumb指令的代码生成一个armar格式的目标文件库。

第48页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程

选择ARMExecutablImage,然后在Projectname里输入工程文件名,在Location项中单击Set按钮,选择项目工程存放位置,如D:\ARMExam。最后单击“确定”按钮,即可创建一个新的名为Exam1的工程,工程文件的扩展名为.mcp。新工程创建以后,接着会弹出一个Exam1.mcp的工程管理窗口,包含3个标签页,分别为Files、LinkOrder、Targets,默认显示第一个标签页Files,用于管理工程源文件。第49页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1、创建项目工程

工程文件只是一个项目管理系统。一个嵌入式应用工程通常由许多C、C++或ARM汇编语言编写的源程序组成。源程序的编写可以在Windows的记事本、Linux的vi等多种文本编辑器中实现,也可在CodeWarrior环境中创建。第50页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程单击菜单命令“File”|“New…”,打开如图所示的对话框,单击标签页“File”,在Filename文本框中输入要创建的源程序文件名,单击确定按钮,即可进入源程序编辑状态。第51页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程CodeWarrior提供的程序编辑器如图所示。第52页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程

源程序文件编辑好后,需要添加到工程中。鼠标在工程文件管理器窗口中右击,从弹出的快捷菜单中选择“AddFiles”,从而把源程序添加到工程中。当选中要添加的源文件时,会弹出一个对话框,询问用户把文件添加到何类目标中,一般选择DebugRel。第53页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用1.创建项目工程

三种选项的含义:DebugRel:使用该选项,在生成目标的时候,会为每一个源文件生成调试信息;Debug:使用该选项,会为每一个源文件生成最完全的调试信息;Release:使用该选项,编译时只产生可执行目标代码,不生成任何调试信息。第54页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程

在进行编译和链接前,首先需要进行环境配置,生成目标文件。单击“Edit”菜单栏下的“DebugRelSettings…”菜单项,打开DebugRel设置对话框第55页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程其中左边部分是可设置的模块,右边部分为每一模块可设置的项目,它包括如下6大模块:1)Target设置,默认2)LanguageSettings设置,ARM920T3)Linker设置4)Editor设置,默认值5)Debugger设置,默认值AXD6)ARMFeatures设置第56页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程在Linker设置中,标签页Output中的Linktype提供了3种链接方式。Partial方式表示链接器只进行部分链接,经过部分链接生成的目标文件,可以作为以后进一步链接时的输入文件。Simple方式是默认的链接方式,也是使用最多的链接方式,它链接生成简单的ELF格式的目标文件,使用的是链接器选项中指定的地址映射方式。Scattered方式使得链接器根据scatter格式文件中指定的地址映射,生成复杂的ELF格式的映像文件。第57页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程在选中Simple方式后,会出现Simpleimage选项,其中包含三种可设置项目:ROBase:这个文本框设置使包含有RO段的加载域和运行域为同一个地址,默认是0x8000。用户要根据自己硬件的实际SDRAM的地址空间来修改这个地址,保证在这里填写的地址是程序运行时,SDRAM地址空间所能覆盖的地址。第58页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程RWBase:这个文本框设置了包含RW和ZI输出段的运行域地址。如果选中split选项,链接器生成的映像文件将包含两个加载域和两个运行域,此时,在RWBase中所输入的地址为包含RW和ZI输出段的域设置了加载域和运行域地址。Ropi:选中这个设置将告诉链接器,使包含有RO输出段的运行域位置无关。使用这个选项,链接器将检查各段之间的重定址是否有效,同时确保任何由armlink自身生成的代码是与只读位置无关的。第59页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程Rwpi:选中该选项将会告诉链接器,使包含RW和ZI输出段的运行域位置无关。该选项要求RWBase有值,如果没有给它指定数值的话,默认为0值。如果这个选项没有被选中,域就标识为绝对。每一个可写的输入段必须是读写位置无关的。SplitImage:选择这个选项把包含RO和RW输出段的加载域分成2个加载域:一个是包含RO输出段的域,一个是包含RW输出段的域。这个选项要求RWBase有值,如果没有给RWBase选项设置,则默认值为RWBase0。第60页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程Relocatable:选择这个选项将保留映像文件的重定址偏移量。这些偏移量为程序加载器提供了有用信息。在Options选项卡中,需注意的是Imageentrypoint文本框。该文本框用来指定映像文件的初始入口点地址值,当映像文件被加载程序加载时,加载程序会跳转到该地址去执行。第61页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程在Linker模块中还有一个ARMfromELF选项,可设置链接器、编译器或汇编器的输出代码格式转换。例如,将ELF格式的可执行映像文件转换成可以烧写到Flash中的二进制格式文件;在Target设置中选择了Post-linker,可以使用反汇编选项。在Outputformat下拉列表中,为用户提供了多种可以转换的目标格式,在ARM开发中,一般选择Plainbinary,这是一个二进制格式的可执行文件,可以被烧写到目标机的Flash中。

第62页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程对于UP-NETARM2410-S硬件平台而言,在Simple链接方式下,ROBase应为0x30008000,是目标机上SDRAM的入口地址,RWBase应为0x30200000,目标机上系统可读写的内存入口地址。也就是说,在UP-NETARM2410-S目标机上,0x30008000~0x30200000之间是只读区域,存放程序代码段,而在0x30200000开始的区域是程序的数据段。对于读者使用的不同型号的目标机,应根据具体情况进行相应设置。第63页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程

编译和链接的操作步骤为:单击CodeWarriorIDE“Project”菜单栏下的“make”菜单项,或单击工程窗口上方的“Make”按钮,就可启动对工程的编译和链接。整个编译链接的输出信息将显示窗口中。第64页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.2CodeWarrior的配置与使用2.编译和链接项目工程编译和链接完成后,在工程Exam1所在的目录下,会生成一个名为Exam1_data的目录,在这个目录下不同类别的编译目标文件存放在相应目录中。使用DebugRel目标,生成的最终文件都应该在该目录下。进入DebugRel目录后,make生成的含可调试信息的映像文件Exam1.axf和二进制文件。映像文件用于调试,二进制文件可以烧写到S3C2410X的Flash中运行。第65页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用AXD是ADS系统中独立于CodeWarrior的调试软件,支持软件模拟和硬件仿真。AXD能够装载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、寄存器和内存数据等。无论利用模拟器进行调试,还是借助仿真器进行调试,前提是在CodeWarrior环境中已经编写、编译、链接生成了含有调试信息的可执行ELF格式的映象文件。第66页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用1.调试环境

启动调试环境的方法常用三种:一是单击工程窗口上方的“Debug”按钮,二是选择CodeWarrior中“Project”菜单栏下的“Debug”菜单项,三是通过Windows的开始菜单实现。第67页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用2.模拟调试在AXD中,利用系统提供的ARMulator模拟器,可以在没有目标机的情况下对嵌入式源程序进行调试。模拟调试操作步骤如下:(1)配置模拟器在AXD窗口中,选择“options”|“ConfigureTarget”菜单命令,弹出“ChooseTarget”对话框,在该对话框中选择“ARMUL”方式并按“OK”按钮。第68页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用2.模拟调试(2)打开调试文件在AXD窗口上,选择“File”|“Loadimage…”菜单项,打开LoadImage对话框,找到要调试装载的.axf映像文件,单击“打开”按钮,把映像文件装载到目标内存中。在所打开的映像文件中会有一个蓝色的箭头指示当前执行的位置。(3)全速运行选择“Execute”菜单栏下的“Go”命令,将全速运行调试程序。要想进行单步的代码调试,可在“Execute”菜单中选择“Step”选项,或按下F10快捷键,窗口中蓝色箭头会发生相应的移动。第69页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用2.模拟调试(4)设置断点将光标移到要进行断点设置的代码处,在“Execute”菜单栏中选择“ToggleBreakpoint”命令或按F9键,就会在光标所在行的起始位置出现一个红色实心圆点,表示该处已设为断点。(5)查看寄存器值查看寄存器值在实际的嵌入式开发调试中经常使用,方法为从“ProcessorView”菜单栏中选择“Register”选项。

第70页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用2、模拟调试(6)查看存储器值从“ProcessorView”菜单栏中选择“Memory”选项,可以打开存储器窗口,在存储器单元中保存的数据一目了然。(7)查看变量值查看某些变量的值,鼠标选中变量,然后右击,在弹出的对话框中选择Watch,将会显示指定变量的详细信息。

第71页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试借助于JTAG调试器,可以对实际的目标机进行在线调试。操作步骤如下:1)连接JTAG调试器

第72页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试

2)安装仿真驱动H-JTAG是一款简单易用的调试代理软件,功能和流行的MULTI-ICE类似。

第73页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试

3)添加JTAG硬件驱动程序选择“控制面板”|“添加硬件”向导按钮,启动添加硬件向导,根据向导提示单击“下一步”,

最后指定驱动程序的存放路径(LPTJtag.inf)(此文件在安装目录..\UarmJtag2.0\driver\中),单击“完成”按钮,即完成JTAG驱动程序的安装。第74页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试

4)配置JTAG第一步,双击桌面上的H-JTAG图标,启动H-JTAG;第二步,设置并口。选择“Seting”|“portSeting”;第三步,设置JTAG引脚。选择“Seting”|“JTAGSeting”;。

第75页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试

4)配置JTAG第四步,配置目标机的一些参数。单击“Seting”|“TargetSeting”;全部配置完成以后,连接好宿主机和目标机后上电,单击“Operation”|“DetectTarget”菜单命令,将打开如图所示窗口。第76页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试5)配置调试代理进入AXD环境,选择“options”→“ConfigureTarget”菜单命令,在弹出的窗口中点击“Add”按钮,然后会看到要求选择DLL文件的对话框。在对话框中选择H-JTAG安装目录下的H-JTAG.DLL,再点击“OK”按钮,H-JTAG配置全部完毕。第77页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.3AXD的配置与使用3.在线调试

(6)在线调试与模拟调试相似,装载映像文件,根据需要执行全速、单步、断点运行,查看寄存器、存储器和变量值等。此时所进行的所有操作,都是针对目标机的操作。第78页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

在ADS开发环境的体系架构中,DNW既可作为串口信息观察窗口,又可作为宿主机上的USB下载器使用,而且无需安装,是一个小巧、方便的从宿主机连接目标机的工具。第79页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

1.DNW的配置先双击DNW.exe,打开DNW窗口,选择菜单命令“Configuration”|“option”,打开如图5-33所示的配置参数窗口,

按图所示设置串口参数和USB下载地址,最后单击“OK”按钮完成设置。第80页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

2.安装USB驱动

将USB线连接宿主机和目标机后,宿主机中的Windows会提示发现新硬件,单击该硬件图标手动安装,并将安装路径指向驱动程序,系统将自动找到驱动文件并安装驱动。成功安装后,DNW窗口内将显示“USBhostisconnected.Waitingadownload.”,而标题栏中将显示[USB:OK]。第81页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

3.DNW的使用

在基于ADS的嵌入式系统开发中,DNW主要用途有两种,即串口信息观察与USB下载。

第82页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

3.DNW的使用(1)串口控制

用串口线连接好目标机的COM1口和宿主机的COM1口,启动DNW,单击菜单项“SerialPort”|“connect”,然后在DNW的标题栏中即可看到“COM1115200bps”。此时打开目标机电源,在DNW上即可看到目标机回显的启动信息。

如果目标机Flash中已经下载了vivi或Linux操作系统,则可在DNW中远程操作目标机。第83页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.4DNW的配置与使用

3.DNW的使用(2)程序下载借助USB线,可将已经编译好的目标文件.bin下载到目标机的SDRAM中,操作步骤如下:先在DNW中单击菜单命令“USBPort”|“Transmit”,然后选中要下载的文件,最后单击“打开”按钮,即可进行目标程序的下载。第84页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.5超级终端的配置与使用

Windows自带的超级终端也是一款用于通过串口方式回显目标机显示信息的工具软件,配置步骤如下:(1)在宿主机中,选择菜单命令“开始”|“程序”|“附件”|“通讯”|“超级终端”,打开连接描述对话框。第85页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.5超级终端的配置与使用(2)选择一个显示图标,并在名称文本框中输入连接名称,如ARM,点击“确定”按钮,将打开“连接到”对话框,在“连接时使用”下拉列表中选择一个合适的COM口,确定后将打开COM参数设置对话框。第86页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.5超级终端的配置与使用(2)选择一个显示图标,并在名称文本框中输入连接名称,如ARM,点击“确定”按钮,将打开“连接到”对话框,在“连接时使用”下拉列表中选择一个合适的COM口,确定后将打开COM参数设置对话框,如图所示。第87页,共134页,2023年,2月20日,星期三5.3ADS开发环境

5.3.5超级终端的配置与使用

超级终端的使用方法与DNW相似,双击保存的快捷图标“ARM”,使用串口线将目标机与宿主机连接,并打开目标机电源的情况下,超级终端窗口中将显示目标机的工作信息。此时可在超级终端窗口下方便地远程操作目标机。第88页,共134页,2023年,2月20日,星期三5.4Linux开发环境

基于ADS的开发环境集成度较高,全图形操作界面,实现ARM汇编语言和C语言的编程方便、快捷,但对目标机的实时调试不够直接。由于Linux源代码全部公开,任何人都可以修改并在GNU(GeneralPublicLicense)通用公共许可证下发行,因此,基于Linux的开发环境在开发以Linux作为操作系统的嵌入式应用中具备得天独厚的优势,因而得到许多开发者的认同。第89页,共134页,2023年,2月20日,星期三5.4Linux开发环境

基于Linux的典型开发环境架构应用软件的编写、编译和链接在虚拟机Linux系统中进行。由于嵌入式系统的操作系统是Linux,应用软件的开发也在相同系统中,因而,处理问题的思路、方法最接近目标机。5.4.1环境架构第90页,共134页,2023年,2月20日,星期三5.4Linux开发环境

Xmanager是一款通信路由工具软件,它可以同时与多个系统之间建立通信联系。借助于Xmanager这一平台,一方面可以连接到宿主机的Linux,另一方面也可以直接连接到目标机的Linux。Xmanager运行在PC机的Windows操作系统中,只要在Windows中开出两个窗口,一个连接宿主机的Linux,另一个连接目标机的Linux,通过窗口切换就可以方便地在宿主机和目标机之间切换了。5.4.1环境架构第91页,共134页,2023年,2月20日,星期三5.4Linux开发环境

为了能把在宿主机上编译好的应用程序下载到目标机进行调试,同时避免反复烧写目标机Flash,在这一开发架构中,通过网络线把宿主机与目标机相连,使两者在同一网段中,进而通过网络配置,在宿主机上建立共享目录,使目标机可以共享宿主机上编译好的目标程序。这样,在目标机上调试程序时,就不必把宿主机上的程序下载到目标机上,其宿主机上的共享目录已经可以看作目标机的存储器了。5.4.1环境架构第92页,共134页,2023年,2月20日,星期三5.4Linux开发环境

1.硬件连接

将宿主机和目标机通过网线和串口线相连。其中,串口线用于实现Xmanager与目标机的通信,网线用于实现虚拟机的Linux与目标机的Linux之间的通信。5.4.2安装与配置第93页,共134页,2023年,2月20日,星期三5.4Linux开发环境

2.虚拟机的安装与配置VMware是一个虚拟机软件,它可以在一台PC机上同时运行两个或更多操作系统。Windows+VMware组合对于实际开发嵌入式Linux应用来说比较广泛,因为在VMware中可以安装Linux系统,实现Linux系统开发,几乎和在Linux系统下开发没有什么区别,并且其最大好处是在Linux系统和Windows系统之间切换非常方便。

5.4.2安装与配置第94页,共134页,2023年,2月20日,星期三5.4Linux开发环境

2.虚拟机的安装与配置

VMware安装和配置步骤如下:

(1)安装虚拟机系统双击VMware安装盘中的setup.exe文件,按系统提示多次点击“Next”按钮,进行默认安装即可。(2)安装汉化环境初始安装的VMware是英文界面的,如果需要汉化,可安装汉化包,操作步骤为:双击汉化包软件setup_tracky.exe,按系统提示进行默认安装即可。5.4.2安装与配置第95页,共134页,2023年,2月20日,星期三5.4Linux开发环境

2.虚拟机的安装与配置

VMware安装和配置步骤如下:

(3)新建虚拟机同一个VMware中可以运行多个操作系统,在安装Linux之前,必须首先新建一个用于运行Linux的虚拟机,操作步骤如下:

先选择“开始”|“程序”|“VMware”|“VNwareWorkstation”菜单命令,启动Vwware。然后选择“文件”|“新建”|“虚拟机”,打开“新建虚拟机向导”对话框,点击“下一步”按钮,选择“典型”方式,再点击“下一步”按钮,进入“选择一个客户机操作系统”界面。5.4.2安装与配置第96页,共134页,2023年,2月20日,星期三5.4Linux开发环境

2.虚拟机的安装与配置

VMware安装和配置步骤如下:

(3)新建虚拟机

此处选择Linux操作系统,并确定版本为RedHatLinux。点击“下一步”按钮后,进一步设定创建的位置,比如在D:\RHL,默认使用桥接网络连接方式,完成Linux虚拟机的新建。5.4.2安装与配置第97页,共134页,2023年,2月20日,星期三5.4Linux开发环境

2.虚拟机的安装与配置

VMware安装和配置步骤如下:

(4)配置虚拟机默认安装的虚拟机可以重新配置,比如添加串口,设置共享文件夹,改变光驱使用方式等。实现这些配置的操作步骤如下:在VMware主窗口中,选择“虚拟机”菜单栏下的“设置”命令,打开“虚拟机设置”对话框。在“硬件”标签页中点击“添加”按钮,可添加新硬件如串口。在“选项”标签页中,可配置数,如设置虚拟机的共享文件夹等,根据具体需求进行设置。5.4.2安装与配置第98页,共134页,2023年,2月20日,星期三5.4Linux开发环境

3.Linux的安装与配置

Linux操作系统有多种版本,嵌入式系统开发中一般使用RedHatLinux。RedHatLinux原版安装程序可以在很多网站上下载,有光盘安装版和ISO镜像安装版两种。

5.4.2安装与配置第99页,共134页,2023年,2月20日,星期三5.4Linux开发环境

3.Linux的安装与配置

操作步骤如下:(1)设置虚拟机光驱工作方式根据安装程序的版本形式,对虚拟机光驱进行设置。如果安装盘是可执行文件,则默认物理光驱;如果安装盘是ISO镜像文件,则设置虚拟光驱连接方式为“使用ISO镜像”。(2)安装Linux启动虚拟机,将安装光盘插入光驱,依次按照提示完成安装。5.4.2安装与配置第100页,共134页,2023年,2月20日,星期三5.4Linux开发环境

3.Linux的安装与配置

操作步骤如下:(3)配置串口系统安装好以后,需要配置好开发环境才能与目标机进行通信。利用Minicom进行配置,操作步骤如下:先选择工具栏上的“终端仿真器”,打开Shell窗口,在Shell命令提示符下输入Minicom命令,弹出Minicom配置菜单,选择串口,设置波特率为115200,8N1,设置HardwareFlowControl模式为No。完成设置后,按Enter键返回上一层菜单,再保存设置。5.4.2安装与配置第101页,共134页,2023年,2月20日,星期三5.4Linux开发环境

3.Linux的安装与配置

操作步骤如下:

(4)配置网络服务按第四章第四节的操作步骤,完成Samba和NFS网络服务的配置。5.4.2安装与配置第102页,共134页,2023年,2月20日,星期三5.4Linux开发环境

4.Xmanager的安装与配置

Xmanager的安装程序是一个自解压可执行文件,其安装与配置的操作步骤如下:

(1)安装双击xme20.exe图标,打开安装向导窗口,按默认方式安装即可。

5.4.2安装与配置第103页,共134页,2023年,2月20日,星期三5.4Linux开发环境

4.Xmanager的安装与配置

(2)配置虚拟机连接在宿主机的Windows桌面上,选择“开始”|“程序”|“XmanagerEnterprise”|“Xshell”菜单命令,打开Xshell主窗口,在Xshell窗口中,选择“File”|“New”菜单命令,新建一个虚拟机连接。5.4.2安装与配置第104页,共134页,2023年,2月20日,星期三5.4Linux开发环境

4.Xmanager的安装与配置

(2)配置虚拟机连接其中,主要选项设置如下:Name:标示到虚拟机Linux的名称,如VMware。Host:虚拟机中Linux网卡的IP地址。UserName:登录虚拟机中Linux的用户名,如root。Password:登录用户的密码。其余可取默认值。5.4.2安装与配置第105页,共134页,2023年,2月20日,星期三5.4Linux开发环境

4.Xmanager的安装与配置

(3)配置目标机连接类似Linux连接的配置方法,在新建连接的对话框中,选择连接方式“Method”为“SERIAL”,并点击“Setup”按钮,从打开的对话框中配置串行口的波特率为115200,8N1,其余配置与串行口配置相同。(4)测试连接配置完成后,可以测试连接状况,操作步骤如下:打开目标机电源,启动宿主机上的Linux虚拟机,打开Xshell窗口,选择VMware连接项,点击“Connect”按钮,若能出现如图所示的信息,则说明XManager与Linux虚拟机连接正常。5.4.2安装与配置第106页,共134页,2023年,2月20日,星期三5.4Linux开发环境

4.Xmanager的安装与配置

5.4.2安装与配置

在Xmanager管理器窗口中,选择目标机连接项,点击“Connect”按钮,若能出现如图5-49所示的信息,则说明XManager与目标机连接正常。至此,Xmanager的安装与配置完成。

第107页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在嵌入式Linux应用系统开发中,就是在宿主机上编译可在目标机上运行的代码。交叉编译环境是一个由编译器、连接器和解释器组成的综合环境。建立交叉编译环境的方法很多,不同的体系结构,不同的操作内容,甚至不同的内核版本,都会用到不同的交叉编译器。第108页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链Crosstool交叉编译器,是由一组程序组成,包括针对目标系统的编译器gcc、目标系统的二进制工具binutils、目标系统的标准c库glibc和目标系统的Linux内核头文件等,它不仅可以编译Linux操作系统下运行的应用程序、编译Linux本身,还可以作交叉编译,编译运行于其他CPU上的程序。第109页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链1.下载资源文件Crosstool是一组脚本工具集,下载后,先在/home文件夹下建一个交叉编译工具目录/home/downloads,将这组工具包文件拷在该目录中。然后打开“终端”程序,进入/home/downloads目录,在其中解压crosstool-0.42.tar.gz,命令如下:#cd/home#mkdirdownloads#cddownloads#tar–xvzfcrosstool-0.42.tar.gz第110页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链2.建立脚本文件在crosstool-0.42文件夹中,可以看到有很多的.sh脚本和.dat配置文件,这些都是对应不同CPU的交叉编译脚本文件。找到针对S3c2410的脚本文件demo-arm9tdi.sh,在vi中将其打开:…set-exTARBALLS_DIR=$HOME/downloads#定义工具链源码存放目录RESULT_TOP=/opt/crosstool#定义工具链安装目录exportTARBALLS_DIRRESULT_TOP…第111页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链2.建立脚本文件在crosstool-0.42文件夹中,可以看到有很多的.sh脚本和.dat配置文件,这些都是对应不同CPU的交叉编译脚本文件。找到针对S3c2410的脚本文件demo-arm9tdi.sh,在vi中将其打开:…set-exTARBALLS_DIR=$HOME/downloads#定义工具链源码存放目录RESULT_TOP=/opt/crosstool#定义工具链安装目录exportTARBALLS_DIRRESULT_TOP…检查工具链源码存放目录和工具链安装目录的定义与用户实际存放是否一致。若存在差别,可修改保存。第112页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链3.建立配置文件在demo-arm9tdi.sh脚本文件中,注明了需要用arm9tdmi.dat和gcc-3.4.6-blibc-2.3.2.dat两个文件,这两个文件是作为crosstool的编译配置文件。第113页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链3.建立配置文件arm9tdmi.dat主要用于定义配置文件,定义生成编译工具链的名称,定义编译选项等。文件内容如下:KERNELCONFIG=`pwd`/arm.configTARGET=arm-9tdmi-linux-gnuGCC_EXTRA_CONFIG="--with-cpu=arm9tdmi--enable-cxx-flags=-mcpu=arm9tdmi"TARGET_CFLAGS="-O"第114页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链3.建立配置文件gcc-3.4.6-blibc-2.3.2.dat文件主要用于定义编译过程中所需要的库及它定义的版本。该文件内容如下:BINUTILS_DIR=binutils-2.15GCC_DIR=gcc-3.3.6GLIBC_DIR=glibc-2.3.2GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2LINUX_DIR=linux-2.6.12LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0文件中所列出的这些文件名和版本与实际情况要一致,确保这些文件存放在/home/downloads下,并且没有解压。第115页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链4.执行脚本文件当crosstool脚本文件、配置文件和源文件都准备好以后,可以运行demo-arm9tdi.sh来编译交叉编译工具。打开一个终端窗口,进入/home/downloads/crosstool-0.42目录,输入以下命令:$./demo-arm9tdi.sh经过较长时间的编译以后,会在/mnt/crosstool目录下生成新的交叉编译工具。第116页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链4.执行脚本文件编译后的交叉编译工具:arm-linux-addr2linearm-linux-g++arm-linux-ldarm-linux-sizearm-linux-ararm-linux-gccarm-linux-nmarm-linux-stringsarm-linux-asarm-linux-gcc-3.4.6arm-linux-objcopyarm-linux-striparm-linux-c++arm-linux-gccbugarm-linux-objdumpFix-embedded-pathsarm-linux-c++filtarm-linux-gcovarm-linux-ranlib

arm-linux-cpparm-linux-gprofarm-linux-readelf

第117页,共134页,2023年,2月20日,星期三5.4Linux开发环境

5.4.3建立交叉编译工具链5.添加环境变量最后需要将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论