嵌入式交叉开发环境的搭建_第1页
嵌入式交叉开发环境的搭建_第2页
嵌入式交叉开发环境的搭建_第3页
嵌入式交叉开发环境的搭建_第4页
嵌入式交叉开发环境的搭建_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

主要内容:(1)嵌入式ARM-Linux平台的体系结构;(2)交叉开发的相关概念与工具软件;(3)嵌入式Linux开发的NFS配置;北华航天工业学院房好帅fanghaoshuai@第1部分嵌入式交叉开发环境的搭建(1)能够正确编译嵌入式ARM-Linux版本的“helloworld”程序并运行能力目标:1.1嵌入式ARM-Linux平台的体系结构嵌入式ARM-Linux系统的硬件构成以处理器为核心,扩展内存、外存、接口电路、电源电路、外部设备构成:北华航天工业学院房好帅fanghaoshuai@S3C2440处理器SoC芯片,包括ARM9CPU、一些外设接口,通过芯片内部总线AHB、APB总线连接:北华航天工业学院房好帅fanghaoshuai@比如实验室采用的开发板,主要硬件构成为:(1)S3C2440片上SDRAM控制器接口连接2片内存芯片,H57V2562GTR-60C,共计128MB(4)由于处理器芯片没有集成网卡接口,故需要扩展连接DM9000芯片,该芯片片选直接接在nGCS4,故可通过0x20000000和0x20000004地址访问其中的数据、命令寄存器;(处理器没有集成的接口需要扩展)(2)S3C2440片上NandFlash控制器接口连接1片K9F2G08U0B作为外存,256MB容量;(3)片上LCD、TS控制器接口连接4.3寸TFTLCD,分辨率480×272(外部设备);北华航天工业学院房好帅fanghaoshuai@S3C2440芯片集成了ARM920T核的CPU,需要关注其主要特性为:(1)5级指令流水线,指令、数据高速缓存都为16KB;(4)具备响应中断能力及其Tick时钟;鉴于以上特点,该芯片支持现代操作系统的特性,故可以移植Linux操作系统在其硬件运行。(2)具备MMU,支持页表及内存访问权限;(3)不同的工作状态:用户模式、特权模式;北华航天工业学院房好帅fanghaoshuai@(5)具备相关指令实现多任务互斥;对于ARM9系列的处理器:(1)ARM公司负责设计CPU核心,不生产芯片,官方网站可以下载ARM920TTechnicalReferenceManual文档,详细描述了ARM9CPU的特征;(2)S3C2440是SAMSUNG生产的ARM9处理器,购买了ARM9的设计,在CPU基础上增加了一些常见外设接口,集成在一个芯片上形成SoC,芯片的DataSheet可以从SAMSUNG官网得到;要想深入获取某个ARM芯片的详细信息,这两个文档是权威资料!北华航天工业学院房好帅fanghaoshuai@硬件平台上运行的软件系统存储在外存,包括3部分:(1)bootloader(引导加载程序)系统加电启动运行的一段程序,初始化设置处理器工作状态、系统时钟、内存、外存、串口、网口等必要的部件,将Linux内核从外存拷贝到内存,传递参数并启动内核;u-boot是现阶段最著名的开源bootloader,必须根据嵌入式硬件平台修改代码并编译才能运行,这个过程称为软件移植;北华航天工业学院房好帅fanghaoshuai@(2)linuxkernel(内核)内核实现了操作系统的核心功能,包括进程管理,存储管理,虚拟文件系统,网络协议等;北华航天工业学院房好帅fanghaoshuai@Linux内核源代码可以从下载,不能直接应用于ARM平台,必须经过移植:(1)与体系结构相关的代码,大多数是采用汇编语言编写,需要按照目标平台进行修改;(2)内核中大量的代码为设备驱动程序,需要根据开发的系统进行修改与剪裁;所幸的是,u-boot、kernel中已经有了目标平台的参照,比如samsung官方的开发板相关的代码,对比其中的不同,可以进行修改。北华航天工业学院房好帅fanghaoshuai@(3)filesystem(文件系统)Linux文件系统即用户可以操作的目录结构与文件,嵌入式系统需要根据具体情况进行文件系统的剪裁;(2)内核模块:Linux内核为单体结构,但提供了加载内核模块的机制,一些设备驱动以模块的形式视具体情况添加到文件系统中;文件系统中需要剪裁的项目:(1)共享库:glibc库一般是必须的,比如系统需要用户界面,需要将Qt界面库加入进来;北华航天工业学院房好帅fanghaoshuai@开源项目busybox可以进行编译生成供嵌入式Linux使用的文件系统。1.2交叉工具链与交叉开发环境北华航天工业学院房好帅fanghaoshuai@PC机软件开发从“源码程序”到“机器码文件”的过程,一般在本机编写代码,本机调试,本机运行;北华航天工业学院房好帅fanghaoshuai@嵌入式开发软件从“源码程序”到“机器码文件”的过程则明显不同,嵌入式平台由于资源所限一般不会安装开发调试环境,则需要在PC中进行编写代码与编译,在嵌入式平台上运行:北华航天工业学院房好帅fanghaoshuai@交叉开发环境建立交叉开发环境(CrossDevelopmentEnvironment)是嵌入式软件开发时的显著特点,交叉开发环境是指编译、链接和调试嵌入式软件的环境,通常采用宿主机/目标机模式。1.2.1交叉开发环境北华航天工业学院房好帅fanghaoshuai@交叉开发环境的组成要素:(1)宿主机(host):普通的PC机,要求具备串口、并口、USB接口、网络接口;(2)目标机(target):ARM开发板,要求具备串口、USB接口、网络接口;(3)交叉工具链(crosstoolschain):包括交叉编译器、交叉汇编器、交叉链接器,能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器;比如:ARM体系结构的gcc交叉开发工具链,至少要包括:arm-linux-gcc是交叉编译器,arm-linux-as是交叉汇编器,arm-linux-ld是交叉链接器;北华航天工业学院房好帅fanghaoshuai@1.2.2交叉调试交叉调试(CrossDebug)又称为远程调试(RemoteDebug),采用调试器控制目标机上被调试程序的运行,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能的调试方法。北华航天工业学院房好帅fanghaoshuai@交叉调试一般具有如下特点:(1)调试器连接在宿主机与目标机之间,宿主机中的调试软件可操作调试器,而被调试的程序则运行在开发板上(目标机);(2)调试器通过某种通信方式与被调试程序运行的开发板建立联系,如串口、并口、网络、JTAG接口等;(3)在目标机上一般会具备某种形式的调试代理,它负责与调试器通信完成对目标机上运行着的程序的调试。调试代理可能是硬件设备或软件;在进行ARM-Linux开发中,gdbserver运行在目标机,arm-linux-gdb运行在宿主机,双方通过网络进行交叉调试通讯。北华航天工业学院房好帅fanghaoshuai@1.2.3ARM-Linux交叉开发软件环境构建1、PC机安装LinuxPC安装的Linux有多个发行版本,如RedHat,Suse,Ubuntu,FreeBSD,选择任意都可以;Linux可以直接安装在计算机上,推荐在Windows操作系统下通过Vmware虚拟机进行安装;实验室的安装环境:Vmware+Ubuntu10.04;虚拟机中的Linux系统可以和Windows系统进行配置共享目录来交换数据,安装了vmwaretools也可以进行直接拷贝;这样在windows系统下就可以使用Linux,在虚拟机的Linux系统中可以安装交叉开发工具北华航天工业学院房好帅fanghaoshuai@北华航天工业学院房好帅fanghaoshuai@2、Linux系统中安装交叉工具链开发板的厂商提供了EABI-4.3.3_EmbedSky_20100610.tar.bz2文件为已经制作好的4.3.3版本的工具链,拷贝到虚拟机Linux系统执行tar命令解压缩即可;安装执行解压把编译器放在:/opt/EmbedSky/4.3.3目录;可以使用开源项目Binutils制作交叉编译器,初学者不建议,直接使用厂商提供的交叉编译器即可;北华航天工业学院房好帅fanghaoshuai@可以在/etc/bash.bashrc文件中加入:exportPATH=$PATH:/opt/EmbedSky/4.3.3/bin

