linux 操作系统的移植及应用#高级教育

上传人:cl****1 文档编号:567680359 上传时间:2024-07-22 格式:PPT 页数:68 大小:1.16MB
返回 下载 相关 举报
linux 操作系统的移植及应用#高级教育_第1页
第1页 / 共68页
linux 操作系统的移植及应用#高级教育_第2页
第2页 / 共68页
linux 操作系统的移植及应用#高级教育_第3页
第3页 / 共68页
linux 操作系统的移植及应用#高级教育_第4页
第4页 / 共68页
linux 操作系统的移植及应用#高级教育_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《linux 操作系统的移植及应用#高级教育》由会员分享,可在线阅读,更多相关《linux 操作系统的移植及应用#高级教育(68页珍藏版)》请在金锄头文库上搜索。

1、Embest Info&Tech Co., LTD.linux 操作系统的移植及应用操作系统的移植及应用 培训中心培训中心 20101Embest Info&Tech Co., LTD.主要内容主要内容q嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境 linux内核配置与编译内核配置与编译 linux移植移植 系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核程序内核程序 linux应用程序开发应用程序开发2Embest Info&Tech Co., LTD.操作系统概述操作系统概述q为什么需要操作系统早期的8位/16位系

2、统中大多没有操作系统进入32位时代 - 系统中的软件越来越复杂,完全驾奴的能力不够 - 维护成本太高、系统升级困难使用嵌入式操作系统 - 稳定性好、性能高、功能完善 - 遵循标准,便于移植、升级3Embest Info&Tech Co., LTD.嵌入式操作系统的特点嵌入式操作系统的特点提供内核管理多任务管理外围资源管理要更稳定可裁剪、可配置实时性需求针对应用的优化与功能增强4Embest Info&Tech Co., LTD.典型的嵌入式操作系统典型的嵌入式操作系统uC/OS-II操作系统操作系统简单高效、免费、支持64个任务、支持多种CPU、无设备驱动程序、缺乏足够的应用模块。eCOS操作

3、系统操作系统免费使用、支持多种CPU、 使用GNU工具链开发、有完备的设备驱动程序和应用模块、支持POSIX标准、需要较多的系统资源。VxWorks嵌入式实时操作系统嵌入式实时操作系统销售额最大,价格昂贵;通常只提供二进制码内核;支持多种CPU;完整的开发工具和测试工具;完备的设备驱动和应用模块;支持POSIX标准;性能好,功能齐全。WinCE操作系统操作系统Microsoft出品、需购买许可、支持多线程、有优先级、虚拟内存、提供类似PC机的操作系统界面等。Linux操作系统操作系统类似UNIX;免费;源代码开放;符合POSIX标准;支持TCP/IP;支持绝大多数32位和64位CPU;抢先式多

4、任务处理;内存保护;虚拟内存等。5Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统qlinux概述概述 建立开发环境建立开发环境 linux内核配置与编译内核配置与编译 linux移植移植 系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核程序内核程序 linux应用程序开发应用程序开发6Embest Info&Tech Co., LTD.Linux操作系统操作系统最初设计为桌面系统,现广泛应用于服务器。Linux的特点:支持多种体系结构,支持大量外设,网络功能完善开放源代码,软件资源丰富,内核稳定而

5、高效,大小及功能均可定制。满足嵌入式操作系统的要求,目前在嵌入式领域高速发展,催生了一些嵌入式Linux,如uClinux、RTLinux1969年,Bell实验室,发明UNIX1991年,芬兰Linus Torvalds,设计了Linux7Embest Info&Tech Co., LTD.Linux内核版本号约定内核版本号约定x.y.zz - x:主版本号 - y:次版本号,奇数=开发版,偶数=稳定版 - zz:子版本号,当前版本的修订次数例如:2.4.18表示对核心2.4版本的第18次修订,该版本为可以使用的稳定版本。 8Embest Info&Tech Co., LTD.linux应用

6、特征应用特征广泛的处理器结构和硬件平台支持程序代码的质量与可靠度高 提供广泛的通信协议和软件标准支持丰富的应用软件和广泛的社群支持低廉的成本开源软件可靠的系统安全 9Embest Info&Tech Co., LTD.linux设计特征设计特征linux的内存管理linux的多进程处理linux针对实时性的解决方案执行程序的格式文件系统标准C函数库10Embest Info&Tech Co., LTD.linux系统组成系统组成q一个基于linux 的完整的嵌入式系统由三个部分组成:系统引导程序、linux 操作系统内核和文件系统。系统引导程序通常称作Boot Loader,平台上执行的第一段

