第1章 linux基础
1.1 内存映像
1.1.1 内存映像的定义
将物理内存通过虚拟内存管理机制映射到进程的虚拟内存地址上的过程。
对于32位的系统,一旦进程运行起来,操作系统就会为每个进程分配4G的虚拟内存。
前面3G是用户空间,后面1G是内核空间。
针对全局变量肯定在【.bss或 .data】段,初始化好的肯定在【.data】,未初始化的肯定在【.bss】
可执行程序的大小 = .data的大小 + .text的大小。
1.2 进程与线程
1.3 进程间通讯
1.3.1 有名管道和无名管道
1.3.2 信号
1.3.3 共享内存
共享内存是进程间进行通讯的一种方式。
- 共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。
- 为了在多个进程间交换信息,内核专门留出了一块内存区可以由需要访问的进程将其映射到自己的私有地址空间。
- 进程就可以直接读写这一内存区而不需要进行数据的拷贝:从而大大提高的效率。
- 由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等。
1.3.4 消息队列
链表
队列
1.3.5 信号量
1.4 桥接和Nat连接
1.4.1 桥接
1.4.2 Nat连接
第2章 嵌入式系统框架
2.0 嵌入式系统构成
- 嵌入式微处理器(MPU);
- 外围硬件设备;
- 嵌入式操作系统(可选);
- 应用软件。
2.1 Bootloader的作用
- 将操作系统的内核从存储器(NorFlash或EMMC)加载到内存(虚拟内存)。
- 将内存中的内核启动。
注意:Bootloader使用的实实在在的物理地址。因为操作系统还没起来,是不可能完成物理地址到虚拟地址的映射,所以Bootloader使用的是器件的物理地址。
操作系统起来之后,操作系统中的MMU(内存管理单元)才将物理地址映射到虚拟地址。
Bootloader是一个裸机程序,由汇编和C语言组成。
第3章 微处理器(MPU)
ARM公司生产内核
- 芯片厂商在内核上加外设,制作成芯片。(例如:瑞芯微,三星,海思);
- 设备厂商拿着芯片做板卡。(例如,正点原子,或者其他企业)
- 企业拿着芯片做产品(例如:昂立公司的继保测试仪)
3.1 寄存器的组织结构
ARM处理器有37个32位的寄存器,其中31个为通用寄存器,6个为状态寄存器。
寄存器是在ARM内核中。
第一列用户模式和第二列的系统模式下都是使用这ARM啮合中的相同寄存器。
- R13是堆栈指针(SP)
- R14是链接寄存器(LR)
- R15程序计数器(PC)
- CPSR是当前程序状态寄存器