即将交叉工具链加入到PATH,就可以直接使用arm-linux-gcc、arm-linux-g++等一些命令;输入arm-linux-gcc–v可查看编译器版本:北华航天工业学院房好帅fanghaoshuai@arm-linux交叉工具链包含了多种交叉编译工具:名称作用arm-linux-as编译ARM汇编程序arm-linux-ar把多个.o合并成一个.o或静态库(.a)arm-linuxran-lib为库文件建立索引,相当于arm-linux-ar-sarm-linux-ld连接器(Linker),把多个.o或库文件连接成可执行文件arm-linux-objdump查看目标文件(.o)和库(.a)的信息arm-linux-objcopy转换可执行文件的格式arm-linux-strip去掉elf可执行文件的信息.使可执行文件变小arm-linux-readelf读elf可执行文件的信息arm-linux-gcc编译.c或.S开头的C程序或汇编程序arm-linux-g++编译c++程序交叉工具链多种工具组合可以生成目标平台的可执行文件北华航天工业学院房好帅fanghaoshuai@北华航天工业学院房好帅fanghaoshuai@采用arm-linux-gcc编译示例:helloworld.c#include<stdio.h>intmain(){

printf("helloworld,i'mrunningonarm_linux!"); return0;}命令:arm-linux-gcc-ohelloworld