7、代码,类似BIOS、BSP。内核比较精简,压缩后一般小于1M。文件系统主要存储用户应用程序,同时包括系统配置文件、系统程序和必需的驱动程序,根据用户所加入应用程序的大小,文件系统所占空间也存在比较大的差异。 采用分区存放11Embest Info&Tech Co., LTD.linux内核结构内核结构qLinux内核与大部分UNIX内核一样是单内核体系结构的,即它是由几个逻辑功能上不同的部分组合而成的大程序。单内核结构可以动态加载和卸载模块(module),能够根据需要定制内核映像的尺寸;具有很大灵活性,不需要重新编译内核且引导就能检验新的内核组件,方便用户构筑自己的个人内核。 q Linux

8、内核由5个主要的子系统组成,分别为:进程调度(SCHED)、内存管理(MM)、虚拟文件系统(Virtul File System,VFS)、网络接口(NET)和进程间通信(IPC)。 12Embest Info&Tech Co., LTD.内核结构示意图内核结构示意图13Embest Info&Tech Co., LTD.linux文件目录结构文件目录结构linux 发布版文件目录结构和功能如下图所示:14Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述q建立开发环境建立开发环境 编译运行编译运行linux linux移植移

9、植 系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核程序内核程序 linux应用程序开发应用程序开发15Embest Info&Tech Co., LTD.建立交叉编译环境建立交叉编译环境宿主机目标机LinuxWindows-Cygwin安装环境Linux环境下GNU工具(编译、链接)安装工具16Embest Info&Tech Co., LTD.Cygwin介绍介绍qCygwin软件是一个运行于windows下的Linux模拟环境。它包括:动态链接库Cygwin.dll一组Linux工具集qCygwin提供的一组功能强大的工具,包括大多数GNU软

10、件(如gcc,gdb,xfree86,bash,tetex,opengl,perl,python等),可以帮助开发人员将应用程序从Linux移植到Windows平台。qCygwin对于学习掌握Linux操作环境,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。17Embest Info&Tech Co., LTD.Cygwin的安装和设置(一)的安装和设置(一)下载网址:http:/ from Local Directory“,选择“下一步”,如图所示。18Embest Info&Tech Co., LTD.Cygwin的安装和设置(二)的安装

11、和设置(二)选择Cygwin的安装目录。选择DOS文本文件类型(DOS与UNIX文本类型的区别在于前者的换行为ASCLL的0x0D和0x0A组合,后者是0x0D)。选择“下一步”,如图所示。NTFS19Embest Info&Tech Co., LTD.Cygwin的安装和设置(三)的安装和设置(三)选择安装项目。点击在安装项目左边的“default”,可以调整该项目的安装设置。开发Linux必须选择全部安装以下项目: Admin - 包括启动服务cygrunsrv等工具,NFS启动必备 Archive - 压缩解压工具集 Base - 基本的Linux工具集 Devel - 开发工具集,包括

12、gcc、make等开发工具 Libs - 函数库 Net - 网络工具集 Shells - 常用Shell工具集 Utils - 包括bzip2等实用工具集20Embest Info&Tech Co., LTD.交叉编译链接工具介绍(一)交叉编译链接工具介绍(一)编译、汇编、链接工具编译、汇编、链接工具 : arm-linux-g+arm-linux-g+、arm-linux-c+arm-linux-c+ C+编译器。 arm-linux-c+filtarm-linux-c+filt C+语言支持函数重载,可以使用相同的函数名称和不同的函数参数,连接器使用本工具来过滤 C+和Java 符号,防

13、止重载函数冲突。 arm-linux-gccarm-linux-gcc 编译器。 arm-linux-asarm-linux-as 汇编器。 arm-linux-ldarm-linux-ld 连接器。 arm-linux-protoizearm-linux-protoize、arm-linux-unprotoize arm-linux-unprotoize gcc的可选部分,protoize在程序中增加函数原型,转换程序符合标准C规范。Unprotoize则清除所找到的的函数原型的参数。 21Embest Info&Tech Co., LTD.交叉编译链接工具介绍(二)交叉编译链接工具介绍(二

14、)实用工具集实用工具集 : arm-linux-addr2linearm-linux-addr2line arm-linux-ar arm-linux-ar arm-linux-nmarm-linux-nm arm-linux-objcopy arm-linux-objcopy arm-linux-objdump arm-linux-objdump arm-linux-ranlibarm-linux-ranlib arm-linux-readelfarm-linux-readelf 22Embest Info&Tech Co., LTD.交叉编译链接工具介绍(三)交叉编译链接工具介绍(三)文件

