嵌入式系统的定义和特点
可可弟转世
定义:嵌入式系统是执行特定功能的软硬件平台。
特点:专用性、可剪裁、可靠性、实时性、低功耗
嵌入式系统的组成结构
软件、硬件
嵌入式应用软件、嵌入式操作系统、嵌入式处理器、嵌入式外围设备
嵌入式存储设备的分类
嵌入式软件的测试阶段和测试策略
嵌入式系统的应用
Flash的分类
嵌入式系统与通用计算机系统的区别
嵌入式处理器的分类
微控制器、微处理器、数字信号处理器、片上系统
什么是ARM
典型的嵌入式操作系统的特点
微处理器的重要指标
嵌入式微处理器的流水线技术
ARM精简指令集的体系结构特点
嵌入式系统中存储设备的分类(RAM、SRAM、DRAM 、FLASH)及其特点
RAM、SRAM、DRAM
RAM即是我们通常所说的内存。RAM又可分为SRAM(静态存储器)和DRAM(动态存储器)
各RAM的比较:
SRAM:静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。
DRAM: 动态RAM,需要刷新,容量大。
SDRAM :同步动态RAM,需要刷新,速度较快,容量大。
DDR SDRAM: 双通道同步动态RAM,需要刷新,速度快,容量大。
Flash
一种非易失闪存,它具有和ROM一样掉电后数据不会丢失的特性。Flash是目前嵌入式系统中广泛采用的主流存储器
主要特点是按整体/扇区擦除和按字节编程,具有低功耗、高密度、小体积等优点
NOR FLASH和NAND FLASH的特点
JTAG接口功能
ARM各版本的特点
ARM指令和Thumb指令的特点和区别
哈佛总线结构和冯·诺依曼结构各自的特点
大小端模式
什么是大端和小端(Big-Endian和Little-Endian)?
- Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
- Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
大端小端没有谁优谁劣,各自优势便是对方劣势:
小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。
从应用上讲,Linux的主要组成部分( 即Linux的基本操作系统结构)
内核
Shell
文件系统
实用工具
Linux文件系统目录存放的内容
Linux启动时,第一个必须挂载的是根文件系统
MTD的功能
基于FLASH的文件系统类型,基于RAM的文件系统类型
Flash:
1、JFFS2
2、YAFFS
3、Cramfs
RAM:
1、Ramdisk
2、Ramfs/tmpfs
“[[email protected] root]#”中各符号的含义
Linux常用命令及练习题
Vi的模式
1、命令行模式
使用Vi时最初进入的模式,在该模式中可通过上下移动光标进行“删除字符”或“整行删除”,也可进行“复制”、“粘贴”等操作,但无法编辑文字
2、插入模式
在该模式下可进行文字编辑和输入,按[Esc]键回到命令行模式
3、底行模式
在该模式下,光标位于屏幕的底行,用户可进行文件保存或退出操作,也可设置编辑环境,如寻找字符串、列出行号等
GCC最基本的用法∶
gcc [options] [filenames]
options为编译器所需要的参数
filenames为相关的文件名称
选项
-c:只编译,不连接成为可执行文件。
-o output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。
-g:产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
当不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件。
GDB本地调试的命令
基本Makefile结构
Make工具的使用
使用Make工具的执行makefile的命令为:
make
如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件(即第一个用:标志的对象)
GNU Make工具在当前工作目录中按照GNUmakefile、makefile、Makefile顺序搜索Makefile文件
也可以使用命令行参数-f指定文件名:
例如 make -f filename
Makefile变量
Makefile规则
Makefile 的规则是 Make 进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句
Makefile 中的一条语句就是一个规则
为了简化Makefile的编写,Make定义了2种规则:
隐式规则
使用Makefile时,有一些语句经常使用,而且使用频率非常高的东西,隐式规则能够告诉 make使用默认的方式来完成编译任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make 会自动按隐式规则来确定如何生成目标文件。
模式规则
隐式规则只能对默认的变量进行编译操作
模式规则规定,在目标文件的定义时需要用“%”字符。
“%” 表示一个或多个任意字符,与文件名匹配。
例如:
“%.c”表示以“.c”结尾的文件名(文件名的长度至少为3),
“s.%.c”则表示以“s.”开头,“.c”结尾的文件名(文件名的长度至少为5个字符)。
Makefile应用和注意事项
ARM目标板采用的编译器(armv4l-unknown-linux-gcc)
嵌入式Linux开发流程
串行通信软件的配置和网络配置mount
串行通信软件的配置
在进行开发调试,利用Windows上的超级终端和Linux下的minicom充当开发板的信息输出监视器。这两个软件都是通过串口与开发板相连的,连接时需要配置相应的串口属性
网络的配置
配置NFS网络文件系统,利用挂载形式对可执行文件进行调试。
mount
作用
挂载某一设备使之成为某个目录名称。
命令格式
mount [选项] <-t 类型> [-o 挂载选项] <设备> <挂载点>
命令选项
-t 该参数配合选项用于指定一个文件系统分区的类型。
-o 该参数配合选项用于指定一个或多个挂载选项。
交叉编译
所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
编译最主要的工作是将程序转化成运行该程序的CPU所能识别的机器代码
交叉编译就是在特殊的编译环境下,如同翻译一样,把程序代码编译成不同的CPU所对应的机器代码。
交叉编译环境建立在宿主机(一台普通计算机)上,对应的嵌入式开发板叫做目标板(或开发板) 。
minicom和Windows XP超级终端的特点和使用注意事项
minicom是Linux下的串口通信软件
Windows XP超级终端是Windows下的串口通信软件
相同点:
minicom和Windows XP超级终端都是一种串口通信工具,可用来与串口设备通信
它们在嵌入式系统开发中充当嵌入式系统的“显示器” ,能够实时显示开发板上的内容
注意:
若系统是Linux,则只能使用minicom
如果系统是Windows和虚拟机的情况,minicom和Windows XP超级终端都可以使用。但是启动了minicom之后超级终端是不可用的,需要重新启动系统,再使用超级终端。
NFS服务、Samba服务的基本概念和配置方法
NFS(Network File System)指网络文件系统服务,NFS服务可以使网络上的同为Linux或Unix系统主机共享文件系统。
NFS可以将远程文件系统载入在本地文件系统下。远程的硬盘、目录和光驱都可以变成本地主机目录树中的一个子目录。载入后与处理自己的文件系统一样使用即可。
NFS的使用分为
服务器端——提供要共享的文件,被挂载(mount)端
客户端——通过挂载mount实现对共享文件的访问操作
客户端只要用mount就可以把远程宿主机的NFS目录文件挂接到自己的文件系统下,客户端使用NFS目录文件就和使用本地的文件一样
Samba服务可实现Windows和Linux不同系统间交换文件共享。
步骤:
(1)关闭防火墙(同NFS)
(2)配置Samba服务器
(3)设置Samba服务器IP地址
(4)启动Samba服务器
(5)设置Windows的IP地址
(6)在Windows下访问共享
NFS服务实现的原理及注意事项
将宿主机NFS服务所共享的目录/arm2410s挂载到开发板的 /mnt目录命令
使用NFS mount主机的/arm2410s到/host目录命令
注意:
主机的IP地址为192.168.123.118
在目标板上挂载
mount 192.168.123.118:/arm2410s /host
NFS服务和Samba服务的区别
一个是Unix和Linux之间,一个是Linux和Windows之间
BootLoader的基本概念
BootLoader是系统加电后运行的第一段代码,是在操作系统内核运行之前运行的一段小程序。
一个嵌入式Linux系统从软件的角度看,分为四个层次
引导加载程序(BootLoader)
Linux内核
根文件系统
用户应用程序
BootLoader特点、安装媒介
固态存储设备的典型空间分配结构
BootLoader的操作模式
1、启动加载模式
2、下载模式
BootLoader与主机之间的通信设备及协议
几种流行的Linux BootLoader
U-Boot
BLOB
RedBoot
VIVI
vivi下载模式的进入方法
对FLASH分区后为什么要重新烧写ViVi
使用串口下载文件到Flash的一般命令
MMU的全称及含义
一台内存为256MB的32bit X86主机,其虚拟地址空间范围是什么,物理地址空间范围是什么
操作系统内核的复杂性相当程度上来自于什么
操作系统内核的复杂性相当程度上来自内存管理,对整个系统的结构有着根本性的深远影响。
MMU的作用
实现虚拟地址到物理地址映射
实现对地址访问的保护和限制
ARM-Linux的内存管理机制的两种模式
32位ARM微处理器的内核空间和用户空间的划分
ARM微处理器32位地址,支持的虚拟地址为4GB,划分成两部分:
内核空间(高端的1GB)
用户空间(低端的3GB)
Linux系统启动时,使用什么将内核映像载入
Linux的模块基本概念及相应的命令
内核裁剪配置方法中最稳定、使用最广泛的方法
Busybox的功能。
进程、线程的概念及关系
进程的概念:进程是一个具有独立功能的程序的一次动态执行过程。
进程是正在执行的程序。
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。
一个进程可以由很多个线程组成,线程间共享进程的所有资源。
进程间通信
主要进程间的通信方式
设备驱动程序的定义
设备驱动程序(Device Driver)简称“驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口。操作系统通过这个接口,才能控制硬件设备的工作。
系统调用是操作系统内核和应用程序之间的接口
设备驱动程序是操作系统内核和机器硬件之间的接口
Linux系统的设备分类
字符设备
块设备
网络设备
设备号及其分类,主次设备号
设备进入点的创建、查看和删除命令
设备驱动程序加载、查看和卸载命令
设备文件的存放位置、file_operations结构体
设备驱动程序和用户应用程序的区别
用户进程运行在用户空间,设备驱动程序工作在内核空间
嵌入式GUI的特点
Qt的两个支撑工具
Qt的基本概念及主要的类(3个)
Qt4中提供了QtSql模块
这个模块为访问数据库提供了平台和相应的接口,此接口则提供了一套类来实现用户对数据库的访问,可以用Qt SQL模块提供的模型视图体系完成可视化的信息输入
1、QSqlQueryModel
为SELECT SQL语句结果集提供只读数据模型
2、QSqlTabelModel
为单个数据库表提供可编辑的数据模型
3、QSqlRelationModel
为单个数据库表提供可编辑的数据模型,同时可以和其他数据库表产生关联
信号和插槽的基本概念、机制和连接
声明信号的关键字,信号的特点
包含signal和slot的类需要的关键字
嵌入式数据库的特点
SQLite最大特点
SQLite3的命令
含有SQLite3的API函数的应用程序,在编译时需要加上的参数
SQLite的驱动程序是什么?
Qt提供的三种SQL模型
1、QSqlQueryModel
为SELECT SQL语句结果集提供只读数据模型
2、QSqlTabelModel
为单个数据库表提供可编辑的数据模型
3、QSqlRelationModel
为单个数据库表提供可编辑的数据模型,同时可以和其他数据库表产生关联
Qt4要实现与数据库的连接需用到的类
客户端与服务端的连接过程
IP地址与端口号的定义
网络上的每台计算机都必须有一个唯一的IP地址作为标识。
网络中的计算机通过IP地址找到要传送数据的另一台主机。
IP地址由四部分组成,每部分的范围都是0~255,表示八位的地址。
IP地址只能保证把数据信息送到该计算机,无法知道要把数据交给该主机的那个网络程序。
“端口号” 标识正在计算机上运行的进程(程序)。
端口号是一个整数,其取值范围为0~65535之间。同一台计算机上不能同时运行两个有相同端口号的进程
0~1023间的端口号作为保留端口号,用于一些网络系统服务和应用,用户的普通网络应用程序使用1024以后的端口号,避免端口号冲突
TCP与UDP协议
传输控制协议(Transmission Control Protocol, TCP )是面向连接的通信协议,TCP提供两台计算机之间可靠无差错的数据传输。应用程序利用TCP进行通信时,信息源与信息目标之间会建立一个虚连接。这个链接一旦建立成功,两台计算机之间就可以把数据当做一个双向字节流进行交换(打电话)。
用户数据报协议(User Datagram Protocol,UDP)是无连接通信协议,UDP不保证可靠的数据传输。简单地说,如果一个主机向另一台主机发送数据,这一数据就会立即发出,而不管另外一台主机是否已准备好接收数据。如果另一台主机收到了数据,它也不会确认收到与否(发邮件)。
套接字概念、套接字类型
在TCP/IP通信协议中,套接字(Socket)就是IP地址与端口号的组合
网络通信是两台计算机上执行的应用程序之间在收发数据。
套接字连接想象为一个电话呼叫。
建立呼叫:呼叫方-客户端,监听方-服务器端
类型:
字节流套接字(Stream Socket)
基于TCP协议的连接和传输方式,又称为TCP套接字。字节流套接字提供的通信流能保证数据传输的正确性和顺序性
数据报套接字(Datagram Socket)
基于UDP协议的连接和传输方式,又称为UDP套接字。数据报套接字定义的是一种无连接的服务,数据通过相互独立地提出报文进行传输。由于不需要对传输的数据进行确认,因此传输速度较快
原始套接字
允许对底层协议如IP进行直接访问,提供TCP套接字和UDP套接字所不能提供的功能,主要用于对一些协议的开发,如构造自己的TCP或UDP分组等
Socket网络函数所需的头文件
send和 recv函数
sendto和recvfrom函数