代码改变世界

阅读排行榜

linux内存管理

2012-10-12 16:01 by 至上, 23758 阅读, 收藏,
摘要: 一 为什么需要使用虚拟内存 大家都知道,进程需要使用的代码和数据都放在内存中,比放在外存中要快很多。问题是内存空间太小了,不能满足进程的需求,而且现在都是多进程,情况更加糟糕。所以提出了虚拟内存,使得每个进程用于3G的独立用户内存空间和共享的1G内核内存空间。(每个进程都有自己的页表,才使得3G用户空间的独立)这样进程运行的速度必然很快了。而且虚拟内存机制还解决了内存碎片和内存不连续的问题。为什么可以在有限的物理内存上达到这样的效果呢?二 虚拟内存的实现机制 首先呢,提一个概念,交换空间(swap space),这个大家应该不陌生,在重装系统的时候,会让你选择磁盘分区,就比如说一个硬盘分几个部 阅读全文

SD卡读写流程

2012-12-28 15:34 by 至上, 17346 阅读, 收藏,
摘要: 本文主要介绍从用户层读sd卡和写sd卡中间执行的过程。有对内核普遍性的介绍,和sd卡驱动个性的描述,强调把内核与驱动分开来看。同时提出内核需要驱动提供的参数,数据。一 SD卡使用流程框图说简单点:就是完成SD卡与内存之间的数据交互。但是涉及到了设备管理与文件管理。用户操作就是用户进程的read/write系统调用,应该说是 fread/fwrite,表示读某个文件,再不是读sd卡这个设备文件,也就是说你不需要在sd驱动中实现read/write函数,因为用不到啊。系 统调用后进入fat文件系统中的read/write,如果你问我为什么会进入fat中,因为sd卡上的文件组织使用的是fat32文件 阅读全文

sd卡与FAT32文件系统

2012-09-06 10:52 by 至上, 9446 阅读, 收藏,
摘要: 先把sd卡格式化,然后新建几个文件放在里面,用于分析,sd卡中文件的存储方式。使用工具winhex,打开磁盘sd卡。先分析一下sd卡的第一个扇区,其中的内容为DBR(DOS BOOT RECORD c操作系统引导记录区)DBR中BPB部分才是这一区域的核心部分,对于FAT32的实现意义很大。每个红线部分是一个字段,要知道是什么意思,对照表看看就可以啦:上面的长度是只占的字节数,现在就对照分析一下,每个扇区字节数是00 02,属于小端存数,读得时候为0x02 00,也就是512字节。没簇的扇区数是0x08,就是包含8个扇区,大小为4kB。保留扇区数目为26 00,就是0x0026,保留38个扇区 阅读全文

中断触发流程

2012-07-23 20:15 by 至上, 7737 阅读, 收藏,
摘要: 在响应一个特定的中断的时候,内核会执行一个函数,该函数叫做中断处理程序(interrupt handler)或中断服务例程(interrupt service routine ,ISP).产生中断的每个设备都有一个相应的中断处理程序,中断处理程序通常不和特定的设备关联,而是和特定的中断关联的,也就是说,如果一个设备可以 产生多种不同的中断,那么该就可以对应多个中断处理程序,相应的,该设备的驱动程序也就要准备多个这样的函数。在Linux内核中处理中断是分为上半部 (top half),和下半部(bottom half)之分的。上半部只做有严格时限的工作,例如对接收到的中断进行应答或复位硬件,这. 阅读全文

u-boot 内核引导与添加指令

2012-06-09 20:31 by 至上, 6911 阅读, 收藏,
摘要: 1.Uboot:Start.s -> start_armboot ()<./lib_arm/board.c> -> main_loop ()<./common/main.c> main_loop()会调用abortboot (bootdelay)判断在delay time内有没有键按下,并给出prompt“Hit any key to stop autoboot”,若没有键按下则run_command (s, 0)(s为默认的bootcmd)。这里默认的bootcmd需要根据内核的位置设置,若bootcmd未赋值,Uboot就会一直等待。如果敲入bootm, 阅读全文
1 2 3 4 5 ··· 7 下一页