嵌入式系统架构
一、计算机组成
二、操作系统
1. 组成:
驱动接口 + 内核 + 系统调用 + Shell、库函数、应用软件
2.操作系统和硬件关系:
操作系统通过设备驱动接口调用相对应的硬件。
三、内核
1.概念明确:
Linux不是一个操作系统
Linux是操作系统中的内核,即Linux Kernel
GNU/Linux:采用Linux内核的GNU操作系统
2.内核的整体架构以及对应的目录
进程调度是内核的核心,所有的模块都与进程调度模块存在依赖关系,因为他们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。
内存管理模块用于确保所有的进程能够安全地共享机器主要内存区,同时内存管理模块还支持虚拟内存的管理方式,使得Linux支持进程使用比实际内存空间多的内存容量。
文件系统模块用于支持对外部设备的驱动和存储,虚拟文件系统模块通过对向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节,提高兼容性。进程调度不直接对设备进行操作,而是对通用的文件接口。
四、硬件系统
1.硬件系统的组成
计算机硬件主要包含5部分:运算器、控制器、存储器、输入设备、输出设备
嵌入式系统硬件主要包含:处理器(CPU)、总线、输入输出接口、(前三个一般都已经集成在SoC上)、存储器、输入输出设备
2.总线:
(1)分类:
内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;
系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;
外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。
AHB:高性能总线,主要用于高性能、高时钟频率的系统模块,如CPU、DSP、DMA之间的连接
APB:高级外围总线,主要用于低带宽的周边外设之间的链接,(APB桥)如UART、USB、SPI、I2C之间的连接
高带宽向低带宽的转换需要桥作为中间转换。
(2)Platform Bus
1、什么是platform(平台)总线?
相对于USB、PCI、I2C、SPI等物理总线来说,platform总线是一种虚拟、抽象出来的总线,实际中并不存在这样的总线。
2、那为什么需要platform总线呢?
其实是Linux设备驱动模型为了保持设备驱动的统一性而虚拟出来的总线。因为对于usb设备、i2c设备、pci设备、spi设备等等,他们与cpu的通信都是直接挂在相应的总线下面与我们的cpu进行数据交互的,但是在我们的嵌入式系统当中,并不是所有的设备都能够归属于这些常见的总线,(比如I2C挂载在APB总线下,LCD挂载在AHB总线下,Camera挂载在I2C总线下,)所以Linux驱动模型为了保持完整性,将这些设备挂在一条虚拟的总线上(platform总线),而不至于使得有些设备挂在总线上,另一些设备没有挂在总线上。