摘要:
符号表是什么? 我们知道,在编译的四个阶段中,最后一步链接的本质就是将不同的目标文件糅合到一块,生成最终可执行的二进制文件。而目标文件的互相糅合,实质上就是目标文件之间对地址的引用,就是对函数和变量的地址的引用。那怎么来完成这个过程呢?人们就想到了在每一个目标文件中存放一张记录了目标文件中所用到的所 阅读全文
摘要:
mmap内存映射的作用 1、malloc 申请内存 2、文件映射时,避免 read write 频繁系统调用,并且避免因内核文件页缓存(相当于驱动中定义的全局变量存来自用户空间的数据)导致的内核空间和用户空间的内存拷贝 下图虚拟地址直接映射到磁盘上的文件,实际应该是虚拟地址 物理内存 磁盘文件 3、 阅读全文
摘要:
系统调用 操作系统的主要功能是为管理硬件资源和为应用程序开发人员提供良好的环境,但是计算机系统的各种硬件资源是有限的,因此为了保证每一个进程都能安全的执行。处理器设有两种模式:“用户模式”与“内核模式”。一些容易发生安全问题的操作都被限制在只有内核模式下才可以执行,例如I/O操作,修改基址寄存器内容 阅读全文
摘要:
PTE 页表(page table)的成员是PTE(page table entry),由于Linux对于PTE的定义和ARM硬件不一致,下面的L_开头的定义都是针对Linux的 在32位芯片中,PTE一共32位,低12位如上图定义是各种标志位;因为linux的page设定为4Kbytes,所以PP 阅读全文
摘要:
缺页异常后需要硬件和操作系统配合工作,地址命中则只需要硬件参与 程序存储在disk,在32位系统下,虚拟地址空间最大4G,但是不是每个地址都存储程序片段。上图左侧是一整个虚拟地址空间,没有程序片段的地址空间称为Unallocated;有程序片段,并且缓存到DRAM称为Cached;有程序片段但没有缓 阅读全文
摘要:
ABI 应用二进制接口(Application Binary Interface,简称ABI)是一种定义了应用程序与操作系统或者硬件之间的接口标准。ABI为开发人员提供了在不同平台上编写、编译和执行应用程序的一致性。 ABI 规定了: 数据类型的大小、布局和对齐; 调用约定(控制着函数的参数如何传送 阅读全文
摘要:
uboot段相关变量 在分析relocate_code函数之前,先来总结一下相关的uboot段相关变量,这些段的地址在uboot代码重定位的时候需要用到,将uboot源码进行编译后,会在源码根目录生成u-boot.lds链接文件和u-boot.map内存映射文件,通过这两个文件,可以寻找到uboot 阅读全文
摘要:
在解释PC值关系之前先了解一些概念。 程序计数器(PC寄存器) 程序计数器是用于存放下一条指令所在单元的地方。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址自动加1,或者由转移指针给出下一条指令的地址。 ARM系统 对于 阅读全文
摘要:
首先,NXP提供的uboot经过编译最终烧写进存储介质中的是uboot.imx文件,这个imx后缀的文件不同于传统的比如S3C2440最终烧写的uboot.bin文件。 imx文件是在bin文件的基础上加上了一个头部,IMX6ULL芯片内部自带的BOOTROM程序会根据拨码开关的高低电平选择对应的启 阅读全文
摘要:
官网: https://www.gnu.org/ 什么是GUN GNU是一个自由软件操作系统—就是说,它尊重其使用者的自由。GNU操作系统包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的自由软件。GNU的开发使你能够使用电脑而无需安装可能会侵害你自由的软件。“GNU”这个名字是“GNU 阅读全文