您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第四章 构建嵌入式交叉开发环境
第四章构建嵌入式交叉开发环境4.1交叉开发环境介绍•4.1.1交叉开发概念模型内核映像根文件系统内核映像HOSTTARGET下载内核映像各种连接方式挂接NFS文件系统TARGET就是目标板,HOST是开发主机。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序、内核和文件系统,然后在目标板上运行。通常这种在主机环境下开发,在目标板上运行的开发模式叫作交叉开发。4.1.2目标板与主机之间的连接目标板和主机之间通常可以使用串口、以太网接口、USB接口以及JTAG接口等连接方式。(1)串行通讯接口(2)以太网接口(3)USB接口(4)JTAG等接口4.1.3文件传输(1)串口传输方式主机端通过kermit、minicom或者windows超级终端等工具都可以通过串口发送文件。(2)网络传输方式网络传输方式一般采用TFTP(TrivialFileTransportProtocol)协议。(3)USB接口传输方式通常分主从设备端,主机端为主设备端,目标板端为从设备端。(4)JTAG接口传输方式JTAG仿真器跟主机之间的连接通常是串口、并口、以太网接口或者USB接口。(5)移动存储设备如果目标板上有软盘、CDROM、USB盘等移动存储介质,就可以制作启动盘或者复制到目标板上,从而引导启动。4.1.4网络文件系统NFS文件系统的优点如下:(1)本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。(2)用户可以通过网络访问共享目录,而不必在计算机上为每个用户都创建工作目录。(3)软驱、CDROM等存储设备可以在网络上面共享使用。这可以减少整个网络上的移动介质设备的数量。(4)NFS至少有一台服务器和一台(或者更多)客户机两个主要部分。客户机远程访问存放在服务器上的数据。需要配置启动NFS等相关服务。4.2安装交叉编译工具基于上述硬件环境配置的需求,接下来一步步构建这个交叉开发环境。首先要安装交叉编译工具链。4.2.1获取交叉开发工具链几个ARMLinux的免费站点:•(1)•(2)•(3)•(4)主机安装工具链•对于RPM格式的工具链,可以通过rpm命令把软件包安装到主机上。•对于tar包,可以使用tar命令解压。•以ARMLinux站点提供的cross-3.3.2.tar.bz2包为例说明。解压后,查看GCC版本号,可以得到一些信息,如:$tar–jxvfcross-3.3.2.tar.bz2$./3.3.2/bin/arm-linux-gcc–v出现如下信息:…..–prefix=/usr/local/arm/3.3.2i686-pc-linux-gnu…….表明GCC的安装路径,是在GCC编译前通过prefix选项配置的。因此该工具链的安装路径为:/usr/local/arm/3.3.24.3主机开发环境配置•4.3.1主机环境配置•主机端安装Linux操作系统(只要磁盘有足够空间,最好是完全安装)。•接下来就是主机Linux环境配置。•然后把交叉开发工具链的路径添加到环境变量PATH中,这样可以方便地在Bash或者Makefile中使用这些工具。通常可以在环境变量的配置文件有3个:①/etc/profile是系统启动过程执行的一个脚本,对所有用户都生效。②~/.bash_profile是用户的脚本,在用户登录时生效。③~/.bashrc也是用户的脚本,在~/.bash_profile中调用生效。把环境变量配置的命令添加到其中一个文件中即可。4.3.2串口控制台工具•串行通讯接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。•Windows操作系统有超级终端(Hyperterminal)串口通讯工具;Linux/UNIX操作系统有minicom等串口通讯工具。•minicom的配置界面是菜单方式。在Shell下执行“minicom–s”命令,出现配置菜单。•图形见P774.3.3DHCP服务目标板的Bootloader或者内核都需要分配IP地址。这可以通过动态主机配置协议(DHCPDynamicHostConfigurationProtocol)或者BOOTP协议实现。BOOTP协议可以给计算机分配IP地址并且通过网络获取映像文件的路径;DHCP则是向后兼容BOOTP的协议拓展。Linux操作系统的主机一般包含dhcpd的软件包,可以配置DHCP服务。配置服务的操作需要root用户的权限。配置文件为/etc/dhcpd.conf4.3.4TFTP服务TFTP协议是简单的文件传输协议,所以实现简单,使用方便,正好适合目标板Bootloader使用。但是文件传输是基于UDP的,文件传输(特别是大文件)是不可靠的。TFTP服务在Linux系统上有客户端和服务器2个软件包。配置TFTP服务,必须先安装好。TFTP服务也可以通过图形化的配置窗口来启动。操作过程需要root权限。缺省的情况下,把/tftpboot目录作为输出文件的根目录。还可以手工修改TFTP配置文件,定制TFTP服务。配置文件为/etc/xintd.d/tftp,修改好后需要执行:$/etc/init.d/xinetdrestart使xinetd重新启动TFTP服务。4.3.5NFS服务•NFS服务的主要任务是把本地的一个目录通过网络输出,其他计算机可以远程地挂接这个目录并且访问文件。•NFS服务有自己的协议和端口号,但是在文件传输或者其他相关信息传递的时候,NFS则使用远程过程调用(RPC,RemoteProcedureCall)协议。•NFS服务通过一系列的工具来配置文件输出,配置文件为:/etc/exports修改好后需要执行:$/etc/rc.d/init.d/portmapstart$/etc/rc.d/init.d/nfsstart来启动服务。如果希望每次系统引导时都启动NFS服务,可以用以下命令:$/sbin/chkconfignfson4.4启动目标板•4.4.1系统引导过程•第一阶段是目标板硬件初始化,解压内核映像,再跳转到内核映像入口。•第二阶段是内核的初始化,初始化设备驱动,挂接根文件系统。•第三阶段是执行用户空间的init程序,完成系统初始化、启动相关服务和管理用户登录等工作。4.4.2内核解压启动目标板处理器上电或者复位后,首先执行引导程序(Bootloader),初始化内存等硬件,然后把压缩的内核映像加载到内存中,最后跳转到内核映像入口执行。这样就把控制权完全交给内核映像了。接下来内核映像继续执行,完成自解压或者重定位,然后跳转到解压后的内核代码入口。这部分主要是Linux内核的自引导程序,又叫作Linuxbootloader,包含在内核源代码中。这部分引导代码相对简单,不可能替代目标板上的Bootloader。4.4.3挂接根文件系统Linux内核要挂接NFS根文件系统,需要以下两个工作:(1)在主机端配置相应的网络服务;(2)配置目标板的内核选项,支持nfs服务。另外还必须具备以下条件:•(1)以太网接口驱动正常•(2)配置内核启动命令行参数•(3)配置内核挂接NFS根文件系统4.5应用程序的远程交叉调试•4.5.1交叉调试的模型HOSTTARGET以太网连接NFSgdbgdbserver应用程序和源码应用程序4.5.2交叉调试程序实例•1.交叉编译(1)在主机上编辑hello.c程序(2)交叉编译(3)把可执行程序复制到NFS输出的目录下面(4)这时在目标板端也可以访问到同样的程序,执行程序•2.交叉调试(1)编译程序的时候,需要添加-g编译选项(2)在目标板上,启动gdbserver,控制程序执行(3)在主机端,启动DDD和gdb调试程序(4)在DDD下窗口的GDB控制台下,建立连接(5)设置断点,执行到断点1、UP-NETARM2410-S嵌入式Linux开发平台简介:(1)硬件配置4.6ARM9系统配置说明(2)S3C2410芯片介绍S3C2410X芯片集成了大量的功能单元,包括:1、内部1.8V,存储器3.3V,外部IO3.3V,16KB数据CACHE,16KB指令CACHE,MMU。2、内置外部存储器控制器(SDRAM控制和芯片选择逻辑)。3、LCD控制器(最高4K色STN和256K彩色TFT),一个LCD专用DMA。4、4个带外部请求线的DMA。5、三个通用异步串行端口(IrDA1.0,16-ByteTxFIFO,and16-ByteRxFIFO),2通道SPI。6、一个多主IIC总线,一个IIS总线控制器。7、SD主接口版本1.0和多媒体卡协议版本2.11兼容。8、2个USBHOST,一个USBDEVICE(VER1.1)。9、4个PWM定时器和一个内部定时器。10、看门狗定时器。11、117个通用IO。12、24个外部中断。13、电源控制模式:标准、慢速、休眠、掉电。14、8通道10位ADC和触摸屏接口。15、带日历功能的实时时钟。16、芯片内置PLL。17、设计用于手持设备和通用嵌入式系统。18、16/32位RISC体系结构,使用ARM920TCPU核的强大指令集。19、ARM带MMU的先进的体系结构支持WINCE、EPOC32、LINUX。20、指令缓存(cache)、数据缓存、写缓冲和物理地址TAGRAM,减小了对主存储器带宽和性能的影响。21、ARM920TCPU核支持ARM调试的体系结构。22、内部先进的位控制器总线(AMBA)(AMBA2.0,AHB/APB)。(1)嵌入式LINUX开发环境方案:①、基于PC机WINDOWS操作系统下的Cygwin;②、在WINDOWS下安装虚拟机Vmwareworkstation后,再在WINDOWS中安装LINXUX操作系统,指定链接即可。③、直接安装LINUX操作系统。2、建立嵌入式Linux开发环境由于Redhat9.0安装后占用空间约为2.4G-5G之间,还要安装ARMLINUX开发软件(大约800M左右),因此对开发计算机的硬盘空间要求较大。硬件要求:CPU:高于奔腾500M,推荐高于1.7G。内存:大于128M,推荐256M以上。硬盘:大于10G,推荐高于40G。(2)对开发PC机的性能要求(1)配置网络,包括配置IP地址、NFS服务、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,REDHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。然后配置宿主机IP为192.168.0.*。如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置。如图所示:3、配置嵌入式Linux开发环境对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用。因此网络安装完毕后,应立即关闭防火墙。操作如下:点击红帽子开始菜单,选择安全级别设置,选中无防火墙。如图所示:在“系统设置”菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。配置NFS:点击主菜单运行系统设置-服务器设置-NFS服务器(英文为SETUP-SYSTEMSERVICE-NFS),点击“增加”出现如下界面,在目录(Drictory)中填入需要共享的路径,在主机(Hosts)中填入允许进行连接的主机IP地址。并选择允许客户对共享目录的操作为只读(Read-only)或读写(Read/write)。如图所示:下图是一些常规选项设置,可以保留默认值。下图是对客户端存取服务器的一些其他设置,一般不需要设置,取默认值:当将远程根用户当作本地根用户时,对于操作比较方便,但是安全性较差。最后退出时则完成NFS配置。配置好后,界面应显
本文标题:第四章 构建嵌入式交叉开发环境
链接地址:https://www.777doc.com/doc-3829262 .html