嵌入式Linux开发环境搭建.ppt_第1页
嵌入式Linux开发环境搭建.ppt_第2页
嵌入式Linux开发环境搭建.ppt_第3页
嵌入式Linux开发环境搭建.ppt_第4页
嵌入式Linux开发环境搭建.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式Linux开发环境搭建,广州嵌入式软件公共技术支持中心 梁老师 2007年04月,嵌入式系统定义,嵌入到对象体中的专用计算机系统 三要素:嵌入、专用、计算机 嵌入式系统的特点:由三要素引出 嵌入性:嵌入到对象体系中,有对象环境要求 专用性:软、硬件按对象要求裁减 计算机:实现对象的智能化功能,嵌入式系统的应用,嵌入式Linux开发环境,嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。 解决办法: 首先在通用计算机上编写程序; 然后通过交叉编译生成目标平台上可以运行的二进制代码格式; 最后再下载到目标平台上的特定位置上运行。,嵌入式Linux开发环境,关于交叉编译 在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序。 在PC平台(X86 CPU)上编译出能运行在arm平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到arm平台上才能运行。 用来编译这种程序的编译器就叫交叉编译器。 为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀。例如:arm-linux-gcc,嵌入式Linux开发环境,嵌入式Linux开发环境,嵌入式Linux开发环境,需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显著特点。 交叉编译器只是交叉开发环境的一部分。 交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式。,嵌入式Linux开发环境,宿主机目标板模式 宿主机(Host)是一台通用计算机,它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,能够大大提高嵌入式应用软件的开发速度和效率。 目标板(Target),应用程序实际运行的平台,或者是能够替代实际运行环境的仿真系统。软硬件资源通常都比较有限。,嵌入式Linux开发环境,宿主机目标机模式 首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件; 然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试; 最后目标机在特定环境下脱离宿主机单独运行。,嵌入式Linux开发环境,开放的交叉开发环境的典型代表是GNU工具链目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。 商业的交叉开发环境则主要有Metrowerks CodeWarrior、ARM Software Development Toolkit等等。,嵌入式Linux开发环境,GNU交叉工具链 交叉编译器,例如arm-linux-gcc 交叉汇编器,例如arm-linux-as 交叉链接器,例如arm-linux-ld 用于处理可执行程序和库的一些基本工具。例如arm-linux-strip,嵌入式Linux开发环境,GNU交叉工具链的下载 ARM官方网站下载 .uk 可以从该站点下载2.95.3以及3.2工具链 .uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2 .uk/pub/armlinux/toolchain/cross-3.2.tar.bz2,嵌入式Linux开发环境,cross-2.95.3.tar.bz2包的安装: mkdir /usr/local/arm cp cross-2.95.3.tar.bz2 /usr/local/arm tar zxvf cross-2.95.3.tar.bz2 添加环境变量 在文件/etc/bashrc 文件最后添加: export PATH=/usr/local/arm/2.95.3/bin:$PATH 工具链安装完成。,嵌入式Linux开发环境,GNU交叉工具链的常用工具介绍,嵌入式Linux开发环境,主要工具的使用 arm-linux-gcc 的使用 arm-linux-gcc o hello hello.c arm-linux-ar 和 arm-linux-ranlib 的使用 建立一个静态库 arm-linux-ar r libhello.a h1.o h2.o 为静态库建立索引 arm-linux-ar s libhello.a arm-linux-ranlib libhello.a 由静态库产生可执行文件 arm-linux-gcc -o hello hello.c lhello L ./ arm-linux-gcc -o hello hello.c libhello.a,嵌入式Linux开发环境,主要工具的使用 arm-linux-strip 的使用 移除所有的符号信息-strip-all Cp hello hello1 arm-linux-strip -strip-all hello -rwxr-xr-x 1 arm root 2856 7 月 3 15:14 hello -rwxr-xr-x 1 arm root 13682 7 月 3 15:13 hello1 被strip后的hello程序比原来的hello1程序要小很多。 移除调试符号信息 -g arm-linux-strip -g hello -rwxr-xr-x 1 arm root 4501 7 月 3 15:17 hello -rwxr-xr-x 1 arm root 13682 7 月 3 15:13 hello1,远程访问目标板,如何观察应用程序在目标板的运行情况,即查看程序的输出信息? 通过串口线连接宿主机和目标板。 配置串口做为目标板的输出设备。 例如在交叉编译目标板的linux内核时,配置指定终端为串口: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200 在宿主机上通过串口通信软件查看目标板系统的运行情况。,远程访问目标板,超级终端的使用 打开超级终端 超级终端程序通常位于附件中的通讯中,“Hypertrm” 图标所指即是超级终端程序。 为新的连接取一个名字,远程访问目标板,超级终端的使用 选择连接目标板的串口,远程访问目标板,超级终端的使用 设置串口 注意必须选择无流控制,否则只能看到输出而不能输入。串口波特率是 11520,远程访问目标板,超级终端的使用 当所有的连接参数都设置好以后,打开目标板电源开关,就会看到系统 的启动信息,当 Linux 启动以后, 超级终端就相当于虚拟终端,可通过它来操作目标板。 选择超级终端“文件”菜单下的“另存为 ”,保存该连接设置,以便于以后再连接时就不必重新执行以上设置了,远程访问目标板,超级终端的使用 打开目标板电源开关,就会看到系统 的启动信息,当 Linux 启动以后, 超级终端就相当于虚拟终端,可通过它来操作目标板。,远程访问目标板,minicom的使用 minicom 的设置 :minicom -s,远程访问目标板,minicom的使用 选择串口 选择菜单中的“ Serial port setup ”,按回车,进入如下图所示界面。按“ A ”以设置“ Serial Device ”(串口 1 - /dev/ttyS0 ,串口2 - /dev/ttyS1),远程访问目标板,minicom的使用 设置波特率 按“ E ”键进入设置“ bps/par/Bits ”(波特率)界面。再按“ I ”以设置波特率为 115200。,远程访问目标板,minicom的使用 设置无流控制 按回车退回到上一级菜单,按“F”键设置“ Hardware Flow Control ”为“ NO ”,其他选项使用缺省值。,远程访问目标板,minicom的使用 保存设置 再选择“Exit”退出设置模式。刚才的设置被保存到“ /etc/minirc.dfl ”。 设置完毕 打开目标板电源的电源开关,minicom输出目标板的启动信息,当 Linux 启动以后, minicom 就相当于虚拟终端,可通过它来操作目标板。,远程访问目标板,minicom的使用 退出 minicom 同时按下“ Ctrl+A ”键,紧接着再按下“ Q ”键,在跳出的窗口中,选择“ Yes ”。,下载程序映象到目标板,通过串口下载 使用三星公司的DNW软件。设置波特率115200、端口号、下载地址0x30200000 上电启动开发板,进入 BIOS 界面 选择2串口下载 点击“serial port”菜单,选择“Transmit”选项,下载程序映象到目标板,通过usb下载 同样使用三星公司的DNW软件。设置波特率115200、端口号、下载地址0x30200000 上电启动开发板,进入 BIOS 界面 接上 USB DEVICE 的连接线,选择“0” ,选择 USB 下载,注意用 USB 下载要先在PC 端装好驱动程序,保证 USB 连接好。 有时 PC 端出现发现无法识别的 USB 设时,可在 BIOS 中输入 ESC 取消下载,等几秒钟再输入“0”启动 USB 下载。出现“Now USB is connected”说明 USB 正确枚举。 点击“USB Port” ”Transmit”选项。,下载程序映象到目标板,通过TFTP方式下载 TFTP协议是简单的文件传输协议,适合目标板Bootloader的使用。(u-boot、vivi) TFTP文件传输基于UDP。 通过TFTP来传输目标板启动需要的内核映象文件zImage 传输速度快,使用方便。,下载程序映象到目标板,通过TFTP方式下载 tftp分服务器和客户端。 在宿主机开启tftp服务,设置好tftp的根目录内容 在目标板开启tftp客户端程序。 在目标板的bootloader交互节目中通过tftpboot命令下载内核。 tftpboot 0x30200000 zImage,下载程序映象到目标板,通过TFTP方式下载 Linux的tftp服务器的配置 编辑 /etc/xinetd.d/tftp,只有在安装了tftp服务后,才会出现tftp文件。 修改其中disable和server_args项,其余可保持不变。 Service tftp socket type = dgram protocol = udp wait = yes user = root server =/usr/sbin/in.tftpd server_args = -s /tftpboot - 设置tftp服务输出目录。 disable = no - 默认为yes,应修改成no per_source = 11 cps = 100 2 flags = IPv4 ,下载程序映象到目标板,通过TFTP方式下载 重启xinetd服务,使得更改的配置有效 Service xinetd restart 确认tftp服务是否已经开启 netstat -au 在目标板启动tftp客户端程序 tftpboot 0x30200000 zImage 下载信息: TFTP from server ; our IP address is 10 Filename zImage. Load address: 0x30200000 Loading: # # # done Bytes transferred = 913880 (df1d8 hex),下载程序映象到目标板,通过挂载NFS方式下载 NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上,并且作为其他计算机的一个目录。 在嵌入式开发中,通过NFS可以很方便的将修改的文件通过NFS传输到目标板上。不用反复烧写镜像文件。,下载程序映象到目标板,通过挂载NFS方式下载 NFS的使用分服务器端和客户端 服务器端提供要共享的文件,客户端通过挂载“mount”实现对共享文件的访问操作。 mount :/home/nfs /tmp/test NFS服务器端通过读取配置文件/etc/exports决定所共享的文件目录。 配置文件的语法:每一行由输出路径,客户名列表以及每个客户名后紧跟的访问选项构成: 共享的目录 主机名或IP(参数,参数) 共享的目录 IP1(参数1,参数2) IP2(参数3,参数4),下载程序映象到目标板,通过挂载NFS方式下载 重启NFS服务:service nfs restart 通过showmount 命令来查看开放的目录。 showmount e localhost 进行网络设置,将eth0的网络地址指定为,掩码,网关不需要。设置完之后要重启网络。 Serviec network restart 关闭防火墙,选择系统设置安全级别,将安全级别改为“无防火墙”。 去掉iptables 服务:选择系统设置服务器设置服务,在弹出的界面上将optables前的“”去掉。 将主机上的目录挂载到另一个目录下,测试NFS是否设置成功。,下载程序映象到目标板,通过挂载NFS方式下载 在超级终端或者minicom下通过NFS挂载宿主机目录 mount :/home/nfs /tmp/test 卸载NFS文件系统 umount /tmp/test,交叉调试器,嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。 本地软件开发 调试器与被调试的程序往往运行在同一台计算机上。 调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。 嵌入式软件开发 调试时采用的是在宿主机和目标机之间进行的交叉调试。 调试器运行在宿主机,但被调试的进程却是运行在目标板。 调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。,交叉调试器,交叉调试器的结构,交叉调试器,制作交叉调试器 解压源码包 tar zxf gdb-6.0.tar.gz 配置 cd gdb-6.0 mkdir build-arm-linux cd build-arm

温馨提示

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

评论

0/150

提交评论