15、系统工具文件系统工具: cramfsck cramfsck CRAMFS文件系统的释放工具。 mkcramfsmkcramfs CRAMFS文件系统的生成工具。23Embest Info&Tech Co., LTD. 将Linux系统下的工具链安装解压包: cross-armtools-linux-edukit2410.tar.bz2 在控制台使用以下命令安装: 将cross-armtools-linux-edukit2410.tar.bz2拷贝到/tmp/目录下。 cd /tmpcd /tmp tar -P -xvjf cross-armtools-linux-edukit2410.tar.

16、bz2 tar -P -xvjf cross-armtools-linux-edukit2410.tar.bz2 source armtools-linux/cross-install.sh source armtools-linux/cross-install.sh 软件自动将工具链安装到/usr/arm-linux目录。开发工具链安装开发工具链安装24Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境qlinux内核配置与编译内核配置与编译 linux移植移植 系统引导程序系统引导程序Boot L

17、oader linux的文件系统的文件系统 linux内核程序调试内核程序调试 linux应用程序开发应用程序开发25Embest Info&Tech Co., LTD.安装安装linux源代码源代码linuxlinux官方网站官方网站linuxlinux源代码最新版本的下载地址为:源代码最新版本的下载地址为:http:/www.arm.linux.org.uk/developer/源代码包名称为linux-2.4.18-rmk7-pxa1-mz5.tar.bz2 。解压解压linuxlinux源代码包,执行命令:源代码包,执行命令:cd /usr/local/src/cd /usr/loca

18、l/src/tar -xvjf linux-2.4.18-rmk7-pxa1-mz5.tar.bz2 tar -xvjf linux-2.4.18-rmk7-pxa1-mz5.tar.bz2 26Embest Info&Tech Co., LTD.配置配置linuxlinux内核内核linux提供三个不同的命令进行提供三个不同的命令进行 linux的配置,效果完全一样。的配置,效果完全一样。 make menuconfigmake menuconfig make config make config make xconfig make xconfig 一般我们选择一般我们选择make xcon

19、fig,它提供一个图形界面,比较直观。,它提供一个图形界面,比较直观。27Embest Info&Tech Co., LTD.内核配置选项内核配置选项q内核编译以前首先应该对内核进行配置,裁剪不必要的内容,在完全实现硬件功能的前提下尽量节约空间。28Embest Info&Tech Co., LTD.编译编译linuxlinux内核内核cd /usr/local/src/kernelmake dep -搜索linux编译输出与源代码之间的依赖关系,并以此生成依赖文件make clean -清除以前构造内核时生成的所有目标文件、模块文件和临时文件。 make zImage -编译Linux内核,

20、生成压缩的内核映像文件 29Embest Info&Tech Co., LTD.运行运行linuxq通过编译最终在arch/arm/boot目录下生成1个文件: zImage linux 内核2.4.x的压缩方式可执行映像文件。 q烧写映像文件:烧写映像文件: 通过Flash烧写工具,分别将Bootloader(启动)、zImage以及 root.cramfs三个映像文件固化到Flash中。q配置超级终端:配置超级终端: 启动PC上超级终端软件并设置超级终端为115200 波特率,无校 验, 1 位停止位,无数据流控制。q运行运行linuxlinux: 复位EduKit4 2410开发板,通过

21、超级终端观察linux的启动运 行。30Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境 编译运行编译运行linuxqlinux移植移植 系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核程序内核程序 linux应用程序开发应用程序开发31Embest Info&Tech Co., LTD.linux的移植的移植处理器结构层次移植处理器结构层次移植芯片层次移植芯片层次移植目标板板级移植目标板板级移植32Embest Info&Tech Co., LTD.处