helloworld.c生成名为helloworld的可执行文件采用file命令可以查看文件类型,采用交叉编译器编译的helloworld:北华航天工业学院房好帅fanghaoshuai@采用gcc-ohelloworld

helloworld.c编译的helloworld:1.3串口工具在ARM-Linux平台开发中的使用嵌入式Linux开发中,串口作为开发板的控制台,开发板将信息输出到串口,同时也从串口读取命令,故通过宿主机PC与开发板串口连接,利用windows下的超级终端、或Linux的minicom软件即可操作开发板;便携式笔记本计算机一般没有串口,USB转串口线,正确安装驱动后计算机中会发现此串口设备,和真实的串口使用起来一样;北华航天工业学院房好帅fanghaoshuai@1、超级终端的使用WindowXP菜单的附件通讯工具中,或是更改版本可拷贝超级终端软件,启动后出现新建连接:北华航天工业学院房好帅fanghaoshuai@选择使用的串口参数:北华航天工业学院房好帅fanghaoshuai@连接ARM开发板,启动开发板即可看到信息,开发板完全启动后即可看到开发linux命令行:这样在超级终端中即可通过输入命令操作嵌入式开发板北华航天工业学院房好帅fanghaoshuai@也可以使用虚拟机中的Linux的minicom操作串口,首先需要将串口加入到虚拟机设备中:北华航天工业学院房好帅fanghaoshuai@在虚拟机的命令行中输入minicom–s,即可启动相关参数设置,设置参数完成后,启动开发板,即可看到同样效果:北华航天工业学院房好帅fanghaoshuai@1.4搭建NFS调试环境北华航天工业学院房好帅fanghaoshuai@1、NFS的作用NFSServerNFSClientNFSClientNFSServer中配置NFS主机分享的目录A;NFSClient将NFS主机分享的目录挂载到本机某目录B;则可以在NFSClient中访问目录B即可达到访问NFS主机的目录A的目的,可对其进行任何操作;北华航天工业学院房好帅fanghaoshuai@2、NFS的配置在嵌入式Linux开发中,宿主机PC安装的Linux可作为NFSServer,开发板可作为NFSClient;(1)PC机配置作为NFSServer如把“/work/mynfs”作为分享目录,在/etc/exports文件中增加:/work/mynfs*(rw,sync,no_root_squash)之后使用以下两条命令重启NFS服务sudo/etc/init.d/portmaprestartsudo/etc/init.d/nfs-kernel-serverrestart*:允许所有的网段访问rw

:读写权限sync:同步写入no_root_squash:nfs客户端共享目录使用者权限北华航天工业学院房好帅fanghaoshuai@(2

温馨提示

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

评论

0/150

提交评论