2022年嵌入式Linux应用完全开发手册 .pdf
《2022年嵌入式Linux应用完全开发手册 .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式Linux应用完全开发手册 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式 Linux 应用完全开发手册1 嵌入式 Linux应用完全开发手册终端概述在 Linux 中,TTY(终端)是一类字符设备的统称,包括了3 中类型:控制台、串口、伪终端。控制台:供内核使用的终端为控制台。控制台在Linux 启动时,通过命令console= 指定,如果没有指定控制台,系把第一个注册的终端作为控制台。控制台是一个虚拟的终端,它必须映射到真正的终端上。控制台可以简单的理解为printk 输出的地方。控制台是个只输出的设备,功能很简单,只能在内核中访问。进程四要素 有段程序供其执行。这段程序不一定是某个进程所专有,可以与其它进程共用。 有进程专用的内核空间堆栈。 在内核中有一
2、个task_struct 数据结构,即通常所说的“进程控制块” 。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。 有独立的用户空间。进程调度 调度概念:从就绪的进程中选出最合适的一个进程执行。 调度策略-SCHED_NORMAL(SCHED_OTHER):普通的分时进程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 嵌入式 Linux 应用完全开发手册2 - SCHED_FIFO :先进先出的实时调度-
3、 SCHED_RR :时间片轮转实时进程- SCHED_BATCH :批处理进程- SCHED_IDLE :只有在系统空闲时,才能够被调度执行的进程。进程管理 特点:动态性、并发性、独立性、异步性编译说明编译选项:-c编译不链接。-g 带有调试信息。-I .h 文件所在目录-预处理:语法分析,例如:将宏定义展开。-编译: *.c 文件编译成 *.s 文件。-汇编: *.s 文件编译成 *.o 文件。-链接:多个 *.o 文件链接成执行文件。 Linux 系统调用和 C 库Linux 系统调用是依赖于系统的,而C 库在任何操作系统下,调用都是相同的。名师资料总结 - - -精品资料欢迎下载 -
4、- - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 嵌入式 Linux 应用完全开发手册3 信号类型 SIGHUP: 从终端上发出结束信号 SIGINT:来自键盘的中断信号( Ctrl-C) SIGKILL: 该信号结束接收信号的进程。 SIGTERM:kill 命令发出的信号。 SIGCHLD: 标识子进程停止或结束的信号。 SIGSTOP: 来自键盘( Ctrl-Z)或调试程序停止执行的信号。SIGKILL 和 SIGSTOP 不能被忽略,因为它们是超级用户提供了了一种终
5、止或停止进程的方法。文件系统 文件系统类型根据设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式 Linux 应用中,主要的存储设备为: RAM 和 FLASH ,常用的基于存储设备的文件系统类型包括:jffs2、yaffs、cramfs 、ramdisk 、ramfs 等。文件系统是对存储设备上的文件进行存储和组织的机制,Linux 支持多种文件系统,可以分为: 磁盘文件系统,如: ext2 Flash 文件系统,如: jffs2,yaffs2 网络文件系统:如: NFS 特殊文件系统,如: /sys /proc 根文件系统根文件系统:是 Linux 启动时的第一个文件系
6、统。没有根文件,Linux 无法正常启动。根文件系统由一系列目录 组成,目录中包含了应用程序、C 库、以及相关配置文件。总线的功能: 提供时钟名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - 嵌入式 Linux 应用完全开发手册4 分配/管理地址 响应中断 传输数据 传输控制信号全速、高速、低速三种时钟。(FCLK,HCLK,PCLK) 。arm AMBA 总线结构AHB/APB AHB 总线上有内存, NAND 控制器等高速设
7、备。 HCLK APB 总线上有 UMARK 设备控制器等慢速设备。 PCLK ARM 三级流水结构 取指:把指令从程序存储器中取出来。取指是在处理器内核和程序存储器之间进行的。 译码:把读到内核的指令进行解释,也就是把二进制的指令变换成电路的动作。 执行:即按照指令的要求把门电路的动作送到指定的目标地址。ARM 在执行一条指令的时候 ,PC 的指针是在取指的那条指令的。 程序:1、代码段:指令2、数据段:有初始值(并且不为0)的全局、静态变量3、 BSS 段 (Block Started by Symbol): 初始值为 0 或无初始值的全局、 静态变量。BSS(Block Started
8、by Symbol )通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS 段会自动清 0。所以,未初始的全局变量在程序执行之前已经成0 了。注意和数据段的区别, BSS 存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。UNIX 下可使用 size 命令查看可执行文件的段大小信息。如size a.out 。4、栈区域。1、程序运行是应该位于它的链接地址2、硬件决定了程序一开始从0 运行,需要重定位(从0 开始的 8k 代码) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
9、- - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 嵌入式 Linux 应用完全开发手册5 重定位:前面的一小段代码(从0 开始的 8k 代码) ,复制到它的链接地址。3、前面 8k 代码为什么能正常运行:因为是位置无关码写的。IO 端口和 IO 内存IO 端口:当一个寄存器或内存位于IO 地址空间时,为IO 端口。IO 内存:当一个寄存器或内存位于内存地址空间时,为IO 内存。MMU 管理 权限管理:程序不能访问内核或其它程序的内存空间。 地址映射:应用程序访问的“虚拟地址”, 而数据真正存放在真实的物理地址
10、。虚拟地址和真实地址的转换是由MMU 实现的。 物理地址:指出现在CPU 地址总线上 的寻址物理内存的 地址信号 ,是地址变换的最终结果 。 线性地址( 虚拟地址):是在 32 位 CPU 架构下,可以表示 4G 的地址空间,用 16 进制表示就是: 0 x00000000-0 xFFFFFFFF。 逻辑地址:程序经过编译后,出现在汇编程序中的地址。 地址转换: CPU 要将一个逻辑地址转换为物理地址,需要两步:-首先, CPU 利用段式内存管理单元,将逻辑地址转换成线性地址。-再利用页式内存管理单元,把线性地址最终转换成物理地址。 段式管理单元: 16 位 CPU 内部拥有 20 位地址线,
11、它的寻址范围就是220,也就是 1M 的地址空间。但 16 位 CPU 用于存放地址寄存器( IP,SP.等)只有16 位,因此只能访问65536 个存储单元, 64K。 页式管理单元:从管理和效率的角度出发,线性地址 被分为固定长度的组,称为“ 页(page) ” ,例如 32 位的机器,线性地址最大可为4G,如果 4K 为一个页来划分,这样整个线性地址就被划分220个页。另一类“页” ,称为物理页 ,或者是“页框、页帧”。分页单元把所有的 物理内存也划分为固定长度的管理单位,它的长度一般与线性地址页是相同的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
12、- - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - 嵌入式 Linux 应用完全开发手册6 分页管理1、分页单元中,页目录的地址放在CPU 的 CR3 寄存中,是进行地址转换的开始点。2、每一个进程,都有其独立的虚拟地址空间,运行一个进程首先需要将它的的也目录地址放到 CR3 寄存中,将其它进程的地址保存起来。3、每个 32 位的线性地址被划分为三个部分:页目录索引 (10 位)、页表索引(10位) 、页偏移( 12 位) 。 依据以下步骤进行地址转化:1、装入进程的页目录地址(操作系统在调度进程时,把这个地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年嵌入式Linux应用完全开发手册 2022 嵌入式 Linux 应用 完全 开发 手册
限制150内