11 2011 档案

摘要:boot loader装入kernel, 然后kernel需要执行/sbin/init, 读取这个文件就必须先mount根文件系统, 早期是通过启动时的root=参数告诉内核根文件系统在哪个设备上, 随着硬件和技术的发展,现在根文件系统可能位于一个网络存储如NFS上, 可能由于RAID而散布于多个设备上, 可能位于一个加密设备上需要提供用户名和密码,这时root=参数就显得不够了. 为了应付这种局面, 先后出现两种机制来作为boot loader装载kernel到真正的/sbin/init执行这个启动过程的桥梁: initrd和initramfs, 两者有类似的地方, 比如都是由内核执行其上的 阅读全文
posted @ 2011-11-19 13:23 重归混沌 阅读(3155) 评论(0) 推荐(0)
摘要:1、ramdisk、initrd是什么?ramdisk是一种基于内存的虚拟文件系统,通常用于放置内核的中间数据。而initrd全称为"boot loader initialized RAM disk",也就是由启动加载器所初始化的RamDisk设备,它的作用是完善内核的模块机制,让内核的初始化流程更具弹性;内核以及initrd,都由bootloader在机子启动后被加载至内存的指定位置,主要功能为按需加载模块以及按需改变根文件系统。更详细的内容,请参阅initrd的man手册,里面阐述了内核开发者对initrd制订的功能标准。命令:man initrd2、/dev/ram0 阅读全文
posted @ 2011-11-19 13:22 重归混沌 阅读(1189) 评论(0) 推荐(0)
摘要:1.我们可以使用gf快捷键来进入任意一个被#include <header.h>的头文件. 2.使用ctrl+O来回到使用gf之前的文件中。 3.找到的一个不错的vimrc修改了一下可以自动更新ctags文件 4.增加了对系统头文件进行ctrl+]来查找的功能 5.增加了对splint进行代码检查的快捷键映射 6.如果想编译时自动定位到出错的地方,那么写一个Makefile,然后在vim中执行make应该是个不错的主意,我想! 7. 此文件在~/.vimrc或/etc/vim/vimrc"Set mapleaderlet g:mapleader = ",&quo 阅读全文
posted @ 2011-11-13 11:43 重归混沌 阅读(569) 评论(0) 推荐(1)
摘要:cortex-m3中的共享属性是用来多核处理器进行共享的一块区域! 阅读全文
posted @ 2011-11-12 21:25 重归混沌 阅读(191) 评论(0) 推荐(0)
摘要:在Cortex-M3中指令是3级流水线,出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值。但是在进入中断服务程序后,压入栈的地址是pc,而返回时也是用作pc,那么pc的值如果是当前指令加4的话就有可能返回后就漏掉一条指令。 但是事实上中断服务程序可以完美的返回。那么这中间就一定存在着某些诡异的地方。 下面来看一段测试代码: 我们可看出,pc总是指向下一条指令,那么书中的“出于对Thumb代码的兼容的考虑,读取pc时,会返回当前指令地址+4的值”的关键在于“读取”2字,如果我们使用指令(如mov)读了PC,那么返回给我们地址就是当前地址+4,如果是单片机自动... 阅读全文
posted @ 2011-11-10 21:04 重归混沌 阅读(324) 评论(0) 推荐(0)
摘要:在编译下面一段代码时: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的话产生... 阅读全文
posted @ 2011-11-05 11:32 重归混沌 阅读(1306) 评论(0) 推荐(0)
摘要:经测试证明,使用BL时,此指令做出如下操作LR=PC+T,T位是CPSR里的T位,标志着是否是thumb状态! 阅读全文
posted @ 2011-11-03 11:44 重归混沌 阅读(305) 评论(0) 推荐(0)