嵌入式LINUX编程环境

上传人:油条 文档编号:1272158 上传时间:2017-06-04 格式:PPT 页数:31 大小:460KB
返回 下载 相关 举报
嵌入式LINUX编程环境_第1页
第1页 / 共31页
嵌入式LINUX编程环境_第2页
第2页 / 共31页
嵌入式LINUX编程环境_第3页
第3页 / 共31页
嵌入式LINUX编程环境_第4页
第4页 / 共31页
嵌入式LINUX编程环境_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《嵌入式LINUX编程环境》由会员分享,可在线阅读,更多相关《嵌入式LINUX编程环境(31页珍藏版)》请在金锄头文库上搜索。

1、嵌入式LINUX编程环境,主讲人:余小虎,2008年07月31日,主要内容,一、嵌入式LINUX简介二、编成环境搭建,一、嵌入式LINUX简介,嵌入式系统定义: 是以应用为中心,以计算机技术为基础,并且软硬件是可裁剪的,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。,体系结构:嵌入式处理器嵌入式外围设备嵌入式操作系统嵌入式应用软件,嵌入式LINUX系统的基本元素:引导工具Linux微内核初始化进程硬件驱动程序应用程序 文件系统协议栈,广泛的硬件支持 Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎

2、能够运行在所有流行的CPU上。Linux有着异常丰富的驱动程序资源,支持各种主流硬件设备和最新的硬件技术,甚至可以在没有存储管理单元的处理器上运行,这些都进一步促进了Linux在嵌入式系统中的应用。,Linux作为嵌入式操作系统的优势,内核高效稳定 Linux内核的高效和稳定已经在各个领域内得到了大量事实的验证,Linux的内核设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核或从内核中移走。这些特性使得Linux系统内核可以裁剪得非常小巧,很适合于嵌入式系统的需要。,开放源码,软件丰富 Linux是

3、开放源代码的自由操作系统,它为用户提供了最大限度的自由度。由于嵌入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就变得至关重要了。Linux的软件资源十分丰富,每一种通用程序在Linux上几乎都可以找到,并且数量还在不断增加。在Linux上开发嵌入式应用软件一般不用从头做起,而是可以选择一个类似的自由软件作为原型,在其上进行二次开发。,完善的网络通信和文件管理机制 Linux从诞生之日起就与Internet密不可分,支持各种标准的Internet网络协议,并且很容易移植到嵌入式系统当中。此外,Linux还支持ext2、fat32、romfs等文件系统,这些都为开发嵌入式系

4、统应用打下了很好的基础。,二、编成环境搭建,嵌入式Linux应用程序的开发,串口,并口,JTAG,宿主机(X86),目标板(ARM / PPC / ),网口,交叉编译 简单地说,就是在一个平台上生成另一个平台上的可执行代码。 平台 实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结 构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说 的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是 Intel x86

5、体系结构和Windows NT for x86操作系统的简称。,交叉编译器 -用来编译这种跨平台程序的编译器,Binutils 包括连接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的处理维护工具。Glibc GUN C库 Gcc 多平台编译器,宿主机为LINUX操作系统,完全在Linux下开发、编译、下载程序。宿主机为Windows操作系统,使用Cygwin 程序模拟Linux环境,进行开发。宿主机为Windows操作系统,使用VMware创建一台虚拟计算机,在虚拟的计算机中安装Linux操作系统。在Windows中进行代码编写,在虚拟机的Linux系统中编译生成目标代码。,开发方

6、式,虚拟机WMware代码编辑器SourceInSight Linux开发基础,VMWare功能可虚拟出若干台机器。每台机器可以运行单独的操作系统而互不干扰。拥有各自的CMOS、硬盘、内存、串口等硬件资源。拥有普通机器所以功能。可以将这几个操作系统联成一个网络。在虚拟系统崩溃之后可直接删除不影响本机系统本机系统崩溃后也不影响虚拟系统,可以下次重装后再加入以前做的虚拟系统,Source Insight 是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C+, C#和Java等程序的分析。Source Insight能分析你的源代码并在你工作的同时动态维护它自己的符号数据库,并自动为你

7、显示有用的上下文信息。,Linux,内核版本 源程序版本号的形式为x.y.z。对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(因此,是奇数)。 最新2.6.X,发行版 Slackware Linux Debian Mandrake MandrakeSoft Red Hat SuSE SuSE AG 中软Linux 中科红旗Linux Turbolinux BluePoint Linux,shell Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种 命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户 输入的命令;作为程序

8、设计语言,它定义了各种变量和参数,并提供了许多在高 级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部 分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协 调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解 和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中 心,shell就是围绕内核的外层。当从shell或其它程序向Linux传递命令时,内核会 做出相应的反应。 shell是一个命令语言解释器,它拥有自己内建的she

