通常情况下,一个 descriptor 可能是以下的几种 entry: 非法或者异常的 entry. Table entry, 指向 next-level translation table. Block entry, 定义内存访问的 memory properties. Reserved format. Descriptor 的 bit[1] 用于指示 descriptor 的类型,bit[0] 用于指示 descriptor 是否有效. D4.3.1 VMSAv8-64 translatio…
1. create table 创建一张目标表,指定分隔符和存储格式: create table tmp_2 (resource_id bigint ,v int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\,' LINES TERMINATED BY '\n' STORED AS TEXTFILE; //ROW FORMAT DELIMITED FIELDS TERMINATED BY '\,'---这里设置字段间以逗号分隔: //LINES TE…
1. create table 创建一张目标表,指定分隔符和存储格式: create table tmp_2 (resource_id bigint ,v int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\,' LINES TERMINATED BY '\n' STORED AS TEXTFILE  TBLPROPERTIES ('serialization.null.format' = ''); //ROW FORMAT DELIMITED FI…
上一节大致给出了descriptor的结构,这篇细致分析各个field: 1) Table Descriptor:stage2中不包含任何的attribute的field,每个level中的descriptor高位作为下一个level的attr配置. NSTable,bit[63], 定义subsequent lookup的secure state APTable,bit[62:61], UXNTable,bit[60], PXNTable,bit[59], 2) Block and Page…
AArch32,arm的32bit架构: AArch64,arm的64bit架构: ARMv8.2-LPA,是armv8.2中的新feature,扩大了IPA和PA的支持范围,从48bit扩展到52bit. armv8-a core内部使用virtual memory,内部通过mmu转换为physical address. mmu的好处: 1)允许system同时运行多个task,各个task之间完全是地址透明的. 2)同一个task,code在编写的时候,也完全不需要了解processor内部…
本文介绍Armv8-A的内存管理.内存管理指的是在系统中,内存访问是如何实现的. 使用内存管理机制,可以让每个应用之间的内存地址分离,即sandbox application,也可以让多个在物理内存上碎片化的地址形成虚拟地址空间一个连续的地址,同时可以让程序员编程更为方便. 虚拟地址到物理地址的转换通过mapping的方式来进行,其关键为Translation tables,存储在memory中,并且被OS或者hypervisor来管理. Memory Management Unit(MMU)…
一.BootLoader引导内核过程     1.Bootloader的工作     1.1.将内核读入内存     2.2.保存内核启动参数到指定位置,内核启动时去这个位置解析参数     3.3.启动内核.传入机器ID 二.内核的启动流程         内核首要目的是挂载根文件系统,启动应用程序,内核启动的过程大致为以下几步: 1.检查CPU和机器类型 2.进行堆栈.MMU等其他程序运行关键的东西进行初始化 3.打印内核信息 4.执行各种模块的初始化 5.挂接根文件系统 6.启动第一个in…
前段时间移植uboot细致研究过uboot启动过程,近期耐不住寂寞.想对kernel下手. Uboot启动过程分析博文连接例如以下: http://blog.csdn.net/skyflying2012/article/details/25804209 移植内核时kernel启动过程须要我们改动的地方比較少.研究这个对于编写driver也没有多大帮助,但对了解整个linux架构,各种机制还是非常实用. 仅仅有知道kernel怎样启动,我们才干真正的去理解kernel 作为一个嵌入式工作者,我想不…
Linux内核的启动分为压缩内核和非压缩内核两种,这里我们以压缩内核为例.压缩内核运行时,将运行一段解压缩程序,得到真正的内核镜像,然后跳转到内核镜像运行.此时,Linux进入非压缩内核入口,在非压缩内核入口中,完成各种初始化操作后跳转到C语言入口处运行.主要流程如下所示. 1.解压缩内核镜像 解压缩程序通常在arch/arm/boot/compressed/目录中 ├── atags_to_fdt.c ├── big-endian.S ├── decompress.c ├── head.S ├…
来自:<DDI0406C_C_arm_architecture_reference_manual.pdf>p2723 能够查询到:“RAZ RAO WI 等的意思” RAZ:Read-As-Zero 读到的总是0 RAO:Read-As-Oned读到的总是1 WI :Writes Ignoredx 写无效 SBZP:Should-Be-Zero-or-Preserved on writes 写总是0 SBOP : Should-Be-One-or-Preserved on writes. 写总…