650 likes | 853 Views
嵌入式操作系统. 徐远超 xuyuanchao@263.net http://xuyuanchao.ie.cnu.edu.cn 无密码. 操作系统的作用. 从 8 位 /16 位单片机发展到以 ARM CPU 核为代表的 32 位嵌入式处理器 , 嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序 , 成为重要的基础组件。 更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用 , 使应用程序员面向操作系统级开发应用软件 , 并易于在不同的 ARM 核的嵌入式处理器上移植。 嵌入式操作系统都具有一定的实时性 , 易于裁剪和伸缩. 常见的嵌入式操作系统. Linux
E N D
嵌入式操作系统 徐远超 xuyuanchao@263.net http://xuyuanchao.ie.cnu.edu.cn无密码
操作系统的作用 • 从8位/16位单片机发展到以ARM CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。 • 更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用,使应用程序员面向操作系统级开发应用软件,并易于在不同的ARM核的嵌入式处理器上移植。 • 嵌入式操作系统都具有一定的实时性,易于裁剪和伸缩
常见的嵌入式操作系统 • Linux • μCLinux • μC/OS-II • WinCE • VxWorks • Palm OS • Symbian • Windows Mobile • 其他…几百种
教材和参考书籍 • 自编讲义 《嵌入式操作系统教程》2009版 • http://xuyuanchao.ie.cnu.edu.cn补充资料 • http://www.linux8.net/ • http://www.xxlinux.com/linux/index.html • http://linux.chinaunix.net/ • http://www.linuxdiyf.com/ • 推荐阅读好的博客,带着目的去查找所有资料【书、期刊论文、互联网资料】
考试与成绩组成 • 出勤与基础实验 • Project及答辩 • 文献阅读(中英文) • 其他任务(嵌入式浏览器、嵌入式网络通信、嵌入式GUI、嵌入式Java和嵌入式无线通讯软件 、嵌入式数据库、嵌入式多核、嵌入式可行性研究、WinCE等等)
教学内容及进度(参见教学日历) • 认识并熟练使用Linux操作系统 • 了解并搭建嵌入式Linux • 初识BootLoader • 了解并编译Linux内核 • 编写和调试嵌入式Linux程序 • 编写Linux设备驱动程序
教学方式 • 课堂教学引导 • 自学为主 • 开展讨论 • 小组形式 • 网上答疑(实名制) http://202.204.220.14/lybbs/ 网络学堂
第一讲熟悉Linux基本操作 徐远超
Linux的起源 • Linux是不受任何版权制约的、与UNIX兼容的操作系统 • UNIX 1969年诞生,一般运行在大型和小型计算机上 • 目前UNIX几乎可以在已有的所有平台上运行。 • UNIX最初的发展没有统一的标准,后来,IEEE开发了一个独立的UNIX标准POSIX.现有大部分UNIX和流行版本都遵循POSIX标准. Portable Operating System Interface. • 结果:只要遵循POSIX,某一个Unix环境下的软件,只需做少许的修改,就能在其他的Unix环境下编译成功。 • 但价格昂贵。
什么是Linux • Linux是一套免费使用和自由传播的类UNIX操作系统,源代码开放,能运行于各类硬件平台,包括Intel x86系列和RISC处理器。 • Linux最早由芬兰赫尔辛基大学一位名叫Linus Torvalds的学生设计的. • 1991年底首次公布于众,同年11月发布了0.10版本,12月发布了0.11版本 • 在Linus的带领下,Linux通过Internet广泛传播,吸引着世界范围的开发者对其进行不懈的开发。 • Linux是在GNU公共许可权限下免费获得的,是符合POSIX标准的操作系统。
Linux的特性 • 开放性(Open Source Software) • 多用户 • 多任务 • 良好的用户界面 • 设备独立性 • 丰富的网络功能 • 可靠的系统安全 • 良好的可移植性
Linux与其他操作系统的区别 • Linux与MS-DOS之间的区别 • 就发挥处理器功能来说,MS-DOS没有完全发挥x86处理器的功能,而Linux完全在处理器保护模式下运行,并且发掘了处理器的所有特性 • 就操作系统的功能来说,MS-DOS是单任务的操作系统,而Linux是多任务的操作系统,用户可以同时运行多个应用程序。 • 就使用费用而言,MS-DOS价格比较便宜,而且在PC机用户中有很大的占有率。但是,Linux是免费的,用户可以从Internet上或者其他途径获得它的版本。
Linux与Windows之间的区别 • 从发展的背景看,Linux是从一个比较成熟的操作系统UNIX发展而来的,而Windows是自成体系,无对应的相依托的操作系统。 • 从使用费用上看,Linux是一种开放、免费的操作系统,Windows是封闭的系统,需要有偿使用。 • Linux系统的开发,遵循UNIX的开放系统标准,任何一个软件商或开发者都可以实现这些标准。Windows操作系统是具有版权的产品,其接口和设计均由某一公司控制,只有这些公司才有权实现其设计,.
Linux与Windows之间的区别(续) • Linux不仅提供了强大的操作系统功能,而且还提供了丰富的应用软件,而在Windows下,几乎所有的软件都有独立的版权,需要购买使用,即使某些软件可以免费使用,也一般不提供其源代码,更不用说由用户修改扩充其功能了。 • Windows对硬件配置要求高,而Linux在低端PC系统上仍然可以流畅运行 • Linux的组网能力非常强大,它提供了对于当前的TCP/IP协议的完全支持,并且包括了对下一代Internet协议IPv6的支持。
Linux与商用UNIX的区别 • Linux和商用UNIX都基本支持同样的软件、程序设计环境和网络特性,可以说Linux是UNIX的PC版本,Linux在PC机上提供了相当于UNIX工作站的性能。 • Linux是免费软件,用户可以从网上下载,而商用的UNIX除了软件本身的价格外,用户还需支付文档、售后服务费用; • Linux拥有GNU软件支持,Linux能够运行GNU计划的大量免费软件,这些软件包括应用程序开发、文字处理、游戏等方面的内容; • Linux的开发是开放的,任何志愿者都可以对开发过程做出贡献;而商用UNIX则是由专门的软件公司进行开发的。
Linux与自由的UNIX的区别 • 首先在组织方式上,FreeBSD由它的核心团队(core team)的领导,他们负责原始程序的开发与维护。Linux没有核心团队,在Linus的主导下来自世界各地的爱好者都可以发布自己的补丁(patch) 。 • 在发展方向上,由于人力有限,FreeBSD的核心团队将主要精力投入在UNIX自身的风格和特点上,不像Linux那样对相关硬件支持多,因而在易用上稍微逊色一些。Linux通常会首先考虑加入商品化系统上的各种东西,Linux更容易上手和使用。 • 在系统核心功能上二者区别不大,但是,由于Linux庞大的开发队伍,在Linux系统上,几乎可以找到任何需要的功能,许多商用软件才具有的功能在Linux上很快就会出现。
GNU • GUN项目(GNU Project)开始于1984年,主要由自由软件基金(Free Software Foundation——FSF)资助的一个项目,目标是开发一个自由的、UNIX类型的操作系统,称为GNU系统。 • GNU是“GNU’s Not UNIX”的首字母的递归缩写, • 所有的GNU软件和派生工作均遵循GNU通用公共许可证,即GPL(General Public License)。
GPL • 通用公共许可证主要目标是保证软件对所有的用户来说是自由的。GPL通过如下途径实现这一目标: • 它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。 • 它提醒每个用户,对于该软件不提供任何形式的担保。 • 如果用户的软件使用了受GPL保护的任何软件的一部分,那么该软件就继承了GPL软件,并因此而成为GPL软件,也就是说必须随应用程序一起发布源代码。 • GPL并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
LGPL • GNU LGPL(Library General Public License——程序库公共许可证) 允许用户在自己的应用程序中使用程序库,即使不公开自己的源代码。用户必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。 • 遵循LGPL的一种方法是,随应用程序一起发布目标代码以及可以将这些目标程序和受LGPL保护的程序库链接起来的makefile文件。 • 遵循LGPL的另一种比较好的方法是使用动态链接。
Linux 的版本 • Linux内核的版本号主要由三部分构成:主版本号、次版本号、次次版本号。 例如:Kernel 2.6.12表示主版本号2,次版本号6、次次版本号12 • 一些组织或公司将Linux内核与应用软件和文档包装起来,并提供安装界面、系统配置与管理工具,这样就构成了一种发行版本。 例如:Red Hat Linux 9.0, Red Flag Linux3.0, Debian GNU/Linux, Mandrake Linux SuSE Linux TurboLinux2.0,SuSe Linux 10.0等。
Linux下的文件类型 • 普通文件 • 目录文件 • 连接文件 • 设备文件
普通文件 • 系统文件 • .conf .lock .rpm • 编程和脚本文件 • .c .cpp .h .o .pl .py .so .sh .tcl • 文件格式 • .au .gif .html/.htm .jpg .pdf .png .ps .txt .wav .xpm • 压缩以及归档文件 • .bz2 .gz .tar .tbz .tgz .zip
目录文件 • 目录中包含文件以及下级子目录,但目录也是文件。这个文件中记录了包含在它中的文件和子目录的名称与它所处的地址。 • 目录文件中记录文件的名字,文件本身的记录不包含文件名,对文件名进行的更改,实际是修改目录文件中的一条文件记录 • 连接文件 • 连接是Linux中比较特殊而非常有用的一种文件,类似于Windows中的快捷方式,它本身不包含任何内容,它指向别的文件或目录
设备文件 • Linux下所有的设备都是通过文件来表示的,所有的设备文件都存放在/dev目录下,设备文件的文件名就是设备名 $ cd /dev $ ls • 设备文件的种类 • 块设备文件:/dev/hda1,这些设备以块为最小单位。 • 字符设备: /dev/ttyS0,字符设备按顺序一个一个传递字符 • 网络接口:访问网络接口的方法是给它们分配一个惟一的名字(比如 eth0),但这个名字在文件系统中不存在对应的节点项 • 文件名通常都是尾部带有设备编号数字的缩写名称。
Linux下的文件详细信息 -rw-r--r-- 1 root root 15228 2003-01-25 a2ps.cfg -rw-r--r-- 1 root root 2562 2003-01-25 a2ps-site.cfg -rw-r--r-- 1 root root 47 12月 26 23:39 adjtime drwxr-xr-x 2 root root 4096 2005-05-16 aep -rw-r--r-- 1 root root 688 2003-02-04 aep.conf 文件权限 文件上次被修改的时间和日期 文件类型 文件属主名 文件长度 用户分组名 链接个数 文件名
/usr /local /bin /src /bin /var /lib /etc /bin /man /lib /dev /etc /tmp / /home /usr1 /usr2 /usr3 /mnt /root /up-armmp3 /up-netarm2410 /proc /sbin Linux下的目录结构
Linux常用命令 • 如何获取帮助信息 • 使用man命令查看手册 • 权限:所有用户 • 使用方法:man [查找内容] • 说明:打印出需要查找帮助内容的手册页信息 • 使用“ -- help”或“- help”参数 • 权限:所有用户 • 使用方法:[命令] --help • 说明:打印出需要查找帮助命令的帮助信息,根据命令不同可能采用不同的参数“--help”或“-help”
基本命令 • date • 权限:所有用户 • 使用方法:date • 说明:显示系统时间 • 应用示例: $ date • exit • 权限:所有用户 • 使用方法:exit • 说明:图形模式下exit为关闭一个终端窗口 • 应用示例: $ exit
基本命令(二) • who • 权限:所有用户 • 使用方法:who • 说明:确定系统上的用户 • 应用示例: $ who • ps • 权限:所有用户 • 使用方法:ps • 说明:列出所有的进程 • 应用示例: $ ps
基本命令(三) • passwd • 权限:当前用户 • 使用方法:passwd • 说明:更改密码 • 应用示例: $ passwd • file • 权限:所有用户 • 使用方法:file [文件名] • 说明:判断文件类型 • 应用示例: $ file xx.c
基本命令(四) • reboot • 权限:所有用户 • 使用方法:reboot • 说明:重启系统 • 应用示例: $ reboot • halt • 权限:所有用户 • 使用方法:halt • 说明:关闭系统 • 应用示例: $ halt
基本命令(五) • su • 权限:所有用户 • 使用方法: su [用户] • 说明:以替代用户身份执行命令 • 应用示例: $ su bc • startx • 权限:所有用户 • 使用方法:startx • 说明:文本方式下启动图形界面 • 应用示例: $ startx
基本命令(六) • which • 权限:所有用户 • 使用方法:which [程序名] • 说明:寻找实用程序所在位置 • 应用示例: $ which who • echo • 权限:所有用户 • 使用方法:echo [显示内容] • 说明:将一行字显示到标准输出 • 应用示例: $ echo this is a echo test
输出重定向 • 命令的输出通常是提交到标准输出,也可以转向一个文件来代替 • 在命令后添加>file符号,命令的输出就会写入文件file,而不写入终端 • 应用示例: $ who > users • 使用 >>符号可以将命令输出追加到文件中而不覆盖原文件 • 应用示例: $ ps >> users
输入重定向 • 与命令的输出可以重定向到文件一样,命令的输入也可以重定向为来自文件。 • 在命令后添加<符号,后面跟要从中读取输入的文件名。 • 应用示例: $ wc -l < users
管道 • 管道可以把两条命令的效果连接起来,一条命令的输出之间连接到第二条命令的输入 • 管道效果由字符 “| “实现 • 应用示例: $ who | wc -l
浏览目录常用命令 • pwd 命令 • 权限:所有用户 • 使用方法:pwd • 说明:显示用户当前工作子目录的完整路径 • 应用示例: $ pwd
浏览目录常用命令 • ls 命令 • 权限:所有用户 • 使用方法:ls [选项]... [文件]... • 说明:列出当前工作子目录(默认)中的文件及子目录清单 • 常用参数: -a 显示所有文件及目录(包括隐藏文件) -l 显示文件的详细信息 -h 以容易理解的方式打印文件大小(1k 32M 2G) -t 将文件按建立的先后次序列出 -F 在列出的文件名称后加一个符号(可执行文件“*”,目录“/”) • 应用示例: $ ls -lh
浏览目录常用命令 • cd 命令 • 权限:所有用户 • 使用方法:cd [目标路径] • 说明:变换工作目录到目标路径,其中目标路径可以是绝对路径也可以是相对路径。目标路径名可以缺省,若缺省则变换至使用者的home directory(用户登录子目录)。 • 常用参数: ~ :home directory . : 当前目录 . . : 当前目录的上一层目录 -:返回切换目录后的前一个目录 • 应用示例: $ cd /home/bc/ $ cd ../../
阅读常用命令 • cat 命令 • 权限:所有用户 • 使用方法:cat [参数] [文件名] • 说明:把文件串连接后输出到基本输出(或另一个文件) • 常用参数: -n或--number:由1开始对所有输出行数编号 -b或--number-nonblank:与-n类似,只是不对空白行编号 • 应用示例: $ cat –n textfile1 > textfile2 $ cat text1 text2 >> text3
阅读常用命令 • more 命令 • 权限:所有用户 • 使用方法:more [参数] [文件名] • 说明:类似cat,但它可以分页显示,适合显示长文件清单或文本内容,最基本的指令就是按空格换页,按回车下一行,按b键返回上一页。 • 常用参数: - num :一次显示的行数 -d :在屏幕最下方显示提示信息 + num:从第num行开始显示应用示例 • 应用示例: $ more textfile
目录操作常用命令 • mkdir 命令 • 权限:所有用户 • 使用方法:mkdir [子目录或子目录完整路径] • 说明:建立一个新的子目录,使用子目录的路径作为参数 • 应用示例: $ mkdir /home/bc/temp • rmdir 命令 • 权限:当前目录有适当权限的所有者 • 使用方法:rmdir [参数] [子目录或子目录完整路径] • 说明:删除空的目录 • 应用示例: $ rmdir /home/bc/temp
文件操作常用命令 • wc命令 • 权限:当前文件有适当权限的所有者 • 使用方法:wc [参数] [文件名] • 说明:统计文件中的单词数 • 常用参数: - c:显示文件内的字符数 - w :显示文件内以空格符分隔的字数 - l:显示文件内的行数 • 应用示例: $ wc –cl users
文件操作常用命令 • rm 命令 • 权限:当前文件有适当权限的所有者 • 使用方法:rm [参数] [文件名或目录] • 说明:删除文件以及 目录 • 常用参数: - i:删除前逐一询问确定 - f: 即时原文件为只读也强制删除,并不询问确定 - r:同时删除该目录层下的所有目录以及文件 • 应用示例: $ rm textfile $ rm –rf /home/bc/temp
文件操作常用命令 • mv 命令 • 权限:当前文件有适当权限的所有者 • 使用方法:mv [参数] [原文件或目录] [目标文件或目录] • 说明:将一个文件移至另一个文件,或将多个文件移动至另一个目录,也可以将一个目录移动至另一个目录 • 常用参数: - i:若目的位置已有同名文件,则询问是否覆盖旧文件 • 应用示例: $ mv text1 text2 $ mv –i *.c /home/bc/temp
文件操作常用命令 • cp 命令 • 权限:所有用户 • 使用方法:cp [参数] [原文件或目录] [目标文件或目录] • 说明:将一个文件复制到另一个文件,或将数个文件复制到另一个目录中,也可以将一个目录复制到另一个目录 • 常用参数: - a:尽可能将文件的状态、权限等信息全部复制 - f: 若目的地址有同名文件,则将已有的文件删除再进行复制 - r:若原目录中包含子目录,则原目录中的文件及子目录也依次 复制到目的地址中 • 应用示例: $ cp text1 text2 $ cp –arf up-tech/ /temp
文件操作常用命令 • sort 命令 • 权限:所有用户 • 使用方法:sort [参数] [文件名] • 说明:将文本文件数据排序 • 常用参数: - u:输出结果中去掉重复的行 - r: 以相反顺序排序 -o:将排序后的结果写入文件(>) -n: 把行中的第一个字段当作数值,数据按算术方法排序 • 应用示例: $ sort –rn data
文件操作常用命令 • chmod 命令 • 权限:所有用户 • 使用方法:chmod [+|-模式] [文件] • 说明:改变文件模式 • 常用参数: +-r:修改读模式 +- w: 修改写模式 +- x:修改执行模式 • 应用示例: $ chmod +x users
文件操作常用命令 • chown 命令 • 权限:根用户 • 使用方法:chown [参数][所有者] :[组] [文件或目录] • 说明:将一个文件复制到另一个文件,或将数个文件复制到另一个目录中,也可以将一个目录复制到另一个目录 • 常用参数: - R:以递归方式处理目录下所有文件 • 应用示例: $ chown bc:bc file
压缩及解压缩命令 • tar 命令 • 权限:所有用户 • 使用方法:tar [参数] [归档文件名] [原文件或目录] • 说明:广泛用于建立归档文档,这个命令将文件及目录复制到归档文件中,原文件并不会有被删除的危险。同时还可通过参数调用相应的压缩工具进行压缩及解压缩 • 常用参数: - c:创建文档,而不运行浏览现有文档或取出文档中的文件 - f:表示存档到文件而非磁盘 - v:显示每个复制文件的名称 - x:解压缩 - z:使用gzip或ungzip - j :使用bz2 • 应用示例: $ tar cvjf temp.tar.bz2 temp/ $ tar xvjf temp.tar.bz2