最新嵌入式软件开发简介以linux为例PPT课件.ppt
《最新嵌入式软件开发简介以linux为例PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式软件开发简介以linux为例PPT课件.ppt(224页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式软件开发简介以嵌入式软件开发简介以linuxlinux为为例例2课程安排嵌入式Linux开发环境搭建嵌入式Linux概述Linux快速入门熟悉嵌入式开发平台熟悉引导启动代码和内核的烧写NFS环境构建9嵌入式Linux开发模式BootLoader内核内核FlashTargetHostNFS模式模式Root fs10Linux快速入门11Linux简介Linus Torvalds于1991编写Linux是一个Unix兼容的系统,大部分通用的Unix工具和程序都可以在Linux系统下运行。UNIX-堂兄 Linux表弟使用GNU工具开发:gcc,glibc,binutils,make等GNU=
2、GNU is Not UnixGPL=General Public License12一些发行版RedHatFedora CoreSuseDebianUbuntuCent OSAisanux13认识Linux内核版本主版本主版本1.02.02.22.42.6 2,3年更新年更新稳定版稳定版2.0.402.2.12 2.4.18 2.6.7 2.6.301,2月更新月更新稳定版更新稳定版更新2.6.23.1 2.6.23.71,2周更新周更新14Linux体系结构用户空间用户空间内核空间内核空间文件文件系统系统I/O内存内存管理管理Cache调度调度内核内核15内核结构16Linux优点提供了先
3、进的网络支持多任务、多用户符合IEEE POSIX标准核心能仿真FPU支持数十种文件系统格式完全运行于保护模式开放源代码采用先进的内存管理机制,更加有效地利用物理内存 17Linux分区Linux分区的形式Swap分区根分区/Boot分区其他18Linux的基本命令Shell命令行使用技巧:Tab自动补齐、ctrl+a+e等cd:转换目录ls:列出文件名(根目录浏览)ll:查看文件属性(文件属性与权限)cp:复制文件(cp/mnt/hgfs/share/*.*/root/)mv:移动文件(可用于文件或目录的改名)rm:删除文件(rm rf (目标))mkdir:创建目录rmdir:删除目录19
4、Linux的基本命令(2)cat:显示文本文件less/more:分屏显示文件grep:查找字符串(ls all|grep*)head:显示文件开头tail:显示文件结尾sort:按次序显示文件uniq:去掉文件中重复的行diff:比较两个文件file:测试文件内容20Linux的基本命令(3)echo:显示文本date:显示时间和日期gzip:压缩文件gunzip:解压缩文件bzip2:压缩文件tar:打包和解包文件whereis:查找命令which:查找实用程序21Linux的基本命令(4)ps:列出进程df:检查文件系统空间占用情况 du:显示磁盘空间的使用情况 kill:杀死进程chm
5、od:改变文件或目录的访问权限 chown:改变文件或目录的属主和组 chgrp:改变文件或目录所属的组 info:获得帮助22Linux的基本命令(5)pwd:显示当前工作目录的绝对路径rpm:文件包管理clear:清屏ln:创建文件链接who:列出系统上的用户名单write:发送消息talk:与其他用户通信man:获取帮助23熟悉嵌入式开发平台熟悉引导启动代码和内核的烧写24需要熟悉的内容开发板硬件基本配置开发板与PC机连接方式PC机相关配置熟悉bootloader的使用深入理解开发内容巩固开发流程25Bootloader烧写示范Linux环境(虚拟机)简介超级终端和DNW的配置Bootl
6、oader的显示信息简介(标准BIOS)内核、文件系统的演示26嵌入式Linux下的应用程序开发27开发工具-编辑器vivi的基本使用方法 输入模式输入模式 命令模式命令模式28vi-开始编辑开始编辑新增新增(append)-a a 从 光 标 所 在 位 置 後 面 开 始 新 增 资 料,光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。-A A 从 光 标 所 在 列 最 後 面 的 地 方 开 始 新 增 资 料。插插 入入(insert)-i i 从 光 标 所 在 位 置 前 面 开 始 插 入 资 料,光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。-I I
7、 从 光 标列 的 第 一 个 非 空 白 字 符 前 面 开 始 插 入 资 料。开开 始始(open)-o o 在 光 标 所 在 列 下 新 增 一 列 并 进 入 输 入 模 式。-O O 在 光 标 所 在 列 上 方 新 增 一 列 并 进 入 输 入 模 式。29vi-删除与修改删除与修改 x x 删除光标所在字符。dddd 删除光标所在的列。r r 修改光标所在字符,r後接著要修正的字符 R R进入取代状态,新增资料会覆改原先资料,直到按ESC回到指令模式下为止。s s 删除光标所在字符,并进入输入模式。S S 删除光标所在的列,并进入输入模式。30vi-退出命令退出命令不保存
8、退出不保存强制性退出保存编辑存入文件filename 中强制性存入文件filename 中()保存并退出(shift+zz)31vi-光标移动命令光标移动命令移动到当前单词的开始移动到当前单词的结尾向前移动一个单词向前移动一个字符向上移动一行向下移动一行向后移动一个字符32vi-改变与替换操作命令改变与替换操作命令替换光标所在的字符替换字符序列替换一个单词同替换光标所在的前一字符替换自光标位置至行尾的所有字符同替换当前行33vi-拷贝与粘贴命令拷贝与粘贴命令将光标所在单词拷入剪贴板将光标至行尾的字符拷入剪贴板同将当前行拷入剪贴板将剪贴板中的内容粘贴在光标后将剪贴板中的内容粘贴在光标前利用利用V
9、i编写一个编写一个helloworld程序!程序!3435开发工具-编译器GCC全称为GNU CC,GNU项目中符合ANSI C标准的编译系统 编译如C、C+、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言一个交叉平台编译器,适合在嵌入式领域的开发编译 36GCC编译器GNU Compiler CollectionC,C+,Objective-C,Fortran,Java,Adahttp:/gcc.gnu.orgGCC 4.2.2 GCC 2.95 July 31,1999 GCC 3.0 June 18,2001 GCC 3.2 August 1
10、4,2002 GCC 3.3 May 13,2003 Oct 9,2007 December 3,1997 37GCC简介gcc所支持后缀名解释.c C原始程序.C/.cc/.cxxC+原始程序.mObjective-C原始程序.i 已经过预处理的C原始程序.ii 已经过预处理的C+原始程序.s/.S 汇编语言原始程序.h 预处理文件(头文件).o 目标文件.a/.so编译后的库文件38编译器的作用源代码*.c预处理器头文件*.h编译器目标代码*.o可执行文件引导代码库函数汇编处理链接Gcc的编译流程分为四个步骤 预处理(Pre-Processing)编译(Compiling)汇编(Assem
11、bling)链接(Linking)39“hello”的演变历程Pre-processor(cpp/Gcc-E)Compiler(cc1/Gcc-S)Assembler(as/Gcc-c)Linker(ld)hello.c(text)hello.i(text)hello.s(text)hello.o(binary)hello(binary)printf.o(binary)40理解交叉编译及环境建立41GCC交叉编译器GNU BinutilsGNU Binutils 的主要工具有两个,一个是连接程序ld,另外一个是汇编程序as。其主要目的是为GNU 系统,提供汇编和连接工具。GNU GCCGNU
12、GCC 就是上面提到的GCC,GCC 主要是为GNU 系统提供C 编译器。现在支持多种语言,这其中包括C/C+、Fortran、Java、Objective-C、甚至还有Ada。GNU GLibc用于定义系统调用和其它一些基本的函数调用。42GCC交叉编译器的生成第1步,取得Binutils、GCC、Glibc 源码。第2步,配置并编译Binutils 取得我们所需要的汇编和连接程序。第3步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步生成的Glibc 的C 函数库,再编译生成其它编译器。第4步,配置Glibc 并编译生成Glibc 的C 函
13、数库。第5步,再次配置和编译GCC 源码,生成其它语言的编译器,如C+编译器等。43工具链代码结构44TARGET常用的值实际平台TARGET的值PowerPCpowerpc-linuxARMarm-linuxMIPS(big endian)mips-linuxMIPS(little endian)mipsel-linuxSuperH 4sh4-linux45交叉编译流程crosstool介绍crosstool是由Dan Kegel开发的一套脚本程序,可以自动编译不同版本的gcc、glibc,并做出测试。在crosstool软件包中,提供了从互联网下载软件包的脚本,例如glibc-get.sh
14、脚本可以下载glibc软件包。有关crosstool的详细信息,读者可以访问其官方网站和其他一些网络资源:http:/ profile。然后arm-linux-gcc v,如果显示是2.9.53。则说明环境配置成功。更改环境变量有几种方法,其中之一是更改etc/profile文件(开机启动时配置)中的PATH,将相冲突的屏蔽掉。另一种方法是重新定义PATH,然后用export导出(export命令可以修改,但重启之后?):可编辑/etc/bashrc文件,在最后增加路径 export PATH=/usr/local/arm/2.95.3/bin:|$PATH,则以后编译内核或其它程序均可用ar
15、m-linux-来制定交叉编译器。49嵌入式Linux下的应用程序调试技巧50 调试器-Gdb调试流程 首先使用gcc对test.c进行编译,注意一定要加上选项-g#gcc-g test.c-o test#gdb test GNU gdb Red Hat Linux(6.3.0.0-1.21rh)Copyright 2004 Free Software Foundation,Inc.GDB is free software,covered by the GNU General Public License,and you arewelcome to change it and/or distr
16、ibute copies of it under certain conditions.Type show copying to see the conditions.There is absolutely no warranty for GDB.Type show warranty for details.This GDB was configured as i386-redhat-linux-gnu.Using host libthread_db library/lib/libthread_db.so.1.(gdb)51 Gdb调试流程 查看文件(gdb)l设置断点(gdb)b 6查看断点
17、情况查看断点情况(gdb)info b运行代码运行代码(gdb)rv查看变量值(gdb)p nv单步运行(gdb)n(gdb)sv恢复程序运行(gdb)cv帮助(gdb)help command 52Gdb的使用切记点在Gcc编译选项中一定要加入-g。只有在代码处于“运行”或“暂停”状态时才能查看变量值。设置断点后程序在指定行之前停止 53Gdb调试运行被调试程序,设置所有的能影响该程序的参数和变量。保证被调试程序在指定的条件下停止运行。当被调试程序停止时,让开发工程师检查发生了什么。根据每次调试器的提示信息来做响应的改变,以便修正某个错误引起的问题54嵌入式程序调试-NFS熟悉Uboot的烧
18、写方法和使用按照实验指导配置tftp服务按照实验指导配置NFS服务利用NFS调试经交叉编译后的程序55 Makefile简介56工程管理器-Make工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 MakeMake将只编译改动的代码文件,而不用完全编译。将只编译改动的代码文件,而不用完全编译。将只编译改动的代码文件,而不用完全编译。将只编译改动的代码文件,而不用完全编译。57Makefile基本结构Makefil
19、e是Make读入的唯一配置文件 由make工具创建的目标体(target),通常是目标文件或可执行文件要创建的目标体所依赖的文件(dependency_file)创建每个目标体时需要运行的命令(command)Makefile格式target:dependency_filescommand例子hello.o:hello.c hello.hgcc c hello.c o hello.o58Makefile规则 隐式规则隐含规则能够告诉make怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可 C编译:.c变为.o$(CC)c$(CPPFLAG
20、S)$(CFLAGS)C+编译:.cc或或.C变为.o$(CXX)-c$(CPPFLAGS)$(CXXFLAGS)59Makefile规则 模式规则 模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则,隐式规则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化了Makefile的编写 模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明 60Make使用直接运行make 选项-C dir读入指定目录下的Makefile-f file读入当前目录下的file文件作为Makefile-i忽略所有的命令执行错误-I
21、dir指定被包含的Makefile所在目录-n只打印要执行的命令,但不执行这些命令-p显示make变量数据库和隐含规则-s在执行命令时不显示命令-w如果make在执行过程中改变目录,打印当前目录名61Autotools简介对于一个较大的项目而言编写Makefile难度较大autotools系列工具只需用户输入简单的目标文件、依赖文件、文件目录等就可以轻松地生成Makefileautotools工具还可以完成系统配置信息的收集,从而可以方便地处理各种移植性的问题Linux上的软件开发一般都用autotools来制作Makefile 62 autotools使用流程 63使用Makefilemak
22、e 键入make默认执行make all命令,即目标体为all make install 把该程序安装到系统目录中去 make clean 清除之前所编译的可执行文件及目标文件(object file,*.o)make dist 将程序和相关的文档打包为一个压缩文档以供发布 Shell脚本简介Shell脚本的本质编译型语言解释型语言Shell脚本语言是解释型语言Shell脚本的本质:ShellShell命令的有序集合命令的有序集合命令的有序集合命令的有序集合。shell编程的基本过程编程的基本过程基本过程分为三步:Step1.建立 shell 文件 包含任意多行操作系统命令或shell命令的文
23、本文件;Step2.赋予shell文件执行权限 用chmod命令修改权限;Step3.执行shell文件 直接在命令行上调用shell程序.Step1:建立建立shell文件文件(可用任何建立文本文件的方法可用任何建立文本文件的方法)$cat prog1 who|grep$1Step2:赋予执行权限赋予执行权限:(初始文本文件无执行权限初始文本文件无执行权限)$chmod 740 prog1Step3:执行该执行该shell程序程序$prog1 wdl prog1:not found (shell在标准搜索目录中找不到prog1命令)Step4:指定路径或修改环境变量指定路径或修改环境变量PA
24、TH后执行后执行shell程序程序$./prog1 wdl wdl tty06 Feb 8 09:12实例Shell变量Shell允许用户建立变量存储数据,但不支持数据类型(整型、字符、浮点型),将任何赋给变量的值都解释为一串字符Variable=value命名规则同C+中的命名规则count=1Echo$countDATE=dateEcho$DATEshell变量Bourne Shell主要有如下三种变量:用户自定义变量 位置变量即 shell script之参数 环境变量用户自定义变量在在shell编程中通常使用全大写变量,方便识别编程中通常使用全大写变量,方便识别$COUNT=1变量的调
25、用:在变量前加变量的调用:在变量前加$echo$HOME Linux Shell/bash从右向左赋值从右向左赋值$Y=y$X=$Y$echo$X y 使用使用unset命令删除变量的赋值命令删除变量的赋值$Z=hello$echo$Z hello$unset Z$echo$Z 位置变量$0 与键入的命令行一样,包含脚本文件名$1,$2,$9 分别包含第一个到第九个命令行参数$#包含命令行参数的个数$包含所有命令行参数:“$1,$2,$9”$?包含前一个命令的退出状态$*包含所有命令行参数:“$1,$2,$9”$包含正在执行进程的ID号shell环境变量CDPATH:用于cd命令的查找路径 H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 嵌入式 软件 开发 简介 linux PPT 课件
限制150内