9、ll命令集,shell也能被系统中 其它应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux 核心。 Shell命令有两种形式: 内部命令,存在于内存中,比如cd。 外部命令,存在于文件系统中某个目录下的单独的程序,例如cp、rm,Shell的种类 Bourne shell (sh) 作者是Steven Bourne,它是UNIX 最初使用的Shell 并且在每种 UNIX 上都可以使用。 C shell (csh) C Shell 由Bill Joy 所写,它更多的考虑了用户界面的友好性。语法 和C 语言很相似。 Korn shell (ksh) 由Dave Kor

10、n 所写,它集合了C Shell 和Bourne Shell 的优点并且 和Bourne Shell 完全兼容。 BASH Bourne Again shell (bash), 是Bourne shell 的扩展。,常用命令帮助命令 help,man,whatis,whereis显示文件内容命令 cat,more,less,head ,tail,od,file,touch文件内容查询命令 grep文件查找命令 find,locate文件比较命令 diff,comm文件权限 chmod文件复制、删除和移动命令 cp,rm,mv打包命令 tar,文件与目录的基本概念,Linux的文件命名规则 由L

11、inux文件系统的规定,文件名和目录名可以包含以下字符:大写英文 字母A-Z、小写英文字母a-z、数字0-9、“”、“_”等。在文件名和目录中, 不得包括的字符有:* ? / ; & ! | “ ( ) 。不得以”+“和”-“开头。 Linux中的文件名是大小写敏感的,也就是说,rainbow和Rainbow代表两 个不同的文件。 一个以“.”打头的文件表明这个文件是隐藏文件(可以用ls -a 查看)。 Linux系统中文件名的最大长度为255个字符。,文件类型 普通文件 包含文本或代码数据,分为文本文件和二进制文件两类 目录文件 是一个目录包含的文件列表 设备文件 指硬件或逻辑设备(一般在/

12、dev 目录下,例如/dev/lp0代表打印机等)字符设备与块设备,常见目录 /bin 目录包含供每个人使用的可执行程序 /sbin 目录包含仅供管理员使用的可执行程序 /lib 目录包含库文件 /boot 目录包括了内核镜像和其它相关内容 /dev 目录包含着代表硬件设备的设备文件 /etc 目录包含着整个系统的各种配置文件 /home 目录包含各用户的主目录 /root 目录是root的主目录 /mnt 目录包含装载其它非标准文件系统的装载点 /proc 是个虚拟目录,里面保存内核和进程的信息 /tmp 目录是为程序和用户提供放置临时空间的目录 /usr 目录包含UNIX系统的众多资源,较

13、占空间 /var 目录包含了一些文件大小比较特殊的文件,如日志文件,锁文件等,还包括各种用途的文件,如:邮件、计划、打印文件等 /lost+found 存在于所有的文件系统中,保存文件碎片 /opt 目录是由一些外部应用程序使用的目录,Linux下函数库(1/3) 一个“程序函数库”就是一个文件包含了一些编译好的代码和数据,这些编 译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个 程序更加模块化,更容易重新编译,而且更方便升级。可分为两种类型: 静态函数库(static libraries):是一个普通的目标文件的集合,一般用 “.a”作为文件的后缀。静态函数库和共享函数库相比

14、有很多的缺点, 占用内存空间多。但使用ELF格式的静态库函数生成的代码可以比使 用共享函数库的程序运行速度上快一些。 可以用ar这个程序来创建一个静态函数库文件,或者往一个已经存在 地静态函数库文件添加新的目标代码。 例如, 把file1.o和file2.o加入到my_library.a这个函数库文件: ar rcs my_library.a file1.o file2.o 然后运行 ranlib,以给库加入一些索引信息,Linux下函数库(2/3) 共享函数库(shared libraries):当一个可执行程序在启动的时候被加载的函数。每个共享函数库都有个特殊的名字,称作“soname”。

15、soname名字 命名必须以“lib”作为前缀,然后是函数库的名字,然后是“.so”,最后是版本号信息。 优点:多进程使用同一函数库;修改函数库不需重新连编。 安装一个新版本的函数库的时候,要先将这些函数库文件拷贝到一些 特定的目录中,运行ldconfig就可以。ldconfig检查已经存在的库文件,然后创建soname的符号链接到真正的函数库,同时设置 /etc/ld.so.cache这个缓冲文件。 例如,创建两个目标文件(a.o和b.o),然后创建一个包含a.o和b.o 的共享函数库。 gcc -fPIC -g -c -Wall a.cgcc -fPIC -g -c -Wall b.cgcc -shared -Wl,-soname,liblusterstuff.so.1 -o liblusterstuff.so.1.0.1 a.o b.o lc,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

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