嵌入式基础与开发环境PPT课件_第1页
嵌入式基础与开发环境PPT课件_第2页
嵌入式基础与开发环境PPT课件_第3页
嵌入式基础与开发环境PPT课件_第4页
嵌入式基础与开发环境PPT课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、 嵌入式应用开发过程一个嵌入式应用项目的开发过程是一个硬件和软件设计的综合过程,是一个系统设计过程,主要经历以下步骤: 硬件设计与实现 引导加载程序的设计 操作系统的移植(主要是驱动程序移植) 应用程序的设计 系统调试,样机交付 其中,引导加载程序,操作系统移植,应用程序设计是软件设计,具有自己的特点。嵌入式软件开发第1页/共34页 需要交叉编译 硬件平台处理器较慢,内存和外存容量小等等; 把软件开发放在高性能的PC机上进行; PC机上CPU指令集与嵌入式CPU的指令集是不同的,因此,在PC机上开发嵌入式软件需要交叉编译。 需要移植 由于嵌入式系统是一个软硬件定制的系统,硬件平台各不相同,软件

2、设计需要根据不同的硬件设备来添加或修改相应的代码,这就是移植。嵌入式软件开发第2页/共34页 在一个硬件平台上设计一个基于linux的软件系统,需要的工作可以分为以下三部分: Bootloader设计 Linux内核的定制移植,驱动程序的开发 应用程序的设计嵌入式linux软件开发第3页/共34页嵌入式Linux开发环境 嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可能的。 解决办法: 首先在通用计算机上编写程序; 然后通过交叉编译生成目标平台上可以运行的二进制代码格式; 最后再下载到目标平台上的特定位置上运行。第4页/共34页嵌入式Li

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

4、一个显著特点。 交叉编译器只是交叉开发环境的一部分。 交叉开发环境是指编译、链接和调试嵌入式应用软件的环境,它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式。 第8页/共34页嵌入式Linux开发环境 宿主机目标板模式 宿主机(Host)是一台通用计算机,它通过串口或者以太网接口与目标机通信。宿主机的软硬件资源比较丰富,能够大大提高嵌入式应用软件的开发速度和效率。 目标板(Target),应用程序实际运行的平台,或者是能够替代实际运行环境的仿真系统。软硬件资源通常都比较有限。第9页/共34页嵌入式Linux开发环境 宿主机目标机模式 首先利用宿主机上丰富的资源和良好的开发环境开发

5、和仿真调试目标机上的软件; 然后通过串口或者以网络将交叉编译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交叉调试器进行分析和调试; 最后目标机在特定环境下脱离宿主机单独运行。 第10页/共34页嵌入式Linux开发环境 开放的交叉开发环境的典型代表是GNU工具链目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。 商业的交叉开发环境则主要有Mentor Graphics Sourcery Tools 、ARM Software Development Toolkit等等。第11页/共34页嵌入式Linux开发环境 GNU交叉工具链 交叉编译器,例如

6、arm-linux-gcc 交叉汇编器,例如arm-linux-as 交叉链接器,例如arm-linux-ld 用于处理可执行程序和库的一些基本工具。例如arm-linux-strip第12页/共34页嵌入式Linux开发环境 arm-gcc 的安装 sudo tar xvfj arm-gcc.tar.bz2 -C / arm-gcc.tar.bz2 在共享的tools/x210 目录 arm-gcc.tar.bz2 包含了4个不同版本的arm-gcc: 4.3.2 arm-2009q3 arm-none-eabi-2010-09-51 arm-none-linux-gnueabi-2010-

7、09-50 如果要用哪个编辑器就执行 export PATH=/usr/local/arm/xxxx/bin:$PATH 这里xxxx指的是上面其中的一个第13页/共34页嵌入式Linux开发环境 GNU交叉工具链的常用工具介绍 第14页/共34页嵌入式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 libhel

8、lo.aarm-linux-ranlib libhello.a 由静态库产生可执行文件arm-linux-gcc -o hello hello.c lhello L ./arm-linux-gcc -o hello hello.c libhello.a第15页/共34页嵌入式Linux开发环境 主要工具的使用 arm-linux-strip 的使用 移除所有的符号信息-strip-allcp hello hello1arm-linux-strip -strip-all hello-rwxr-xr-x 1 arm root 2856 7 月 3 15:14 hello-rwxr-xr-x 1 a

9、rm 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第16页/共34页 如何观察应用程序在目标板的运行情况,即查看程序的输出信息? 通过串口线连接宿主机和目标板。 配置串口做为目标板的输出设备。例如在交叉编译目标板的linux内核时,配置指定终端为串口在宿主机上通过串口

