摘要:
Linux 的虚拟内存管理有几个关键概念: 1、每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址; 2、虚拟地址可通过每个进程上的页表(在每个进程的内核虚拟地址空间)与物理地址进行映射,获得真正物理地址; 3、如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理 阅读全文
摘要:
微控制器的核心就是处理器。下面是Cortex-M3/M4微处理器的功能模块:(实线模块为必要的,虚线模块为可选) (1)处理器顶层有多个总线接口: I-CODE总线:指令总线,用来访问程序储存器获取指令D-CODE总线:数据总线,用来访问程序储存器读取立即数,以及进行调试器访问操作系统总线:访问RA 阅读全文
摘要:
现代CPU《编译型语言与解释型语言如何在计算机底层运行》中提到,计算机依靠编译器将源代码(编译型编程代码:C之类)编译成机器码执行,准确说,就是用CPU执行。 冯 诺伊曼架构 冯⋅ \cdot⋅诺伊曼(1945)提出当前计算机的主流架构,包含以下三大部分: CPU(Central Processin 阅读全文
摘要:
哈佛结构 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。 与两个存储器相对应的是系统的4条总线:程序和数据的数据总线与地址总线。这种分离的 阅读全文
摘要:
相比ARM7,ARM9采用了更高效的五级流水线设计,在取指令、译码、执行之后,又增加了LS1和LS2阶段,LS1负责加载和存储指令中制定的数据,LS2则负责提取、符号扩展,通过字节或半字加载命令来加载数据,但是LS1和LS2仅对加载(LDR)和存储命令(STR)有效,其他的指令是不需要执行这两个阶段 阅读全文
摘要:
映像文件存储器映射调整 1 关于分散加载 映像由域(Regions)和输出段(Output Sections)组成。每个域可以有不同的加载地址和执行地址。 分散加载可以更加方便准确的指定映像存储器映射,为映像组件分组和布局提供了全面控制。它能够描述由载入时和执行时分散在存储器映射中的多个区组成的复杂 阅读全文
摘要:
我们在Linux下用C/C++工作的时候,经常会遇到"undefined reference to XXX"的问题,直白地说就是在**链接**(从.cpp源代码到可执行的ELF文件,要经过预处理->编译->链接三个阶段,此时预处理和编译已经通过了)的时候,链接器找不到XXX这个函数的定义了。这个问题 阅读全文
摘要:
FreeRTOSStackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t pxCode, void *pvParameters ) { /* 异常发生时,自动加载到CPU寄存器的内容 */(1) pxT 阅读全文