22、理器结构层次移植(处理器结构层次移植(1)q处理器结构的源文件在kernel/arch目录下;q包含所有已支持的处理器,以子目录形式提供,如arm、armnommu、m68k、mips64等;qlinux使用的是arm;q处理器结构文件目录主要由以下这些子目录组成:kernelkernel - 内核源代码 mm mm - 内存管理源代码 lib lib - 处理器特定的内部库函数 boot boot - 包含压缩内核的代码,也是内核文件最后编译生成的地方 toolstools - 包含自动产生文件的脚本 33Embest Info&Tech Co., LTD.处理器结构层次移植(处理器结构层次

23、移植(2)qlinux内核代码大部分独立于处理器与其体系结构,但其最底层的代码是由各处理器结构特定的。中断处理上下文、内存映射的维护、任务上下文和初始化过程等,这部分代码都在kernel/arch/目录下;处理器结构的头文件在kernel/include目录下; 设备驱动文件通常是在kernel/drivers目录下;分区类型和网络相关的部分则分别在kernel/fs和kernel/net目录下; q对一个新型的处理器结构,在移植中可参照其他的处理器结构,模仿与其相似的处理器体系结构程序编写,在某个处理器结构目录下修改文件使其达到待移植的处理器结构的要求。34Embest Info&Tech

24、Co., LTD.芯片层次移植芯片层次移植q芯片层次移植源程序主要集中在kernel/arch/arm/mach-xxxx目录,头文件在kernel/include/asm-arm/arch-xxxx目录,移植内容主要包括以下部分: 芯片层次移植芯片层次移植其他时钟脉冲频率定时中断中断处理内核启动代码芯片定义设备号35Embest Info&Tech Co., LTD.板级移植板级移植q当使用处理器已经被linux支持时,主要的工作就是针对硬件电路板的区别进行的板级移植。存储器参数存储器参数内核运行起始地址内核运行起始地址内核解压引导程序相关地址内核解压引导程序相关地址内核解压引导程序存储区初

25、始化内核解压引导程序存储区初始化驱动程序驱动程序36Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境 编译运行编译运行linux linux移植移植q系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核程序内核程序 linux应用程序开发应用程序开发37Embest Info&Tech Co., LTD.系统引导程序系统引导程序bootloaderbootloaderBIOSBSPBootloader商业商业OS38Embest Info&Tech Co.,

26、 LTD.PC引导方式引导方式qBIOS 在完成硬件检测和资源分配后,将硬盘中的 Boot Loader 读到系统的 RAM 中,然后将控制权交给 OS Boot Loader。qBoot Loader 的主要运行任务就是将内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。39Embest Info&Tech Co., LTD.嵌入式嵌入式Bootloaderq在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,因此整个系统的加载启动任务就完全由 Boot Loader 来完成。q系统在上电或复位时通常都从地址 0x00000000 处开始执行,而在这个

27、地址处安排的通常就是系统的 Boot Loader 程序。 40Embest Info&Tech Co., LTD.BootboaderBootboader的作用与特点的作用与特点qBootloader的作用是初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。qBootloader独立于操作系统,高度依赖于硬件,包括处理器的体系结构、具体型号、硬件电路板的设计。不可能实现一个通用的Bootloader。qlinux的发行包中不包含Booloader,但用户可以直接使用或参考一些开源的Bootloader软件工程。41Em

28、best Info&Tech Co., LTD.文件存放及引导方式文件存放及引导方式q1.Boot Loader、内核映像和文件系统映像在系统中的存储的典型空间分配结构图如下:q2. 如果RAM空间紧张,并且对系统执行速度要求不高,也常使用未经压缩的在Flash本地执行XIP(Execute In Place)方式的内核映像文件。q3.调试过程中:经常使用未经压缩的在Ram本地执行XIP方式的内核映像文件。与在Flash本地执行的映像文件的区别是它不需要将数据段从Flash拷贝到Ram中的过程。这种方式下,需要Boot Loader具有通过网口或串口下载内核映像文件并启动内核的功能。 42Em

29、best Info&Tech Co., LTD.系统引导程序系统引导程序最简功能设计最简功能设计禁止所有的中断禁止所有的中断设置处理器时钟、运行速度设置处理器时钟、运行速度存储区初始化存储区初始化设置堆栈指针将设置堆栈指针将bssbss段清零段清零跳转到内核映像的入口跳转到内核映像的入口43Embest Info&Tech Co., LTD.系统引导程序系统引导程序完备功能设计完备功能设计q设计一个完备的Boot Loader,可在最简功能基础上考虑是否增加以下功能: (1)上电自检; (2)支持串口通讯方式,提供串口方式的命令控制台; (3)支持以太网通讯方式,提供以太网通讯方式的命令控制台

30、; (4)可以通过串口或以太网下载并引导内核和文件系统映像文件; (5)支持通过串口或以太网通讯烧写映像文件到Flash; (6)能够读写I/O端口、存储区、寄存器; (7)配置功能,包括设置IP地址、MAC地址、系统时间等。44Embest Info&Tech Co., LTD.开源开源Boot LoaderBoot Loader常用的Boot Loader有以下几种:vivi、Blob、U-Boot等 实际应用中常常在VIVI源代码的基础上修改来制作系统的Boot Loader45Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux

31、概述概述 建立开发环境建立开发环境 编译运行编译运行linux linux移植移植 系统引导程序系统引导程序Boot Loaderq linux的文件系统的文件系统 linux内核程序调试内核程序调试 linux应用程序开发及调试应用程序开发及调试46Embest Info&Tech Co., LTD.Linux的文件系统的文件系统q文件系统是反映负责存取和管理文件信息的机构 。q文件系统通常是单独建立的 。q包含系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件,并作为存储数据读写结果的区域。 q文件系统的概念使得用户能够查看存储设备上的文件和路径而无需考虑实际物理设备的

32、文件系统类型。 47Embest Info&Tech Co., LTD.文件系统的层次结构文件系统的层次结构q文件系统有多种类型,如:RAMFS、CRAMFS、JFFS2 q文件系统的层次结构图:48Embest Info&Tech Co., LTD.文件系统的挂载文件系统的挂载q文件系统的挂载:qmount opt-t fs mount opt-t fs Examles: /bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/3 / /bin/mount -n -t ramfs ramfs /etc /bin/mount -t jffs2 /

33、dev/mtdblock/4 /usr49Embest Info&Tech Co., LTD.cramfs 文件系统文件系统 qcramfs 不会影响系统读取文件的速度,而且是一个高度压缩的文件系统,因此非常广泛应用于嵌入式系统中。 q生成映象文件: mkcramfs -h -e edition -i file -n name dirname outfile 50Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境 编译运行编译运行linux linux移植移植 系统引导程序系统引导程序Boot Loa

34、der linux的文件系统的文件系统qlinux内核程序内核程序 linux应用程序开发应用程序开发51Embest Info&Tech Co., LTD.linuxlinux内核启动过程内核启动过程qBootloader完成系统初始化工作后,将运行控制权交给linux内核。根据内核是否压缩以及内核是否在本地执行,linux通常有以下两种可选的启动方式:Flash本地运行方式:本地运行方式:内核的未经压缩的可执行映像固化在Flash,系统启动时内核在Flash中开始逐句执行。压缩内核加载方式:压缩内核加载方式:内核的压缩映像固化在Flash上,系统启动时由附加在压缩映像前的解压复制程序读取压

35、缩映像,在内存中解压后执行,这种方式相对复杂,但是运行速度更快(RAM的存取速率要比Flash高)。52Embest Info&Tech Co., LTD.Flash本地内核的启动过程本地内核的启动过程q本地运行时内核的启动包括:特特定定体体系系结结构构设设置置:由汇编文件head-armv.s完成,基本运行过程: 1) 配置系统寄存器; 2) 初始化ROM、RAM以及总线控制寄存器等; 3) 设置堆栈指针,将bss段清零; 4) 修改pc指针,跳转到kernel/init/main.c中的start_kernel函数,开始linux系统的初始化。 linux系统初始化系统初始化 程序跳转到s

