目录
6.1 嵌入式Linux软件设计概述
双机开发模式:
宿主机-目标机开发模式
交叉编译:
在一种平台上编译出能在另一种平台上运行的程序
交叉编译器和交叉链接器:
能够在宿主机上安装,但是能够生成在目标机上直接运行的二进制代码的编译器和链接器
宿主机和交叉开发环境要求的操作系统不一致:
利用虚拟化、仿真化手段建立开发环境
ICE:
一种用于替代目标机上CPU的设备,即在线仿真器
OCD:
是CPU芯片提供的一种调试功能,可认为是一种廉价ICE
通讯模式:
- 串口通讯(minicom)
- 网络通讯
串口通讯的特点及应用场景:
- 驱动实现最简单
- 传输速度慢,距离短,不适合大数据量、长距离数据传输
- 需要在宿主机、目标机两端均提供驱动
- 常用于宿主机-目标机的字符流通讯
网络通讯的特点及应用场景:
- 驱动实现相对复杂,一般采用精简的网络通讯协议,如TFTP
- 常用于大数据量数据传输,可以作为串口通讯的补充
- 需要在宿主机、目标及机两端均提供驱动
- 宿主极端实现服务器,目标机端提供客户端
TFTP协议:
全称是简单文件传输协议,可以看成一个简化了的FTP,服务器端安装在宿主机,客户端由目标板
实现,目标板需要获取IP地址
6.2 Linux简介
Linux内核特点:
- 可移植性
- 可量测性
- 标准化和互用性
- 完善的网络支持
- 完全性
- 稳定性和可靠性
- 模块化
- 编程容易
典型的Linux发行版包括:
- Linux内核
- 一些GNU程序库和工具
- 命令行shell
- 图形界面和桌面环境
- 应用软件
Linux版本:
- Debian
- 红帽
- Ubuantu
- Suse
- Fedora
Linux安装方式:
- 纯Linux
- 双操作系统
- 虚拟机
基于虚拟机安装Linux:
- 模拟出硬件设备,在该硬件设备基础上安装系统
- 安装Vmware等虚拟机软件
- 建立虚拟机
- 在虚拟机下安装Linux
Vmware模拟出来的各种硬件与主机没有关系
6.3 Linux终端命令
文件管理系统:
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统
文件系统由三部分组成:
- 与文件管理有关的软件
- 被管理的文件
- 实时文件管理所需的数据结构
Linux系统中三种基本文件类型:
- 普通文件:又分为文本文件和二进制文件
- 目录文件:目录文件存储了一组相关文件的位置、大小等与文件有关的信息
- 设备文件:Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一
Linux文件系统简介:
- Linux系统以目录的方式来组织和管理系统中的所有文件
- Linux系统以根目录“/”为起点,所有其他的目录都由根目录派生而来
- 工作目录:用户登录就在某个目录中,称为工作目录
- 用户主目录:系统管理员在增加用户时为该用户建立起来的目录,每个用户都有自己的主目录
- 路径:从树型目录结构中的某个目录到某个文件的一条道路,中间用“/”分开
- 绝对路径:从根开始的目录,也称完全路径
- 相对路径:从工作目录开始的路径
设备:
计算机中的外围硬件设备,除了CPU和内存以外的所有设备
Shell:
系统的用户界面,提供用户和内核进行交互操作的一种接口(命令解释器),接收用户输入的命令
并把它送入内核执行,Shell起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。
Linux内核结构:
五个主要子系统
- 进程调度
- 进程间通信
- 内存管理
- 虚拟文件系统
- 网络接口
其他部分
- 各子系统需要对应的设备驱动程序
- 依赖体系结构的代码
程序:
一组指令的有序集合(静态的)
进程:
具有独立功能的程序的一次运行过程(动态的,有生命周期,一个程序可以有多个进程)
进程调度概念:
- Linux提供了抢占式的多任务模式
- 由调度程序来决定什么时候停止一个进程的运行,以便其他进程能够得到执行机会
- 这个强制的挂起动作叫做抢占
- 进程被抢占之前能够运行的时间是预先设置好的,叫进程的时间片
- 时间片实际上就是分配给每个可运行进程的处理器时间段
进程间通信:
- 在不同进程之间传播或交换信息
- 管道:可用于具有亲缘关系进程间的通信
- 有名管道:除了管道的功能外,话可以在许多并不相关的进程之间进行通讯
- 共享内存:使多个进程可以访问同一快内存空间,是最快的可用IPC形式
- 套接字:更为一般的进程间通信机制,可用于不同机器之间的进程间通信
内存管理:
- 内存管理可以使多个进程安全地共享内存
- IPC中的共享内存方式依赖于内存管理
虚拟文件系统
虚拟文件系统为文件系统提供了一个通用的接口?
网络接口:
- 网络接口在设计上遵循拟协议本身的分层体系结构
- 网络协议
- 网络设备驱动程序
Linux网络支持TCP/IP模型:
- IP协议
- TCP协议
- UDP协议
内核烧写:
- 通过串口(minicom)
- 通过网络(Uboot下使用tftp烧写)
Shell的种类:
- ash
- bash
- tcsh
Shell的主要功能:
命令解释器、命令通配符、命令补全、别名机制、命令历史
访问权限:
系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访
问。文件或目录的访问权限分为读、写和可执行三种。
有三种不同类型的用户对文件或目录进行访问:文件所有者、与所有者同组的用户、其他用户。所
有者一般是文件的创建者。
6.4 Linux编程基础
VI编辑器模式:
- 命令模式
- 插入模式
- 末行模式
调试:
- 静态调试
- 动态调试
静态调试:
在程序编译阶段查错并修正错误
主要为语法错误,输入错误,类型匹配错误
排错方式:利用错误、警告信息,并结合源文件环境排错
动态调试:
在程序运行阶段查错并修正错误
主要错误类型为算法错误和输入错误
排错方式:利用调试工具定位并修正错误
常见的动态调试方法:
- 增加调试语句
- 记录程序的执行状况
- 观察内存变化
- 使用调试工具
GUN Debuger的功能:
- 启动程序,设置程序执行的上下文环境
- 在指定的条件下停止程序
- 程序停止时,检查程序的状态
- 在程序运行时,改变程序状态,使其按照改变后的状态继续执行