initrd与initramfs的区别

boot loader装入kernel, 然后kernel需要执行/sbin/init, 读取 这个文件就必须先mount根文件系统, 早期是通过启动时的root= 参数告诉内核根文件系统在哪个设备上,  随着硬件和技术的发展, 现在根文件系统可能位于一个网络存储如NFS上, 可能由于RAID而 散布于多个设备上, 可能位于一个加密设备上需要提供用户名和密码, 这时root=参数就显得不够了. 为了应付这种局面, 先后出现两种 机制来作为boot loader装载kernel到真正的/sbin/init执行这个启动 过程的桥梁: initrd和initramf……

ramdisk与 initrd、initramfs的关系

1、ramdisk、initrd是什么? ramdisk是一种基于内存的虚拟文件系统,通常用于放置内核的中间数据。 而initrd全称为”boot loader initialized RAM disk”,也就是由启动加载器所初始化的RamDisk设备,它的作用是完善内核的模块机制,让内核的初始化流程更具弹性;内核以及initrd,都由bootloader在机子启动后被加载至内存的指定位置,主要功能为按需加载模块以及按需改变根文件系统。更详细的内容,请参阅initrd的man手册,里面阐述了内核开发者对initrd制订的功能标准。……

vim写程序常用技巧

"Set ma pleader let g:mapleader = "," set nocompatible set backspace=indent,eol,start "显示行号 set nu "标签 let g:miniBufExplMapWindowNavVim = 1 let g:miniBufExplMapWindowNavArrows = 1 let g:miniBufExplMapCTabSwitchBufs = 1 let g:miniBufExplModSelTarget = 1 "windows manger let g:winManagerWindowLayout='FileExplorer' nmap wm :WMToggle "打开语法高亮 syntax on "let asmsyntax="gas" let asmsyntax="nasm" "设置字体 set guifont=DejaVu Sans Mono 12 "……

cortex-m3中存储器的访问属性中的共享属性

cortex-m3中的共享属性是用来多核处理器进 行共享的一块区域!

corte-m3中的pc值的问题

        在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。         但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。         下面来看一段测试代码:   ……

关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题

  在编译下面一段代码时: STACK_TOP EQU 0x20002000 AREA Reset,CODE,READONLY DCD 0x20002000 DCD Start ENTRY ; CODE16 Start ldr r2,=Test LDRD r0,r1,[r2,#4] LDRD r0,r1,[r2] LDRD r0,r1,[r2] ; movs r0,r0 ; NOP ; align 4 Test DCD 0x12345678 END 我发现,如果加上NOP或align4,程序就不会跑飞,否则程序就跑飞了。   经调试发现:    如果不加NOP或align 4的话产生的Test的标号地址就会产生错误,而LDRD 指令操作的地址必……

BL指令实际做出的操作

经测试证明,使用BL时,此指令做出如下操作 LR=PC+T,T位是CPSR里的T位,标志着是否是thumb状态!