36、tart_kernel函数执行,在这里完成处理器结构的初始化、中断的初始化、进程相关的初始化以及内存初始化等重要工作。 53Embest Info&Tech Co., LTD.压缩内核的启动过程压缩内核的启动过程压缩内核启动过程包括:q解压复制解压复制本过程由head.s完成,基本运行过程:1)配置系统寄存器;2)初始化ROM、RAM以及总线控制寄存器等;3)对Flash和SDRAM进行地址映射,将内核的映像文件从Flash拷贝到SDRAM;4)设置堆栈指针,将bss段清零,将来执行c语言程序时要用到;5)调用Misc.c中的解压缩内核函数decompress_kernel(),对拷贝到SDR

37、AM的内核映像文件进行解压缩;6)执行调用内核函数call_kernel,跳转到解压后linux内核入口。q特定体系结构设置特定体系结构设置 qlinux系统初始化系统初始化54Embest Info&Tech Co., LTD.内核的调试方法内核的调试方法qEmbest IDE+JTAG仿真器qPrintk()qKGDBqKDB 55Embest Info&Tech Co., LTD.JTAG仿真器调试模型仿真器调试模型PC机机JTAG仿真器仿真器目标板目标板并口/USB/网口运行运行Embest IDE56Embest Info&Tech Co., LTD.Printk()调试内核调试内核