10、通信软件查看目标板系统的运行情况。远程访问目标板第17页/共34页 minicom的使用 minicom 的设置 :sudo minicom -s远程访问目标板第18页/共34页 minicom的使用 选择串口选择菜单中的“ Serial port setup ”,按回车,进入如下图所示界面。按“ A ”以设置“ Serial Device ”(串口 1 - /dev/ttyS0 ,串口2 - /dev/ttyS1,usb转串口/dev/ttyUSB0) 远程访问目标板第19页/共34页 minicom的使用 设置波特率按“ E ”键进入设置“ bps/par/Bits ”(波特率)界面。再按

11、“ I ”以设置波特率为 115200。远程访问目标板第20页/共34页 minicom的使用 设置无流控制按回车退回到上一级菜单,按“F”键设置“ Hardware Flow Control ”为“ NO ”,其他选项使用缺省值。远程访问目标板第21页/共34页 minicom的使用 保存设置 Save setup as dfl 再选择“Exit”退出设置模式。刚才的设置被保存到“/etc/minicom/minirc.dfl”。 设置完毕打开目标板电源的电源开关,minicom输出目标板的启动信息,当 Linux 启动以后, minicom 就相当于虚拟终端,可通过它来操作目标板。 远程访

12、问目标板第22页/共34页 minicom的使用 退出 minicom 同时按下“ Ctrl+A ”键,紧接着再按下“ Q ”键,在跳出的窗口中,选择“ Yes ”。 远程访问目标板第23页/共34页 通过usb下载 同样使用三星公司的DNW软件。设置波特率115200、端口号 上电启动开发板,进入 uboot命令行 输入dnw c0008000 有时 PC 端出现发现无法识别的 USB 设时,可reset开发板,重新输入命令。出现“Now USB is connected”说明 USB 正确枚举。 点击“USB Port” ”Transmit”选项。下载程序映象到目标板第24页/共34页 通

13、过TFTP方式下载 TFTP协议是简单的文件传输协议,适合目标板Bootloader的使用。(u-boot) TFTP文件传输基于UDP。 通过TFTP来传输目标板启动需要的内核映象文件zImage 传输速度快,使用方便。下载程序映象到目标板第25页/共34页 通过TFTP方式下载 tftp分服务器和客户端。 在宿主机开启tftp服务,设置好tftp的根目录内容 在目标板开启tftp客户端程序。 在目标板的bootloader命令行中通过tftp命令下载内核。tftp 0 xc008000 uImage下载程序映象到目标板第26页/共34页 通过TFTP方式下载 自行安装好tftp并开启 在目

14、标板启动tftp客户端程序tftp 0 xc008000 uImage下载信息:TFTP from server 02; our IP address is 9Filename uImage.Load address: 0 xc0008000Loading:#doneBytes transferred = 3319840 (32A820 hex)下载程序映象到目标板第27页/共34页 通过挂载NFS方式下载 NFS服务就是将宿主机的一个目录通过网络可以被挂载到其他计算机上,并且作为其他计算机的一个目录。 在嵌入式开发中,通过NFS可以很方便的将修改的

15、文件通过NFS传输到目标板上。不用反复烧写镜像文件。 下载程序映象到目标板第28页/共34页 通过挂载NFS方式下载 在超级终端或者minicom下通过NFS挂载宿主机目录 mount -t nfs -o nolock 02:/home/tan/share/share /tmp/test 卸载NFS文件系统umount /tmp/test 下载程序映象到目标板第29页/共34页交叉调试器 嵌入式软件开发过程中的交叉调试与本地软件开发过程中的调试方式有所差别。 本地软件开发 调试器与被调试的程序往往运行在同一台计算机上。 调试器是一个单独运行着的进程,它通过操作系统提供的调

16、试接口来控制被调试的进程。 嵌入式软件开发 调试时采用的是在宿主机和目标机之间进行的交叉调试。 调试器运行在宿主机,但被调试的进程却是运行在目标板。 调试器和被调试进程通过串口或者网络进行通信,调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。 第30页/共34页交叉调试器 交叉调试器的结构第31页/共34页交叉调试器 制作交叉调试器 编译生成针对arm处理器的 gdbserver 进入gdb源代码包中的gdb server目录 cd gdb-7.5cd gdb/gdbserver 配置生成gdbserverCC=arm-linux-gcc ./configure -host=arm-linux Make,生成gdbserver、gdbreplay第32页/共34页交叉调试器 制作交叉调试器 通过nfs,将gdbserver/ gdbreplay到目标板中。 启动目标板上的gdbs

温馨提示

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

评论

0/150

提交评论