嵌入式Linux开发环境搭建.ppt

上传人:牧羊曲112 文档编号:5970475 上传时间:2023-09-09 格式:PPT 页数:46 大小:1.47MB
返回 下载 相关 举报
嵌入式Linux开发环境搭建.ppt_第1页
第1页 / 共46页
嵌入式Linux开发环境搭建.ppt_第2页
第2页 / 共46页
嵌入式Linux开发环境搭建.ppt_第3页
第3页 / 共46页
嵌入式Linux开发环境搭建.ppt_第4页
第4页 / 共46页
嵌入式Linux开发环境搭建.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《嵌入式Linux开发环境搭建.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux开发环境搭建.ppt(46页珍藏版)》请在三一办公上搜索。

1、嵌入式Linux开发环境搭建,广州嵌入式软件公共技术支持中心梁老师2007年04月,嵌入式系统定义,嵌入到对象体中的专用计算机系统三要素:嵌入、专用、计算机嵌入式系统的特点:由三要素引出嵌入性:嵌入到对象体系中,有对象环境要求专用性:软、硬件按对象要求裁减计算机:实现对象的智能化功能,嵌入式系统的应用,嵌入式Linux开发环境,嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。解决办法:首先在通用计算机上编写程序;然后通过交叉编译生成目标平台上可以运行的二进制代码格式;最后再下载到目标平台上的特定位置上运行。,嵌入式Linux开发环境,

2、关于交叉编译 在一种平台上编译出能在另一种平台(体系结构不同)上运行的程序。在PC平台(X86 CPU)上编译出能运行在arm平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到arm平台上才能运行。用来编译这种程序的编译器就叫交叉编译器。为了不跟本地编译器混淆,交叉编译器的名字一般都有前缀。例如:arm-linux-gcc,嵌入式Linux开发环境,嵌入式Linux开发环境,嵌入式Linux开发环境,需要交叉开发环境(Cross Development Environment)的支持是嵌入式应用软件开发时的一个显著特点。交叉编译器只是交叉开发环境的一部分。交叉开发环境是指

3、编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式。,嵌入式Linux开发环境,宿主机目标板模式宿主机(Host)是一台通用计算机,它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,能够大大提高嵌入式应用软件的开发速度和效率。目标板(Target),应用程序实际运行的平台,或者是能够替代实际运行环境的仿真系统。软硬件资源通常都比较有限。,嵌入式Linux开发环境,宿主机目标机模式首先利用宿主机上丰富的资源和良好的开发环境开发和仿真调试目标机上的软件;然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序

4、或者操作系统的支持下利用交叉调试器进行分析和调试;最后目标机在特定环境下脱离宿主机单独运行。,嵌入式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

5、-strip,嵌入式Linux开发环境,GNU交叉工具链的下载ARM官方网站下载 可以从该站点下载以及3.2工具链,嵌入式Linux开发环境,包的安装:mkdir/usr/local/armcp cross-2.95.3.tar.bz2/usr/local/arm添加环境变量在文件/etc/bashrc 文件最后添加:export PATH=/usr/local/arm/2.95.3/bin:$PATH工具链安装完成。,嵌入式Linux开发环境,GNU交叉工具链的常用工具介绍,嵌入式Linux开发环境,主要工具的使用arm-linux-gcc 的使用arm-linux-gcc o hello

6、hello.carm-linux-ar 和 arm-linux-ranlib 的使用建立一个静态库arm-linux-ar r libhello.a h1.o h2.o为静态库建立索引arm-linux-ar s libhello.aarm-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-allCp hel

7、lo hello1arm-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,远程访问目标板,如何观察应

8、用程序在目标板的运行情况,即查看程序的输出信息?通过串口线连接宿主机和目标板。配置串口做为目标板的输出设备。例如在交叉编译目标板的linux内核时,配置指定终端为串口:noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttyS0,115200在宿主机上通过串口通信软件查看目标板系统的运行情况。,远程访问目标板,超级终端的使用打开超级终端超级终端程序通常位于附件中的通讯中,“Hypertrm”图标所指即是超级终端程序。为新的连接取一个名字,远程访问目标板,超级终端的使用选择连接目标板的串口,远程访问目标板,超级终端的使用设置串口注意必须选择无流

9、控制,否则只能看到输出而不能输入。串口波特率是 11520,远程访问目标板,超级终端的使用当所有的连接参数都设置好以后,打开目标板电源开关,就会看到系统 的启动信息,当 Linux 启动以后,超级终端就相当于虚拟终端,可通过它来操作目标板。选择超级终端“文件”菜单下的“另存为”,保存该连接设置,以便于以后再连接时就不必重新执行以上设置了,远程访问目标板,超级终端的使用打开目标板电源开关,就会看到系统 的启动信息,当 Linux 启动以后,超级终端就相当于虚拟终端,可通过它来操作目标板。,远程访问目标板,minicom的使用 minicom 的设置:minicom-s,远程访问目标板,minic

10、om的使用 选择串口选择菜单中的“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”退出设

11、置模式。刚才的设置被保存到“/etc/minirc.dfl”。设置完毕打开目标板电源的电源开关,minicom输出目标板的启动信息,当 Linux 启动以后,minicom 就相当于虚拟终端,可通过它来操作目标板。,远程访问目标板,minicom的使用 退出 minicom 同时按下“Ctrl+A”键,紧接着再按下“Q”键,在跳出的窗口中,选择“Yes”。,下载程序映象到目标板,通过串口下载使用三星公司的DNW软件。设置波特率115200、端口号、下载地址0 x30200000上电启动开发板,进入 BIOS 界面选择2串口下载点击“serial port”菜单,选择“Transmit”选项,下