38、Printk是调试内核代码时最常用的一种技术。在内核代码中的关键位置加上Printk调用,可直接把所关心的信息打印到屏幕上或输出到文件中;linux内核执行完console_init()函数后,可以通过串行口终端输出信息。在PC和目标板之间连接串口线;运行PC上的超级终端并进行配置。PC机机目标板目标板串口57Embest Info&Tech Co., LTD.主要内容主要内容 嵌入式操作系统嵌入式操作系统 linux概述概述 建立开发环境建立开发环境 编译运行编译运行linux linux移植移植 系统引导程序系统引导程序Boot Loader linux的文件系统的文件系统 linux内核

39、程序调试内核程序调试qlinux应用程序开发应用程序开发58Embest Info&Tech Co., LTD.应用程序的编写应用程序的编写q开发平台:Linux平台或Cygwin q在/usr/local/src目录下面新建任意目录作为应用程序开发,如建立app目录。$:mkdir -p /usr/local/src/app 59Embest Info&Tech Co., LTD.添加应用程序到文件系统中添加应用程序到文件系统中q在包含文件系统的Linux中,将编写好的应用程序添加到文件系统中需要进行以下几个方面的工作:编写编写Makefile修改配置相关文件修改配置相关文件修改用户程序工程

40、管理文件修改用户程序工程管理文件在./user/Makefile 中,增加行 dir_$(CONFIG_USER_HELLO) += app在./config/config.in 菜单定义中: bool Hello CONFIG_USER_HELLO60Embest Info&Tech Co., LTD.编写程序工程管理文件编写程序工程管理文件MakefileMakefileq编写Makefile的主要内容: 编译操作、环境变量、测试文件、编译选项、链接选项、编译链接命令、编译清除和安装执行文件等 61Embest Info&Tech Co., LTD.快速添加应用程序快速添加应用程序 q上节

41、所述增加应用程序以及编译执行的过程比较正式但也比较繁琐,用户可以采用下述方法在开发调试过程中快速添加应用程序。 编译生成可执行文件编译生成可执行文件复制可执行文件到文件系统复制可执行文件到文件系统生成文件系统映像生成文件系统映像62Embest Info&Tech Co., LTD.linux应用程序调试应用程序调试q 主机调试方法主机调试方法 主机:Linux或Windows的Cygwin;编译调试:主机开发调试工具如GCC和GDB,编译并调试应用程序;运行:交叉编译工具arm-linux-gcc进行二次编译,在linux系统下运行; q 串口打印信息调试串口打印信息调试 串口打印调试信息是

42、linux进行应用程序开发时的重要调试手段; 应用程序在目标板上运行,目标板与主机通过串口连接,程序运行过程中输出的信息显示在主机的串口终端; q 远程交互调试远程交互调试 在linux系统上运行gdbserver,主机上运行基于目标系统如ARM的GDB,GDB和gdbserver间的通讯通过串口或者以太网口进行,gdbserver根据GDB的调试指令控制程序的运行并反馈程序的运行状态。63Embest Info&Tech Co., LTD.应用程序下载应用程序下载qFTP/TFTP方式 文件传输协议FTP是Internet上使用得最广泛的文件传输协议。简单文件传输协议TFTP全称为Trivi

43、al File Transfer Protocol,适合小型文件传输,比较小并且容易实现。 - 可用于UDP环境 - TFTP代码所占的内存比较小 - 缺点是传送不可靠、没有密码验证等q网络文件系统NFS方式SUN公司于1984年推出在不同的系统中共享文件,其通讯协议设计与主机及操作系统无关mount64Embest Info&Tech Co., LTD.TFTP服务器服务器65Embest Info&Tech Co., LTD.NFS安装安装主机上安装NFS服务 cygrunsrv -S portmapcygrunsrv -S nfsdcygrunsrv -S mountd 配置linux支

44、持NFS 详细操作请看后面 在linux映射主机硬盘 mkdir /var/nfsmountmount -t nfs host_ip:host_share_dir local_dir -o nolock66Embest Info&Tech Co., LTD.q 在内核配置中选择:Networking options - TCP/IP NetworkingNetwork device support - Network device supportFile systems - Network file systems - NFS File system supportFile systems - Network file systems - Provide NFSv3 client supportq 在用户配置中选择:BusyBox - mount:support NFS mounts配置配置linux 支持支持NFS67Embest Info&Tech Co., LTD.谢谢大家!http:/S T68

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号