《嵌入式系统第5讲.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统第5讲.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、18 一月 2023生物医学工程学院电子技术系1第五讲 Linux操作系统 18 一月 2023生物医学工程学院电子技术系2第6章 Linux操作系统 n本章主要内容nLinux概论n嵌入式LinuxnuClinux操作系统及其开发环境n嵌入式实时操作系统和实时LinuxnLinux常见术语和常用命令ngcc编译器和makefile18 一月 2023生物医学工程学院电子技术系3第6章 Linux操作系统 第1节 Linux起源 18 一月 2023生物医学工程学院电子技术系4第1节 Linux起源6.1 Linux概论nLinux具备UNIX系统的全部特征,多任务、虚拟内存、共享库、需求装载
2、、共享的写时复制程序执行、内存管理及TCP/IP网络支持。18 一月 2023生物医学工程学院电子技术系56.1 Linux起源6.1.1 linux的起源nLinux属于一种具有UNIX风格的操作系统,它的源代码级上兼容绝大部分UNIX标准(如IEEE POSIX、System V、BSD),支持多用户、多线程,实时性较好,功能强大、性能稳定。可以运行在x86PC、Sun Sparc、Digital Alpha、680 x0、PowerPC、MIPS等平台上。n1990年,芬兰赫尔辛基大学的学生用汇编语言编写一个在80386保护模式下处理多任务切换的程序,这是最早出现的Linux操作系统的雏
3、形。n1993-1994,诞生了Linux1.0版,该版已是一个功能完备的操作系统了。1.3版的Linux开始向其他平台移植。n2.1.xx内核出现后开始走高端道路,具备良好的兼容性和可移植性。18 一月 2023生物医学工程学院电子技术系66.1 Linux起源6.1.2 Linux与GNUn当前流行的软件可分为:商业软件、共享软件和自由软件。n1984年,出现了一个基于自由软件的软件计划,被称为GNU(Gnus Not UNIX),目标是替代UNIX操作系统,并拟定了一份称为公共版式权许可(GPL)的文件。其宗旨是:消除对于计算机程序拷贝、分发、理解和修改的限制。源代码公开。18 一月 2
4、023生物医学工程学院电子技术系76.1 Linux起源n使用Linux的理由nLinux和商用UNIX都基本支持同样的软件、程序设计环境和网络特性,可以说Linux是UNIX的PC版本,Linux在PC机上提供了相当于UNIX工作站的性能。nLinux是免费软件,用户可以从网上下载,而商用的UNIX除了软件本身的价格外,用户还需支付文档、售后服务费用;nLinux拥有GNU软件支持,Linux能够运行GNU计划的大量免费软件,这些软件包括应用程序开发、文字处理、游戏等方面的内容;nLinux的开发是开放的,任何志愿者都可以对开发过程做出贡献;而商用UNIX则是由专门的软件公司进行开发的。18
5、 一月 2023生物医学工程学院电子技术系8nLinux的功能n主机管理n系统安装n硬件配置n文本编辑n桌面系统n文件系统nshell编程n用户管理n备份还原n网络服务n网络协议nDNSnDHCPnSambanNFSnFTPnHTTP,WWWnEmailn网络安全18 一月 2023生物医学工程学院电子技术系9nLinux 9中的主要套件套件名版本号Kernel2.4.20-8KDE3.0.3Gcc3.2.2Web ServerApache2.0GNU Emacs21.2GNome2.0GnomeMeeting0.93.1MrProject0.9-4Mozilla1.2.1-26PostFix
6、1.1.11Perl5.8.0Gphoto22.1.0CUPS1.1.1718 一月 2023生物医学工程学院电子技术系10n文件系统的多级树状目录结构18 一月 2023生物医学工程学院电子技术系11nLinux的目录结构n树型目录结构ndir1/-dir2/-file12n|-dir3/-n|-dir4n|.n.n根目录组织n/-root/:超级用户目录 包括桌面管理等 n|-home/:用户目录 包括用户信息等 n|-bin/:执行目录可执行文件常用命令 n|-sbin/:执行目录不提供给用户使用的命令 n|-boot/:引导目录引导系统使用的文件 n|-etc/:配置目录 系统配置时使
7、用 18 一月 2023生物医学工程学院电子技术系12n|-dev/:设备目录 通过它访问外设 n|-mnt/:安装目录 管理员设备临时安装点 n|-opt/:安装目录 管理员软件包放置点 n|-lib/:库目录 命令执行时使用 n|-usr/:共享目录 所有用户的共享文件n|-var/:数据目录 系统运行时要修改数据 n|-tmp/:数据目录 系统运行时要修改数据 n|-proc/:虚拟目录 文件系统内存产生n|-lost+found/:空目录 18 一月 2023生物医学工程学院电子技术系136.1 Linux起源6.1.3 Linux内核概况nOS的内核是计算机系统的心脏,是最高管理机构
8、。Linux内核包含了5大部分内容:进程调度,内存管理,进程间通信,虚拟文件系统及网络接口。1.Linux内核在操作系统中的位置n图6.1为Linux内核在操作系统的位置图示。nLinux操作系统由4个层次组成:用户进程、系统调用接口、Linux内核和硬件。18 一月 2023生物医学工程学院电子技术系146.1 Linux起源用户进程系统调度Linux内核硬件18 一月 2023生物医学工程学院电子技术系152.Linux内核的抽象结构nLinux内核由5个子系统组成。6.1 Linux起源内存管理(硬件无关、硬件相关)进程调度进程间通信虚拟文件系统(逻辑文件系统、设备驱动程序)网络(网络协
9、议、网络设备驱动程序)18 一月 2023生物医学工程学院电子技术系16 进程调度子系统:控制进程对CPU的访问。Linux使用基于优先级的进程调度算法。内存管理子系统:允许多个进程安全地共享主内存区域。逻辑上分为:硬件无关:提供进程的映射和虚拟内存的对换。硬件相关:为内存管理硬件提供了虚拟接口。6.1 Linux起源18 一月 2023生物医学工程学院电子技术系17 虚拟文件系统子系统(VFS):避开了各种硬件的具体细节,为所有硬件提供统一的接口。VFS分为:逻辑文件系统:Linux支持的文件系统。如ext2,FAT。设备驱动程序:为某种硬件的设备驱动。网络子系统:提供对各种网络标准协议的存
10、取和各种网络硬件的支持。可为分:网络协议和网络设备驱动程序。进程间通信子系统(IPC,Interprocess Communication):提供进程间多种通信机制。多个进程同时在同一任务协调工作上,需要进程间进行信息交互。Linux提供包括管道(pipe)、System V的IPC机制和信号、网络兼容的进程间通信机制Sockets。6.1 Linux起源18 一月 2023生物医学工程学院电子技术系186.1 Linux起源6.1.4 Linux内核的微型化n嵌入式应用对操作系统的要求是:功能具有针对性,效率高,占用资源少,启动速度快,有些应用需要实时性。Linux是开放内核的,因此可根据应
11、用的需要定制。n Linux内核采用模块化设计,许多模块可独立加上或卸下,设计时采用将相应的内核模块作为可选的选项,在编译系统内核时指定。18 一月 2023生物医学工程学院电子技术系19第6章 Linux操作系统第2节 嵌入式Linux18 一月 2023生物医学工程学院电子技术系206.2 嵌入式Linux6.2 嵌入式Linuxn嵌入式Linux:经过小型化裁剪后,能够固化在容量为几百KB至几十MB的存储器芯片或单片机中。18 一月 2023生物医学工程学院电子技术系216.2 嵌入式Linux6.2.1 Linux应用于嵌入式系统的优势和不足nLinux的优势 开放源代码,软件资源丰富
12、 内核功能强大 支持多种体系结构n支持:Intel x86、Motorola 68K系列、IBM、Apple、Motorola PowerPC、Intel Strong ARM、XScale。完善的网络通信和成熟的文件图形系统n支持网络协议:TCP/IP,嵌入式TCP/IPn支持文件系统:ext2、FAT16、FAT32、romfs。n支持图形系统:X Windows、Embeded QT、MiniGUI、嵌入式GUI。丰富的驱动程序 完备的开发工具链18 一月 2023生物医学工程学院电子技术系226.2 嵌入式Linux6.2.1 Linux应用于嵌入式系统的优势和不足nLinux的不足
13、软件开发的效率和功能n Linux采用“Native方式”进行开发,即本机开发、调试和本机运行的方式。一般系统这种方式是没问题的,一旦开发较强的嵌入式应用系统时,缺乏足够的资源在本机上运行开发工具和调试设备,因此通常采用交互式编译调试方式(如GNU编译器)。软件的实时性问题n实时性是许多嵌入式系统所要求的,Linux本身不是一种实时操作系统,其内核不是完全可抢占的。内存及其管理问题n一个典型Linux内核未压缩时至少占1.5MB左右内存,运行时达4MB,甚者达几百MB。n另一方面:标准Linux针对带内存管理单元(MMU)的处理器,但许多嵌入式处理器不带MMU。18 一月 2023生物医学工程
14、学院电子技术系236.2 嵌入式Linux6.2.2 嵌入式Linux的应用举例nPDAn新型手机n机顶盒n各种与网络相关的BOXn其他18 一月 2023生物医学工程学院电子技术系24第6章 Linux操作系统第3节 uCinux操作系统及其开发环境18 一月 2023生物医学工程学院电子技术系256.3 uCinux操作系统及其开发环境nuClinux(Clinux):微控制linux,因多应用于嵌入式系统,故称为嵌入式uClinux。nuClinux操作系统组成:引导程序、uClinux内核和文件系统。nuClinux通过定制小型化,放在ROM、RAM、Flash或片上磁盘(disk o
15、n chip)中启动。18 一月 2023生物医学工程学院电子技术系266.3 uCinux操作系统及其开发环境6.3.1 uClinux操作系统1uClinux内核结构n uClinux内核结构如图6.8所示,与Linux基本相同,不同部分改写了内存管理和进程管理,可用于无MMU的处理器的应用场合。n uClinux是Linux2.0内核发展来的,为无MMU的处理器设计的嵌入式Linux操作系统。18 一月 2023生物医学工程学院电子技术系276.3 uCinux操作系统及其开发环境2采用的小型化方法n uClinux是由Linux裁剪后行得到的,被固化在容量只有几百KB的存储器芯片或单片
16、机上。内核加载方式方面nLinux在启动时加载到内存中运行,而uClinux的内核可加载到内存中运行,也可加载到Flash上直接运行。根(root)文件系统方面nuClinux采用romfs文件系统,特点(与ext2文件系统比较):空间小。原因该文件系统所用的代码少,文件系统相对简单。建立文件系统超级块时需要较少的存储空间。不支持动态擦写保护。需要动态保存数据时,采用虚拟RAM盘(ext2文件系统)或Flash(jffs文件系统)。应用程序库方面nuClinux精简了libc库,对用户程序采用静态链接的形式,尽管会使应用程序变大,但比较适合基于内存管理的模式,也适合于嵌入式系统的通常做法。18
17、 一月 2023生物医学工程学院电子技术系286.3 uCinux操作系统及其开发环境3内存管理nuClinux与标准Linux的最大区别在于内存管理,由此产生一些新的问题。nLinux适合有MMU的处理器,虚拟地址被送到MMU,MMU把虚拟地址映射为物理地址,不同任务有相应的虚拟物理地址转换映射,实现不同任务间的保护。n对于uClinux,不能使用虚拟内存管理技术,采用存储器分页管理,系统在启动时对实际存储器进行分页,在加载应用程序时程序分页加载,属于实存储器管理(,Real Memeory Management)策略。程序中访问的地址都是实际的物理地址,操作系统对内存空间没有保护,所有进程
18、共享一个运行空间。程序员在编译内核时,需要对内存进行分页。18 一月 2023生物医学工程学院电子技术系296.3 uCinux操作系统及其开发环境4多进程处理n由于uClinux没有管理内存,因此在进程之间切换时需要对数据进行保护。启动新的应用程序时,系统需为应用程序分配存储空间,将应用程序加载到内存,对其定位处理,使程序在执行时能直接使用物理内存。5实时性的解决方案nuClinux不具备实时性的能力,实时性方案由RTLinux(Real Time Linux)来实现,RT Linux执行管理器把inux的内核作为一个任务运行,同时管理实时进程,而非实时进程交由普通Linux内核处理。uCl
19、inux使用了RT Linux的补丁,解决了实时问题。18 一月 2023生物医学工程学院电子技术系306.3 uCinux操作系统及其开发环境6.3.2 uClinux的应用开发环境n开发环境由目标系统硬件开发板和宿主构成。前者运行操作系统和应用程序;后者完成操作系统内核的编译、应用程序的开发和调试。n首先在上安装标准Linux发行版,如RedHat Linux,或者在windows下安装一套模拟Linex环境的软件,如Cygwin。n可在网上获得uClinux和相关工具集的源代码。n开发环境建立:结合实验建立开发环境。18 一月 2023生物医学工程学院电子技术系316.3 uCinux操
20、作系统及其开发环境6.3.2 uClinux的应用开发环境n如果是团队开发,最好架设一台Linux服务器,开发人员从客户端使用Telnet登录到服务器,开发板也连接到同一个局域网内。n使用服务器的Linux环境下的gcc编译生成目标代码,通过FTP传到每个客户端,再通过串口或网络下载到开发板。n下面是一个网络架构的开发环境示意图。18 一月 2023生物医学工程学院电子技术系326.3 uCinux操作系统及其开发环境Linux服务器(Host)客户机1客户机2客户机3客户机4开发板(Target)交换机嵌入式系统网络开发环境18 一月 2023生物医学工程学院电子技术系336.3 uCinu
21、x操作系统及其开发环境6.3.2 uClinux的应用开发环境n开发环境的建立通常按如下步骤进行。安装编译工具包nuClinux有两套编译工具:m68k-coff 和m68k-elf,都是GNU C语言编译器的不同版本。两者的差异仅在于中间代码格式的不同,coff和elf格式。后者的编译器比前者有许多优势,通常使用后者编译器。编译工具包还有链接器(ld)、汇编器(as),以及一些为了方便开发的二进制处理工具。18 一月 2023生物医学工程学院电子技术系346.3 uCinux操作系统及其开发环境 安装uClinux内核n利用已安装的交叉编译器编译生成运行于目标机上的uClinux内核。与标准
22、Linux相同,uClinux内核可以用配置的方式选择需要安装的模块,提高系统的灵活性。安装应用程序库n用交叉编译器编译uC-libc和uC-libm源代码,生成libc.a应用库和libm.a数学库。18 一月 2023生物医学工程学院电子技术系356.3 uCinux操作系统及其开发环境 安装其他工具n用gcc编译elf2flt源代码,生成格式转换工具elf2flt;n用gcc编译genromfs源代码,得到生成romfs文件系统的工具genromfs。编写设备驱动程序及实时模块n完成上述4部分后,就可以针对特定应用所需要的设备来编写或改造设备驱动程序了。n有一些设备驱动,uClinux本
23、身携带。没有的设备驱动,用户编写后加入到uClinux内核中。n有硬件实时性要求时,可以加入RT Linux的实时模块。18 一月 2023生物医学工程学院电子技术系366.3 uCinux操作系统及其开发环境6.3.3 uClinux的一些说明1.开发套件nGNU开发套件包括一系列的开发调试工具.gcc:编译器,可以作为交叉编译工具,即在主机上开发编译目标板上可运行的二进制文件。binutils:一组开发工具,包括连接器(ld),汇编器(as),反编译器(objdump)以及其他用于目标文件和档案的工具。gdb:软件调试器,可使用多种交叉调试方法,例如,gdb-JTAG(背景调试工具)、gd
24、bserver(使用以太网进行远程调试)等。18 一月 2023生物医学工程学院电子技术系376.3 uCinux操作系统及其开发环境2.uClinux的打印终端n通常,uClinux默认的标准输入/输出被重定向到串口1(/dev/ttyS0)。n内核在启动时将所有信息输送到串口终端,并通过串口终端与系统交互。nuClinux在启动时启动了telnetd(远程登录服务),可远程登录到系统,控制系统的运行。n是否允许远程登录,在烧写romfs文件系统时由用户确定。18 一月 2023生物医学工程学院电子技术系386.3 uCinux操作系统及其开发环境3.交叉编译调试工具n链接时使用的相关文件:
25、nld文件:指出链接时内存映像格式的文件。nCrt0.S:应用程序编译链接时需要的启动文件,主要是初始化应用程序栈。nPic:与位置无关的二进制格式文件,在程序段中必须包括reloc段,保证代码加载时可以进行重新定位。n内核编译链接时,使用ld文件,形成可执行文件映像,所形成的代码段可用间接寻址,也可用绝对寻址。由于内核可用绝对寻址,所以内核加载到的内存空间必须与ld文件给定的内存空间完全相同。n应用程序由内核加载,由于应用程序的ld文件给出的内存空间与应用程序实际被加载的内存位置可能不同,因此在应用程序加载的过程中需要重新定位。18 一月 2023生物医学工程学院电子技术系396.3 uCi
26、nux操作系统及其开发环境4.其他名词术语ncoff:一种通用的对象文件格式。nelf:一种为Linux系统所采用的通用文件格式,支持动态链接。nflat:由于elf格式文件头很大,flat文件对文件头和一些段信息做了简化。uClinux系统只支持flat可执行文件格式,gcc的编译器不能直接形成flat格式,可形成coff和elf格式的可执行文件。通过coff2flt或elf2flt工具进行格式转化,形成flat格式文件。18 一月 2023生物医学工程学院电子技术系40第6章 Linux操作系统第4节 嵌入式实时操作系统和实时Linux18 一月 2023生物医学工程学院电子技术系41第6
27、章 Linux操作系统6.4 嵌入式实时操作系统和实时Linuxn嵌入式系统最重要的任务是具有实时操作系统的功能。Linux本质上不是一个嵌入式实时操作系统,其内核调度基本沿用UNIX系统的,在运行内核线程时中断关闭,分时调度策略存在时间上的不确定性,缺乏高精度的计时器。因此实时应用场合,需要进行实时化改造,构造出一个具有实时处理能力的嵌入式系统。n引入RT Linux,将uClinux作为RT Linux的一个任务,RT Linux处理实时任务,uClinux处理非实时任务,非实时任务不会影响实时任务,实时代码和非实时代码分开设计。18 一月 2023生物医学工程学院电子技术系42第6章 L
28、inux操作系统6.4 嵌入式实时操作系统和实时LinuxnRT Linux是含有时间紧要的函数,可以用中断管理来精确控制中断处理,从而保证关键中断能够在需要时得到执行。n与传统的RTOS相比,采用像嵌入式Linux这样开放源代码的操作的一个好处是Linux开发团队可能会比RTOS的供应商更快地支持新的IP协议和其他协议。18 一月 2023生物医学工程学院电子技术系43第6章 Linux操作系统第5节 Linux常用术语和常用命令18 一月 2023生物医学工程学院电子技术系446.5 Linux常用术语和常用命令6.5.1 Linux常用术语1POSIXnPOSIX是可移植操作系统接口(P
29、ortable Operating System Interface)的首字母缩写。POSIX是基于UNIX的,这一标准意在期望获得源代码级的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。POSIX标准定义了操作系统应该为应用程序提供的接口:系统调用集。POSIX是由IEEE(Institute of Electrical and Electronic Engineering)开发的,并由ANSI(American National Standards Institute)和ISO(Internati
30、onal Standards Organisation)标准化。大多数的操作系统(包括Windows NT)都倾向于开发它们的变体版本与POSIX兼容。18 一月 2023生物医学工程学院电子技术系456.5 Linux常用术语和常用命令2GNUnGUN项目(GNU Project)开始于1984年,主要由自由软件基金(Free Software FoundationFSF)资助的一个项目,目标是开发一个自由的、UNIX类型的操作系统,称为GNU系统。nGNU是“GNUs Not UNIX”的首字母的递归缩写。nGNU项目已经有许多编程工具,包括Emacs编译器、著名的GNU C和C+编译器(
31、gcc和g+),适用任何计算机系统。18 一月 2023生物医学工程学院电子技术系46nGNU工具和所谓的Linux,通常包含:n符合POSIX标准的操作系统Shell和外围工具;nC语言编译器和其他开发工具及函数库;nX Window窗口系统;n各种应用软件,包括字处理软件、图像处理软件等;n其他各种Internet软件,包括FTP服务器、WWW服务器;n关系数据库管理系统等。18 一月 2023生物医学工程学院电子技术系476.5 Linux常用术语和常用命令3GPL(General Public License)n所有的GNU软件和派生工作均遵循GNU通用公共许可证,即GPL。nGPL主
32、要目标:n是保证软件对所有的用户来说是自由的。GPL通过如下途径实现这一目标n它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。n它提醒每个用户,对于该软件不提供任何形式的担保。n如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL软件,也就是说必须随应用程序一起发布源代码。nGPL并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。18 一月 2023生物医学工程学院电子技术系48nGNU LGPL(Library General Public License程序
33、库公共许可证)n允许用户在自己的应用程序中使用程序库,即使不公开自己的源代码。用户必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。n遵循LGPL的一种方法是,随应用程序一起发布目标代码以及可以将这些目标程序和受LGPL保护的程序库链接起来的makefile文件。n遵循LGPL的另一种比较好的方法是使用动态链接。nFSF:Free Software Foundation 自由软件基金18 一月 2023生物医学工程学院电子技术系496.5 Linux常用术语和常用命令6.5.2 Linux常用命令以下均以RedHat Linux为例解释Linux常用命令1.基本命
34、令ls:显示当前目录下的所有文件目录。ls-a:可以看到隐藏的文件,如以“.”开关的文件。pwd:显示当前目录路径。ps:列举当前TTY下所有进程。ps-A:列举系统中所有进程。cd目录名:进入目录。mkdir目录名:创建目录名。rmdir目录名:删除目录名。rm-rf目录名:强行删除整个目录内容(无法恢复),其中f表示强制不进行提示,r表示目录递归。18 一月 2023生物医学工程学院电子技术系502.文件目录匹配搜索的使用3.ncftp工具的使用nncftp是Linux环境下的FTP工具软件,命令格式:ncftp-u user 192.168.2.32 ;192.168.2.32为本机IP
35、地址,;user为本机的合法用户。18 一月 2023生物医学工程学院电子技术系514.编程时获取帮助man 类似于VC编程中的MSDN,man即为manual,是UNIX系统手册的电子版式本。5.取消root密码6.配置PC的IP地址7.压缩/解压缩18 一月 2023生物医学工程学院电子技术系528.查找文件9.vi(m)用法nVi是linux环境下的文本编辑器。10.软、硬盘及光驱的使用11.Linux下的硬盘分区18 一月 2023生物医学工程学院电子技术系53第6章 Linux操作系统第6节 gcc编译器和Makefile18 一月 2023生物医学工程学院电子技术系546.6 gc
36、c编译器和Makefile6.6.1 gcc编译器n gcc是GNU的C和C+编译器,它能编译3种语言:C、C+和object C(C语言的一种面向对象扩展)。n标准PC Linux上的gcc是针对Intel CPU的;n Arm-elf和arm-elf-as是某些arm系统开发套件针对arm no mmu系列处理器的gcc。ngcc是这套工具链的主角,交叉编译所使用的工具也需要gcc。18 一月 2023生物医学工程学院电子技术系55名称功能描述cppC预处理器g+C+编译器gccC编译器gccbug创建bug报告的shell脚本gcov是覆盖测试工具,用来分析在程序的哪里做优化的效果最好l
37、ibgcc*Gcc的运行库libstdc+标准C+库,包含许多常用的函数libsupc+提供支持C+语言的库函数gcc软件包18 一月 2023生物医学工程学院电子技术系566.6 gcc编译器和Makefile6.6.1 gcc编译器1gcc命令的常用选项-ansi:-c:-DMACRO:2id文件n编译完成之后,要用ld进行链接。18 一月 2023生物医学工程学院电子技术系576.6 gcc编译器和Makefile6.6.1 gcc编译器3gdbnLinux包含了一个称为gdb的GNU调试程序。是一个C和C+程序的调试器。n在程序运行时用于观察程序的内部结构和内存的使用情况。n在命令行上
38、输入gdb进入调试状态,可以在命令行上指定很多选项。或gdb 来启动gdb,并装入fname的可执行文件。n在编译时用-g选项打开调试选项。gdb常用命令自行阅读。18 一月 2023生物医学工程学院电子技术系586.6 gcc编译器和Makefile6.6.2 Makefilen一个开发项目通常由许多源文件组成,若用gcc一个一个地编译,显然十分费时,因此在工程上一般用Make工具来自动完成编译工作。nMake工具通过一个称为Makefile的文件来完成自动维护编译工作。1Makefile基本结构 需要由Makefile工具创建的项目,通常是目标文件和可执行文件,并使用“target”一词来
39、表示要创建的项目。要创建的项目依赖于哪些文件。创建每个项目时需要运行的命令。18 一月 2023生物医学工程学院电子技术系59n例如,有一个C+源文件test.c,包含头文件test.h,目标文件将是test.o。用makefile来定义test.o的创建规则。#This Makefile just is an example#The following lines indicate how test.o depend#test.c and test.h and how to create test.otest.o:test.c test.hg+-c g test.c18 一月 2023生物医
40、学工程学院电子技术系606.6 gcc编译器和Makefile2Makefile变量nGNU的 make工具除提供建立目标的基本功能外,还有便于表达依赖关系及建立命令的特色,例如,定义变量或宏如下:#Define macros for name of compilerCC=gcc#Define macro for the CC flagsCCFLAGS=-D_DEBUG g m486#A rule for building a object fileTest.0:test.c test.h$(CC)c$(CCFLAGS)test.c18 一月 2023生物医学工程学院电子技术系616.6 gc
41、c编译器和Makefile3.隐含规则nGNU make包含有关些内置的或隐含的规则,规则定义了如何从不同的依赖文件建立特定类型的目标。nGNU make支持两种类型的隐含规则。后缀规则(suffix rule):它将一个具有某种后缀的文件转换为具有另一种后缀的文件。.c.o$(CC)$(CCFLAGS)$(CCFLAGS)c-0$模式规则(pattern rule):%.c:%.o$(CC)$(CCFLAGS)$(CCFLAGS)c-0$18 一月 2023生物医学工程学院电子技术系626.6 gcc编译器和Makefile4Makefile范例n 直接在make命令的后同输入目标名可建立指定的目标。n如果直接运行make,则建立第一个目标。n用make f mymakefile命令来指定make使用特定的makefile,而不是默认的GNUmakefile、makefile或Makefile。18 一月 2023生物医学工程学院电子技术系63总结n熟悉Linux操作系统结构,熟悉uClinux操作系统及开发环境,熟悉嵌入式实时Linux的组成。n掌握基于Linux环境下的嵌入式系统编程方法。