1 / 14
文档名称:

嵌入式Linux应用完全开发手册.docx

格式:docx   大小:108KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式Linux应用完全开发手册.docx

上传人:zhangshus 2022/5/23 文件大小:108 KB

下载得到文件列表

嵌入式Linux应用完全开发手册.docx

文档介绍

文档介绍:: .
嵌入式Linux应用完全开发手册
终端概述
在Linux中,TTY(终端)是一位于它的链接地址
2、硬件决定了程序一开始从0运行,需要重定位(从0开始的8k代码)。
重定位:前面的一小段代码(从0开始的8k代码),复制到它的链接地址3、前面8k代码为什么能正常运行:因为是位置无关码写的。
IO端口和IO内存
IO端口:当一个寄存器或内存位于io地址空间时,为IO端口。
IO内存:当一个寄存器或内存位于内存地址空间时,为IO内存。
MMU管理
■权限管理:程序不能访问内核或其它程序的内存空间。
■地址映射:应用程序访问的“虚拟地址”,而数据真正存放在真实的物理地址。虚拟地址和真实地址的转换是由MMU实现的。
■物理地址:指出现在CPU地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。
* 线性地址(虚拟地址):是在32位CPU架构下,可以表示4G的地址空间,用16进制表示就是:0x00000000-0xFFFFFFFF。
* 逻辑地址:程序经过编译后,出现在汇编程序中的地址。
* 地址转换:CPU要将一个逻辑地址转换为物理地址,需要两步:
-首先,CPU利用段式内存管理单元,将逻辑地址转换成线性地址。
-再利用页式内存管理单元,把线性地址最终转换成物理地址。
* 段式管理单元:16位CPU内部拥有20位地址线,它的寻址范围就是220,也就是1M的地址空间。但16位CPU用于存放地址寄存器(IP,SP..等)只有16位,因此只能访问65536个存储单元,64K。
* 页式管理单元:从管理和效率的角度出发,线性地址被分为固定长度的组,
称为“页(page)”,例如32位的机器,线性地址最大可为4G,如果4K为一个页来划分,这样整个线性地址就被划分220个贡。
另一类“页”,称为物理页,或者是“页框、页帧"。分页单元把所有的物理内存也划分为固定长度的管理单位,它的长度一般与线性地址页是相同的。
分页管理
1、分页单元中,页目录的地址放在CPU的CR3寄存中,是进行地址转换的开始点。
2、每一个进程,都有其独立的虚拟地址空间,运行一个进程首先需要将它的的
也目录地址放到CR3寄存中,将其它进程的地址保存起来。
3、每个32位的线性地址被划分为三个部分:页目录索引(10位)、页表索引(10位)、页偏移(12位)。
* 依据以下步骤进行地址转化:
1、装入进程的页目录地址(操作系统在调度进程时,把这个地址装入CR3)。
2、根据线性地址的前10位,在页目录中,找到对应的索引项,页目录中的项
是一个页表的地址。
3、根据线性地址的中间10位,在页表中找到页的起始地址。
4、将页的起始地址与线性地址的最后12位相加,得到物理地址。
■内存使用
slab管理工具
内核空间
jt看奥丹常
湃理更表
氏Etfreepa话《怎)
slab
内核程序
物理内存影射区
位置无关码
1、使用B或bl跳转
2、不访问全局静态变量
异常处理
■中断是一种异常
* CPU上电,CPU处于SVC模式,
* 当发生了中断,CPU就进入IRQ模式,并且切才^到自己的R13和R14,并跳到中断向量的相
应地址执行。
* SWI中断处理
硬件处理:
1、CPU进入SVC模式
2、把之前模式的CPSR-->SPSR_svc
3、切换至UR13_svc,R14_svc
4、下一条指令--->R14
5、跳转到地址8
软件处理:
1、在地址8,写一条跳转指令
2、保存现场
3、处理中断
4、恢复现场
ldmiasp!,{r0-r12,pc}A人:表示将spsr恢复到cpsr中。
■SWI指令的作用
用户应用程序open、read、write>print函数等用户应用运行在用户态,经常用到内核的资源,如何调用内核呢?就是调用SWI指令,CPU就会响应中断,跳到相应的中断服务程序,访问内核资源。
■未定义指令用于调试
等待队列
Linux驱动程序设计中,可以使用等待队列来实现进程的阻塞,等待队列可看作保存进程的容器,
在阻塞进程时,将进程放入等待队列,唤醒进程时,从等待队列中取出进程。
如何看电路图
1 .GPIP和门电路
输入、输出弓I脚、上拉/下拉电阻、三极管
与、或、非门
中断
三极管:PNP(正负正),NPN(负正负)。
上拉/下拉电阻:确定悬空的引脚一个状态。
怎么用接口
1、配置引脚功能。