12、载程序映象到目标板,通过usb下载同样使用三星公司的DNW软件。设置波特率115200、端口号、下载地址0 x30200000上电启动开发板,进入 BIOS 界面接上 USB DEVICE 的连接线,选择“0”,选择 USB 下载,注意用 USB 下载要先在PC 端装好驱动程序,保证 USB 连接好。有时 PC 端出现发现无法识别的 USB 设时,可在 BIOS 中输入 ESC 取消下载,等几秒钟再输入“0”启动 USB 下载。出现“Now USB is connected”说明 USB 正确枚举。点击“USB Port”Transmit”选项。,下载程序映象到目标板,通过TFTP方式下载TF

13、TP协议是简单的文件传输协议,适合目标板Bootloader的使用。(u-boot、vivi)TFTP文件传输基于UDP。通过TFTP来传输目标板启动需要的内核映象文件zImage 传输速度快,使用方便。,下载程序映象到目标板,通过TFTP方式下载tftp分服务器和客户端。在宿主机开启tftp服务,设置好tftp的根目录内容在目标板开启tftp客户端程序。在目标板的bootloader交互节目中通过tftpboot命令下载内核。tftpboot 0 x30200000 zImage,下载程序映象到目标板,通过TFTP方式下载Linux的tftp服务器的配置编辑/etc/xinetd.d/tft

14、p,只有在安装了tftp服务后,才会出现tftp文件。修改其中disable和server_args项,其余可保持不变。Service tftpsocket type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/tftpboot-设置tftp服务输出目录。disable=no-默认为yes,应修改成no per_source=11cps=100 2flags=IPv4,下载程序映象到目标板,通过TFTP方式下载重启xinetd服务,使得更改的配置有效Service xinetd restar

15、t确认tftp服务是否已经开启netstat-au在目标板启动tftp客户端程序tftpboot 0 x30200000 zImage下载信息:Filename zImage.Load address:0 x30200000Loading:#doneBytes transferred=913880(df1d8 hex),下载程序映象到目标板,通过挂载NFS方式下载NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上,并且作为其他计算机的一个目录。在嵌入式开发中,通过NFS可以很方便的将修改的文件通过NFS传输到目标板上。不用反复烧写镜像文件。,下载程序映象到目标板,通过挂载NFS方

16、式下载NFS的使用分服务器端和客户端服务器端提供要共享的文件,客户端通过挂载“mount”实现对共享文件的访问操作。mount 192.168.0.1:/home/nfs/tmp/testNFS服务器端通过读取配置文件/etc/exports决定所共享的文件目录。配置文件的语法:每一行由输出路径,客户名列表以及每个客户名后紧跟的访问选项构成:共享的目录 主机名或IP(参数,参数)共享的目录 IP1(参数1,参数2)IP2(参数3,参数4),下载程序映象到目标板,通过挂载NFS方式下载重启NFS服务:service nfs restart 通过showmount 命令来查看开放的目录。showm

17、ount e localhost 进行网络设置,将eth0的网络地址指定为192.168.1.1,掩码255.255.255.0,网关不需要。设置完之后要重启网络。Serviec network restart 关闭防火墙,选择系统设置安全级别,将安全级别改为“无防火墙”。去掉iptables 服务:选择系统设置服务器设置服务,在弹出的界面上将optables前的“”去掉。将主机上的目录挂载到另一个目录下,测试NFS是否设置成功。,下载程序映象到目标板,通过挂载NFS方式下载在超级终端或者minicom下通过NFS挂载宿主机目录 mount 192.168.1.1:/home/nfs/tmp/

18、test卸载NFS文件系统umount/tmp/test,交叉调试器,嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。本地软件开发调试器与被调试的程序往往运行在同一台计算机上。调试器是一个单独运行着的进程,它通过操作系统提供的调试接口来控制被调试的进程。嵌入式软件开发调试时采用的是在宿主机和目标机之间进行的交叉调试。调试器运行在宿主机,但被调试的进程却是运行在目标板。调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。,交叉调试器,交叉调试器的结构,交叉调试器,制作交叉调试器解压源码包tar

19、 zxf配置cd gdb-6.0mkdir build-arm-linuxcd build-arm-linux./configure-target=arm-linux,交叉调试器,制作交叉调试器编译make安装make install在目录下生成arm-linux-gdb工具。,交叉调试器,制作交叉调试器编译生成针对arm处理器的 gdbserver进入gdb源代码包中的gdb server目录 cd gdb-6.0cd gdb/gdbserver配置生成gdbserverchmod u+x configureCC=arm-linux-gcc./configure-host=arm-linux

20、Make,生成gdbserver、gdbreplay,交叉调试器,制作交叉调试器通过nfs,将gdbserver/gdbreplay到目标板中。启动目标板上的gdbserver gdbserver 192.168.1.88:2345 cross-test192.168.1.88 是目标板的IP地址。2345是任意指定的端口,可以是其他端口。启动宿主机端arm-linux-gdb调试器在宿主机的工作目录中有对应的程序和源文件#arm-linux-gdb cross-test(gdb)target remote 192.168.1.88:2345 连接远程gdbserver(gdb)b main 设置断点(gdb)c 运行,让我们一起努力创造未来!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号