您好,欢迎访问三七文档
·嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。·Linux作为嵌入式操作系统的优势:低成本开发系统;可应用于多种硬件平台;可定制的内核;性能优异;良好的网络支持。·嵌入式常见的CPU:ARMPowerPCMIPSXscaleDSPX86·典型的嵌入式操作系统:LinuxuC/OSWindowsCEVxWorksPalmOSSymbian·Windows文件系统是以驱动器的盘符为基础的,而且每一个目录与相应的分区对应,而Linux文件系统是一棵文件树,且它的所有文件和外部设备都是以文件的形式挂在这个文件树上。这个把分区和目录对应的过程叫做挂载(Mount)·Linux分区:主分区(数量1~3个);扩展分区(它不能直接使用,必须在将它划分为若干个逻辑分区才可使用,其数量0或1个);逻辑分区(数量不限)·Linux在硬盘上划出一个区域来当做临时内存,windows称其为虚拟内存,Linux称交换分区swap。·root权限的默认目录在“/root”下,其他普通用户的目录在“/home”下,root权限最高。·Linux文件类型:普通文件目录文件链接文件设备文件(字符设备文件/块设备文件)·Linux中文件的拥有者可以把文件的访问属性设成为3种不同的访问权限:可读(r),可写(w),可执行(x).文件有3种用户级别:文件拥有者(u)、所属的用户组(g),系统里的其他用户组(o)“-”表示普通文件“d”表示目录文件“l”表示链接文件“c”表示字符设备“b”表示块设备“p”表示命名管道比如FIFO文件(FirstInFirstOut,先进先出)“f”表示堆栈文件比如LIFO文件(LastInFirstOut,后进先出)“s”表示套接字1Linux目录结构/bin该目录中存放Linux的常用命令/boot该目录下存放的都是系统启动时要用到的程序/dev该目录包含了Linux系统中使用的所有外部设备,它实际上是访问这些外部设备的端口,你可以访问这些外部设备,与访问一个文件或一个目录没有区别/sbin该目录用来存放系统管理员的系统管理程序/usr用户应用程序和文件都存放在该目录下/etc该目录存放了系统管理时要用到的各种配置文件和子目录,例如网络配置文件、文件系统等。/home用来存放该用户的主目录。/lib该目录用来存放系统动态连接共享库,几乎所有的应用程序都会用到该目录下的共享库/tmp用来存放不同程序执行时产生的临时文件/lost+found该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后,有些文件就临时存放在这里。/mnt该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下/proc可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的/root超级用户的主目录/syssys文件系统/procproc文件系统“[david@localhosthome]$”其中david是系统用户,localhost是计算机名,home是当前所在的目录。Linux的基本命令:(了解其具体的参数)ls:列出文件名cat:显示文本文件less/more:分屏显示文件rm:删除文件cp:复制文件mv:移动文件mkdir:创建目录rmdir:删除目录cd:转换目录grep:查找字符串head:显示文件开头tail:显示文件结尾sort:按次序显示文件uniq:去掉文件中重复的行diff:比较两个文件file:测试文件内容echo:显示文本date:显示时间和日期gzip:压缩文件gunzip:解压缩文件bzip2:压缩文件tar:打包和解包文件whereis:查找命令which:查找实用程序ps:列出进程df:检查文件系统空间占用情况du:显示磁盘空间的使用情况kill:杀死进程chmod:改变文件或目录的访问权限chown:改变文件或目录的属主和组chgrp:改变文件或目录所属的组info:获得帮助pwd:显示当前工作目录的绝对路径rpm:文件包管理clear:清屏ln:创建文件链接who:列出系统上的用户名单write:发送消息talk:与其他用户通信man:获取帮助·vi有3种模式:命令行模式(用户在Vibianji文件时,最初进入的模式,在该模式下中的用户可以通过上下移动光标进行“删除字符”或“整行删除”也可以进行复制粘贴,但无法编辑文字),插入模式(在该模式下用花可以编辑文字输入,用花按ESC回到命令行模式),命令行模式(用花可以进行保存或退出操作)P55vi基本流程·gcc所支持后缀名解释.cC原始程序.C/.cc/.cxxC++原始程序.mObjective-C原始程序.i已经过预处理的C原始程序.ii已经过预处理的C++原始程序.s/.S汇编语言原始程序.h预处理文件(头文件).o目标文件.a/.so编译后的库文件·利用Vi编写一个helloworld程序#includestdio.hintmain(){printf(“hello!thisisourembeddedword!\n”);return0;}·vi用法命令行,插入行,底行模式i插入:q不保存退出:q!不保存强制性退出:w保存编辑:wfilename存入文件filename中:w!filename强制性存入文件filename中:wq(:x)保存并退(shift+zz)··Gcc的编译流程分为四个步骤·预处理(Pre-Processing)在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理。可以使用gcc的选项“-E”让gcc在预处理结束后停止编译过程。[root@localhostgcc]#gcc–Ehello.c–ohello.i·编译(Compiling)接下来进行的是编译阶段,在这个阶段中,gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。[root@localhostgcc]#gcc–Shello.i–ohello.s·汇编(Assembling)汇编阶段是把编辑的阶段生成的“.s”文件转成目标文件,读者在此使用选项“-c”就可以看到汇编代码转化为“.o”的二进制代码了,[root@localhostgcc]#gcc–chello.s–ohello.o·链接(Linking)在成功编译之后,就进入连接阶段。[root@localhostgcc]#gcchello.o–ohello[root@localhostgcc]#./hellohello默认的后缀名“.so”·Gdb调试流程首先使用gcc对test.c进行编译,注意一定要加上选项‘-g’#gcc-gtest.c-otest#gdbtest查看文件(gdb)l设置断点(gdb)b6查看断点情况(gdb)infob运行代码(gdb)r查看变量值(gdb)pn单步运行(gdb)n(gdb)s恢复程序运行(gdb)c帮助(gdb)help[command]第4章嵌入式系统发展历史第1阶段是以单芯片为核心的可编程控制器形式的系统。第2阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。第3阶段是以嵌入式操作系统为标志的嵌入式系统。第4阶段是以Internet、多核技术为标志的嵌入式系统。第5章·Linux开机流程加载bios的硬件信息·读取MBR的KernelLoader引导信息·加载内核·启动核心的外挂模块init执行运行一级的各个批处理文件(scripts)·执行/bin/login程序·登入后开始以shell管理主机·超级终端首先,打开windows下的开始-附件-通讯-超级终端然后将连接是使用方式“com1”波特率为115200,数据位数为8,无奇偶校验位,停止位数为1,无硬件流控,按确定就可以了运行常见的下载方式有:网络下载(如tftp,ftp等方式)、串口下载、usb下载等。·U-Boot特点开放源码;支持多种嵌入式操作系统内核支持多个处理器系列,较高的可靠性和稳定性;高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求和产品发布等;丰富的设备驱动源码;较为丰富的开发调试文档与强大的网络技术支持。·Linux中主要的进程间通信方式(1)管道(Pipe)及有名管道(namedpipe):管道用于亲缘关系进程间的通信,有名管道具有管道的所有功能且允许无亲缘关系进程间的通信.(2)信号(Signal):信号是在软件层次上对中断机制的一种模拟,用于通知接受进程有某事件发生.(3)消息队列:消息队列是消息的连接表,它克服了信息量有限的特点,具有写权限的进程可以向消息队列中按照一定的规则添加新信息,对消息队列有读权限的进程则可以从消息队列中读取信息(4)共享内存:这是最有用的进程间通信方式.多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新.需要依靠同步机制.(5)信号量:主要作为进程间以及同一进程不同线程间的同步手段.(6)套接字(Socket):这是一种更为一般的进程间通信机制,它可用于不同机器之间的进程间通信,应用广泛。·管道是Linux中重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入.它有如下特点:只能用于具有亲缘关系的进程间通信;它是一个半双工的通信模式,具有固定的读端写端;管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。但它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中第六章一个进程启动时,都会打开3个文件:标准输入,标准输出,标准出错处理。I/O操作的系统调用,主要用到5个函数:open(),read(),write(),lseek()和close()。这些函数的特点是不带缓存,直接对文件(包括设备)进行读写操作。文件读写程序/*copy_file.c*/#includeunistd.h#includesys/types.h#includesys/stat.h#includefcntl.h#includestdlib.h#includestdio.h#defineBUFFER_SIZE1024/*每次读写缓存大小,影响运行效率*/#defineSRC_FILE_NAMEsrc_file/*源文件名*/#defineDEST_FILE_NAMEdest_file/*目标文件名文件名*/#defineOFFSET10240/*拷贝的数据大小*/intmain(){intsrc_file,dest_file;unsignedcharbuff[BUFFER_SIZE];intreal_read_len;/*以只读方式打开源文件*/src_file=open(SRC_FILE_NAME,O_RDONLY);/*以只写方式打开目标文件,若此文件不存在则创建,访问权限值为644*/dest_file=open(DEST_FILE_NAME,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);if(src_file0||dest_file0){printf(Openfileerror\n);exit(1);}/*将源文件的读写指针移到最后10KB的起始位置*/lseek(src_file,-OFFSET,SEEK_END);/*读取源文件的最后10KB数据并写到目标文件中,每次读写1KB*/while((real_read_len=read(src_file,buff,sizeof(buff)))0){write(dest_file,buff,real_read_len);}close(dest_file);close(src_file);return0;}在linu
本文标题:Linux考试资料
链接地址:https://www.777doc.com/doc-4601252 .html