1嵌入式系统概述
1.1嵌入式系统
- 嵌入式系统的定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求的专用计算机系统。
- 应用领域:工业控制、交通管理、信息家电、智能家庭管理、机器人
- 嵌入式系统的组成
- 嵌入式处理机
- 嵌入式外围设备
- 嵌入式操作系统
- 嵌入式软件
- 嵌入式系统的特点
- 嵌入性
- 专用性
- 实时性
- 可靠性
- 可裁剪性
- 功耗低
1.2嵌入式操作系统
- 操作系统的基本功能:
- 处理器的控制与管理
- 存储器额分配与管理
- 外部设备的控制与管理
- 文件的控制与管理
- 作业的控制与管理
满足多任务处理、稳定运行、安全可靠、占用系统资源少、特有的实时事件处理、便于维护和管理、简洁良好的用户界面。
从使用者角度:方便用户使用
从程序开发者角度:编程语言
从操作系统设计者角度:让各种软件资源和硬件资源高效而协调的运转起来;尽可能方便用户使用计算机。
- 嵌入式操作系统的发展:
- 无操作系统的嵌入算法阶段
- 以嵌入式CPU为基础、简单操作系统为核心的嵌入式系统
- 通用嵌入式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统
- 以基于Internet为标志的嵌入式系统。
- 嵌入式操作系统的特点:
- 可定制性:可以添加或裁剪操作系统内核
- 可移植性:运行在不同处理器上
- 实时性:可以提供实时性支持
- 资源限制:嵌入式操作系统内核占用空间要小
- 应用编程接口:提供API
- 嵌入式操作系统体系结构:
- 宏内核结构,优点:模块之间直接调用函数,效率高;缺点:维护困难,移植性和扩展性差。
- 分层结构,优点:复杂功能简化,分而治之,便于设计,移植替换性好,开发和维护简单;缺点:系统效率低,底层修改会产生连锁反应。
- 微内核结构,优点:内核小,扩展性好,安全性高,便于移植和维护;缺点:通信负载,系统效率低,地址空间独立,增加额外开销。
1.3嵌入式linux基础
- Linux功能特点:
- 开放性
- 多用户、多任务
- 设备独立性
- 强大的网络功能
- 安全性
- 可移植性
- Linux作为嵌入式操作系统的优势:
- 低成本开发系统
- 可应用于多种硬件平台
- 可定制的内核
- 性能优异
- 良好的网络支持
- Linux文件系统、分区和挂载
在Linux中把每一个分区和某一个目录对应,以后在对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一。这个把分区和目录对应的过程叫做挂载(Mount),而这个挂载在文件树中的位置就是挂载点。这种对应关系可以由用户随时中断和改变。
分区:主分区、扩展分区、逻辑分区 硬盘分区是针对一个硬盘进行操作的,它可以分为:主分区、扩展分区、逻辑分区。要在硬盘上安装操作系统,则该硬盘必须要有一个主分区,PC机每个硬盘最多只能分成4个主分区,主分区不利于应用程序使用,在主分区的基础上引入扩展分区(Extended partion),因此可在硬盘4个主分区中的一个用作扩展分区,在扩展分区中可以建立多个逻辑分区(Logical partion),
- 文件属性
第一个字符显示文件的类型
“_”表示普通文件。
“d”表示目录文件。
“l”表示链接文件。
“c”表示字符设备。
“b”表示块设备。
“p”表示命名管道比如FIFO文件(First In First Out,先进先出)。
“f”表示堆栈文件比如LIFO文件(Last In First Out,后进先出)。
2嵌入式Linux编程基础
2.1Linux下的C语言编程
- C语言概述
- C是中级语言
- C是结构化语言
- C语言功能齐全
- C语言可移植性好
- Linux下C语言编程环境
- 编辑器
- 编译链接器
- 调试器
- 项目管理
- C语言开发流程
- 编写源代码
- 编译源程序(GCC -o)
- 运行程序(./hello)
- 调试程序(使用GDB工具)
- 交叉编译(基于ARM架构的GCC编译器将源程序编译成嵌入式产品中的可执行程序)
- 编写Makefile(自动编译管理器)
2.3GCC编译器
- GCC编译流程
- 预处理,在该阶段,编译器将上述代码中的stdio.h编译进来,并且用户可以使用Gcc的选项“-E”进行查看,该选项的作用是让Gcc在预处理结束后停止编译过程。
- 编译,编译阶段,在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
- 汇编,使用选项“-c”,将汇编代码已转化为“.o”的二进制目标代码
- 链接,在