一、嵌入式操作系统概述
1.嵌入式开发特点(传统开发和嵌入式开发的区别)、
是否有操作系统的参与(在软件与硬件层移植了操作系统)
移植:修改操作系统的原码
A传统开发的缺点
软件移植性差;
软件工程师得懂硬件;
软件的功能性差(用户体验和功能);
B.嵌入式开发的优点
解决了传统开发的软硬件耦合度过高导致的问题;
多任务机制;
提供了丰富的 络协议栈;
提供了丰富的开源软件和工具;
2.嵌入式操作系统的特点及种类:
特点:
①可装卸性
②强实时性
③统一的接口。提供各种设备驱动接口
④操作方便简单
⑤提供强大的 络功能
⑥强稳定性,弱交互性
⑦固化代码
⑧良好的可移植性
种类:
非实时操作系统:面向消费电子产品等领域,这类产品包括个人数字助理(PDA)、移
动电话、机顶盒、电子书等。Linux(开源、无实时性)、WindowsCE(微软出品、不开源(出租车、麦德龙、POS机):金融)、OSX
实时操作系统RTOS (Real- Time Embedded Operating System)(实时性:在规定时间完成规定的动作) :面向控制、通信等领域,如w indriver公司的vxworks(缺点:不开源、付费
)、isi的psos、 qnx系统软件公司的qnx、ONX、Ucosii
3.Linux操作系统的特点:(GNU计划,POSIX标准、GPL协议)
①可移植性高
②免费开源
③模块化程度高
④广泛的硬件支持
⑤安全稳定
⑥多用户,多任务
4.Linux发行版的种类极其特点
Redhat(企业版本、个人版本、CentOs):稳定性方面非常好,适合于服务器使用
ubuntu(19.04 14 .10 16.04 16.10):稳定、可靠、安全、病毒少等特点,界面华丽,定制性强。但是缺点是普及面不大,使用人少、游戏少。
PCLinuxOS:简单易用,安全无忧
Debian:最遵循GNU规范的Linux系统
一、Linux安装;(虚拟机的作用及种类和它们各自的特点)虚拟机+Linux(好处:1.Windows/Linux之间切换更加容易;2.容易修复)
1.虚拟机的作用:用软件的方法模拟一台PC机
2.虚拟机的种类:Vmware(windows)、virtualBox(windows,Linux,MACos)、virtulPC(微软)
3.Vmware(windows):可以模拟一个基于x86的标准PC环境
virtualBox(windows,Linux,MACos):支持64位客户端操作系统,即使主机使用32位CPU
- 支持SATA硬盘NCQ技术
- 虚拟硬盘快照
- 无缝视窗模式(须安装客户端驱动)
- 能够在主机端与客户端共享剪贴簿(须安装客户端驱动)
- 在主机端与客户端间建立分享文件夹(须安装客户端驱动)
- 内建远端桌面服务器,实现单机多用户 - 支持VMware VMDK磁盘档及Virtual PC VHD磁盘档格式
- 3D虚拟化技术支持OpenGL(2.1版后支持)、Direct3D(3.0版后支持)、WDDM(4.1版后支持)
- 最多虚拟32颗CPU(3.0版后支持)
- 支持VT-x与AMD-V硬件虚拟化技术
- iSCSI支持
- USB与USB2.0支持
virtulPC(微软):占用资源小,功能一般,但不支持u盘
二、嵌入式操作系统:Linux的使用(命令)
1.用户管理指令:adduser(增加使用者)、userdel(删除使用者) 、usermod(用来修改用户帐 的各项设定)、passwd(用来更改使用者的密码)、su(用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。)、sudo(以系统管理者的身份执行指令)
2.文件管理:ls (-l -h -a -R)、touch、cat、rm -f、gedit、chmod(怎么用)、cp、mv、cd、mkdir、rmdir
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-h:显示文件大小
-a 显示所有文件及目录 ,显示隐藏文件
-R 若目录下有文件,则以下之文件亦皆依序列出
touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容
rm -f强制删除文件
gedit 编译一个文件 例:gedit domo.c
Chmod:用来变更文件或目录的权限
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中(剪切)。
cd :切换工作目录至dinema
mkdir命令用来创建目录 mkdir -p
rmdir命令用来删除空目录
3.根目录结构:bin、sbin、etc、dev、home、root、sys、proc、boot、lib、mnt
/bin:给用户用的基础命令
如:login、Shells、文件操作实用程序、系统实用程序、压缩工具
/sbin:给管理员用的基础命令
如:fsck、fdisk、mkfs、shutdown、lilo、init
/boot:存放开机启动加载文件
/dev:存放外部设备的镜像文件
如:第一个软盘驱动器的名字是fd0;第一个硬盘的名字是hda;硬盘中的第一个分区是hda1;第二个分区是hda2;第一个光盘驱动器的名字是hdc
/etc:系统配置文件
如:passwd、profile、services、shells、hosts、fstab、shadow、motd、lilo.conf
/lib:共享函式库文件
/home:用户家目录
/proc:虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
/sys:硬件相关信息
/media:可移除装置(软盘、光盘、DVD都挂载于此)
/mnt:挂载额外装置,临时挂载
如:CD-ROM、软盘、Zip盘。mnt下的每个子目录都是某种特定设备的安装点
/root:系统管理员的主目录
/opt:第三方软件的目录
/tmp:临时文件,正在执行的程序暂时放置文件的地方
/usr:操作系统软件资源所放置的目录
这个目录用来存放与系统的用户直接相关的程序或文件,这里面有每一个系统用户的主目录,就是相对于他们的小型”/”。
/var:存放可变文件
如:log文件
/lost+found:系统非正常死机后重新启动时不知该往哪里恢复的流浪文件
4.磁盘管理命令、 络管理(书上有)、字符串管理(wc、cut、sort)(自学)
Linux磁盘管理常用三个命令为:df、du和fdisk。
df:列出文件系统的整体磁盘使用量
du:检查磁盘空间使用量
fdisk:用于磁盘分区
书上:fsck (e2fsck): 检查并修复磁盘
Badblocks用来检测磁盘的物理坏道
Mount:挂载设备
络管理:
.ifconfig:配置或显示 络接口信息
ifup:激活 络接口
ifdown:禁用 络接口
ip: 络配置工具
netstat:查看 络状态
ss:查看 络状态
ping:测试主机之间 络的连通性
字符串管理:
wc:统计文本的单词数,行数等等
wc -l # 统计文本行数
wc -w #统计单词数
wc -L # 最长字符串 在哪一行
wc -m # 字符数
wc -c # 字节数
cut命令
作用:从文件的每一行剪切字节,字符或者字段,类似与编程语言中的字符串截取函数
格式:cut [option] [file]
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
N-:从第N个字节、字符、字段到结尾;
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
5.其他命令:pwd、clear、reboot
pwd命令用于显示工作目录。
clear命令用于清除屏幕。
reboot命令用于用来重新启动计算机。
三、嵌入式操作系统的开发工具-linux
1.文本编译器-vim
A.vim的三种模式(考): 命令行模式,插入模式,底行模式
步骤:
A.vim 文件名 eg:vim hello.c
B.此时是命令行模式,无法插入数据,需要进入插入模式,按i或者a
C.按esc,切换到命令行模式,按shift+: ,进入底行模式,输入wq
B.如何配置vim置文件存在的路径
在命令行下,输入命令:sudo vim /etc/vim/vimrc
在vim命令模式下输入set rtp可以得到路径
C.Vim命令行模式的操作:复制、粘贴、删除、恢复
Vim命令模式操作:
复制整行(nyy或者yny ,复制n行,n为数字);
粘贴的命令式p,即put(放下)
p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
P 大写P代表贴至游标前(上)
删除dd ndd,
恢复u
2.编译器-gcc
A.gcc编译器的特点交叉编译器的作用/交叉编译的作用)
特点:能够实现交叉编译:在当前CPU平台能够编译出在其他CPU平台运行的代码
为什么需要交叉编译:因为不同的CPU有不同的汇编
B.编译选项:-E、-S、-c、-o;(编译器的工作过程)
-E: 预处理,主要是进行宏展开等步骤,生成的文件微test.i
-S: 编译,生成汇编代码,生成的文件为test.S
-c: 汇编:生成机器码,生成的文件未test.o
(-o): 链接:生成可执行文件
.编译过程:预处理、编译、汇编(生成目标文件)、链接(建立符 表)
预处理(不检查语法错误): a.头文件展开b.宏替换 c.条件编译 d.预处理指令: #line #error
编译阶段:词法检查,语法分析
#include<stdio.h>和#include“stdio.h”搜索路径不同
#include<stdio.h>系统头文件目录(/usr/include)
#include“stdio.h” :先在当前目录搜索,然后到系统的头文件目录
gcc -c hello.c汇编停止生成.o文件(目标文件)
gcc -E.c
-E -s -c停止预处理
-o1一级优化 -o2二级优化 -o3三级优化
C.头文件-I(大写的i)、警告信息:-w、-Wall、编译器优化-O123
-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include
-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib
gcc -Wall demo.c把所有的警告开关开起来
gcc -w demo.c 关警告
-O 提供基础级别的优化
-O2 提供更加高级的代码优化,会占用更长的编译时间
-O3 提供最高级的代码优化
-O4 不优化,这是默认值
D.链接库文件:-l
I(大写的i) 是 Include 头文件路径
L 是 link 目录
l (小写的L)是链接文件 ,在L指定的位置找
E.库文件的特点inux库文件的分类inux库存放的路径态库和动态库的制作与使用、区别必考)
什么是库文件存函数和变量,只能使用不能看到其实现
linux下的库有两种:静态库和共享库(动态库)。
Linux库文件存放位置:/lib /usr/lib
静态库.a:使用静态库编译程序,是在编译时加载,生成的可执行文件大,占用的空间大,运行速.so度快
动态库:使用动态库编译程序,是在运行时加载,生成的可执行文件小,占用的空间小,运行速度慢
3.调试器—gdb
A.调试器的三个基本功能查看变量的值等)
1.启动被调试的程序
2.设置断点、单步执行
3.查看变量的值
B.Gdb的使用:-g 编译 gdb 可执行文件 —tui
-g生成调试信息
gdb+可执行文件
查看源代码:gdb 可执行文件 –tui
C.Gdb的命令:
运行命令:run、continue、finish;
运行命令:
Run:运行程序
Continue:继续运行直到程序结束(再次遇到断点还会停止运行)
1.until
这个用于执行完循环。
在执行完循环体内的最后一条语句之后执行 until, 就会执行完循环体到后面的一个语句停下。
2. finish
执行完当前的函数。
3. tui
是一个命令行的界面,能同时把代码显示出来。
断点命令:break+行 (等)、delete、clear、enable/disable、info break;
Break +行
Break+行 +条件
Break+函数名
Info break 查看断点信息
Delete+断点编
Disable+断点编 :关闭断点
Enable+断点编 :打开断点
Clear+行 把这行的断点清掉
单步执行:next、step(两者区别)
Next(不进入子函数)、step(进入子函数)
查看变量的值:print display
print§ 变量名 查看指定变量值
图形化操作的命令:layout src、layout asm、layout splite
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src:显示源代码窗口
layout asm:显示汇编窗口
layout regs:显示源代码/汇编和寄存器窗口
layout split:显示源代码和汇编窗口
layout next:显示下一个layout
layout prev:显示上一个layout
程序监控的命令:watch
在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化
Ctrl + L:刷新窗口
Ctrl + x,再按1:单窗口模式,显示一个窗口
Ctrl + x,再按2:双窗口模式,显示两个窗口Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
quit(q) 退出gdb
4.Makefile语法规则有哪些/p>
5.为什么先将.c文件编译生成.o文件br> 节省编译时间
6.工程化管理代码的优点有哪些何建立工程化目录br> 7.Makefile中重要的函数作用br> KaTeX parse error: Unexpected character: ‘at position 60: …简单介绍一些常用的基本函数。 subst 格式:(subset 参数1,参数2,参数3)
功能:把参数3中的参数1替换成参数2
返回值:被替换后的参数3
例如:
result := KaTeX parse error: Unexpected character: ‘at position 69: …ve the world”。 patsubst 格式:(patsubset模式参数,参数1,参数2)
功能:把参数2中符合模式参数的单词(单词是指参数中被空格隔开的字符串)替换成参数1
返回值:被替换后的参数2
例如:
result := KaTeX parse error: Unexpected character: ‘at position 50: …t的值为“x.o y.o”。 wildcard 格式:(wildcard模式参数)
功能:列出当前目录下所有符合模式参数的文件名
返回值:当前目录下所有符合模式参数的文件名
例如:
result := KaTeX parse error: Unexpected character: ‘at position 39: …为当前目录下所有的C文件名。 strip 参数 格式:(strip 参数)
功能:去掉参数中开头和结尾的空格
返回值:被去掉空格的参数
例如:
result := KaTeX parse error: Unexpected character: ‘at position 39: …ult的值为“China”。 findstring 格式:(findstring 参数1,参数2)
功能:在参数2中查找参数1
返回值:如果找到返回参数1,如果没找到返回空
例如:
result := $(findstring me, you and me)
result的值为“me”。
result := KaTeX parse error: Unexpected character: ‘at position 43: …) result的值为“”。 filter 格式:(filter模式参数,参数1)
功能:从参数1中筛选出符合模式参数的字符串
返回值:符合参数模式的字符串
例如:
a := x.c y.c z.h
result := $(filter %.c, KaTeX parse error: Unexpected character: ‘at position 26: …t的值为“x.c y.c”。 addsuffix 格式:(addsuffix 参数1,参数2)
功能:在参数2中的每个单词加上后缀参数1
返回值:加上后缀的所有单词
例如:
result := KaTeX parse error: Unexpected character: ‘at position 41: …t的值为“x.c y.c”。 addprefix 格式:(addprefix 参数1,参数2)
功能:在参数2中的每个单词加上前缀参数1
返回值:加上前缀的所有单词
例如:
result := KaTeX parse error: Unexpected character: ‘at position 55: …/x.c src/y.c”。 foreach 格式:(foreach 变量参数,参数1,表达式)
功能:循环取出参数1中的单词赋给变量参数,然后运行表达式
返回值:表达式的运行结果
例如:
a:= x y z
result := $(foreach b, $(a), KaTeX parse error: Unexpected character: ‘at position 49: …,b在这里是一个临时的变量。 call 格式:(call 变量参数,参数…)
功能:循环把参数依次赋给变量参数中的 ( 1 ) 、 (1)、 (1)、(2)…
返回值:赋值后的变量值
例如:
a:= $(2) $(1)
result := $(call KaTeX parse error: Unexpected character: ‘at position 26: …result的值为“yx”。 if 格式:(if 条件参数,执行参数)
功能:如果条件参数非空,运行执行参数部分
返回值:条件参数非空,返回执行参数部分
例如:
result := ( i f C h i n a , w o r l d ) r e s u l t 的 值 为 “ w o r l d ” 。 格 式 : (if China, world) result的值为“world”。 格式: (ifChina,world)result的值为“world”。格式:(if 条件参数,执行参数1,执行参数2)
功能:如果条件参数非空,运行执行参数1部分;反之运行执行参数2部分
返回值:条件参数非空,返回执行参数1;反之返回执行参数2
例如:
a:=
result := $(if KaTeX parse error: Unexpected character: ‘at position 38: …ult的值为“world”。 dir 格式:(dir 参数)
功能:从参数中取出目录部分
返回值:目录部分
例如:
result:=KaTeX parse error: Unexpected character: ‘at position 46: …“/home/test/”。 error 格式:(error 参数)
功能:停止“Make”运行并显示参数
返回值:参数
例如:
result:=KaTeX parse error: Unexpected character: ‘at position 49: …rror occure!”。 warning 格式:(warning 参数)
功能:“Make”运行时显示参数
返回值:参数
例如:
result:=$( warning warning occure!)
result的值为“warning occure!”。
2.Shell编程的语法:变量(字符串拼接)、基本控制语句(if、for、while、until、case)、函数(定义/调用、函数返回值、函数传参)
语法:
A.变量(字符串)、局部变量、默认变量、内置变量(env)
B.输入输出 echo、read+变量名、read -p “Please input name:” name
C.基本控制语句:if、for、while、until、case
D.数组==C语言
E.函数:function[定义函数名] swap(){};调用函数:函数名+实参 函数的返回值
三类变量:自定义变量、内建变量、默认变量
默认变量:
$#:传输脚本的命令行参数的个数
$*:所有命令行参数值,在各个参数值之间有空格
$0:命令本身(shell文件名)
$1:第一个命令行参数
$2:第二个命令行参数
1.Shell数组
文本处理的三剑客:grep、awk、sed、find
1.命令选项
2.正则表达式(普通、扩展)
3.实例
S/1/2/g将1整行替换成2
Linux文件四大类:链接文件f 普通文件 file
b 块设备文件
Linux文件分类:普通文件、目录文件、设备文件、链接文件(必考)
普通文件是以-开头的
目录文件是以d开头的
设备文件是以c/d开头的
链接文件是以l(小写的L)开头的
p:管道文件 s:共享文件 f:堆栈文件
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24810 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!