inode的理解

摘要: 迫于需要理解sock_init()中的init_inodecache,所以稍微学习了一下inode。一、inode的定义文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个block。文件数据都储存在"块"中,那么很显然,我们 阅读全文
posted @ 2014-01-26 10:35 desert-camel 阅读(387) 评论(0) 推荐(0) 编辑

工科男问问题

摘要: 度娘和谷歌兄是我最喜欢的两个网站,没有之二。有时候有朋友让我推荐个什么东西,这个时候如果去xx论坛问个“新人求推荐xx,谢谢大神”,多半你可以高潮一个下午。 作为工科男,问问题那更是可以问到各种高潮。上到CSDN问高大上的问题,下到在人人上问“如何追女神”,都是我们工科男问问题的范畴。不过,问问题,问什么,怎么问才能问到如沐春风,问到红旗飘飘锣鼓喧天就是学问了。 工科男问问题第一素质:谷歌。不要问我为什么不是百度,作为工科学子,你应该已经开始意识到百度有多坑,广告有多少。实际上,很多问题,只需要你去谷歌一下,你就能发现答案。同时,这种问题问到别人身上,是最讨人厌的。我很清楚我在原来暑假学嵌入. 阅读全文
posted @ 2013-12-25 18:57 desert-camel 阅读(271) 评论(0) 推荐(0) 编辑

Dropbox的CEO在MIT的毕业演讲

摘要: 这是我今天看到的一个演讲,个人觉得和乔老大在斯坦佛的毕业演讲有异曲同工之妙,我也觉得对工科的我们很有启发意义,就此转载,希望与君共勉。编者注:本篇文章基于Drew Houston 在 MIT 毕业典礼的演讲稿编译。首先我想要感谢 Reed 主席的邀请,并祝贺在座的 13 级同学们即将踏上新的旅程。能再次回到母校和即将毕业的你们在一起,让我感到无比荣耀,在今天这个特殊的时刻我又带上了黄铜鼠戒指(Brass Rat),这大概是人生中最值得纪念的日子。或许今天有很多理由让你们感到特别,我认为最让人激动的是你们再也不用为上课点到而忧心忡忡了。在学生时期,所谓的成功就是从一个圈子跳进另一个更大的圈内.. 阅读全文
posted @ 2013-12-23 10:00 desert-camel 阅读(306) 评论(0) 推荐(0) 编辑

stack的三个意思

摘要: (转自阮一峰的网络日志,原网址http://www.ruanyifeng.com/blog/2013/11/stack.html)阮一峰老师终于又更新博客了,个人认为这篇文章有一定科普意义,有一定解惑点津意义,所有希望和各位分享学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来, 阅读全文
posted @ 2013-12-22 20:41 desert-camel 阅读(428) 评论(0) 推荐(0) 编辑

linux内核自己添加模块(内核版本:3.0.101)

摘要: 做内核驱动第一步都是学习如何添加模块,这是基础,有了这个基础,剩下就是写代码了。 由于2.4到2.6内核版本的更新,无论是系统调用还是模块添加机制都有了巨大的变化,本人也因此饱经挫折,最后在3.0.101版本的内核下成功。作为开源运动的支持者,自认为有必要把自己的经历分享出来,以供后来学习者分享与交流。 再次声明,本博客只分享我遇到了的问题,没有交流的不代表不难或者不会遇到问题,只是我没遇到,如果有阅读本博客的朋友遇到了问题,非常欢迎大家一起讨论,技术就是这么成长的! 关于添加模块,步骤上还是那三步。 1.编写模块函数 编写内核模块时必须要有的两个函数: 1>加载函数: s... 阅读全文
posted @ 2013-12-05 23:08 desert-camel 阅读(1590) 评论(0) 推荐(0) 编辑

线索二叉树实现(中序)

摘要: /* 目的在于让没有孩子的指针标示前驱和后继一次方便遍历 */ /* 首先建立树的头结点,然后若发现没有左孩子,就指向pre标示前驱 ,由于中序遍历的特点,回溯的那个结点便是下一个要访问的结点,所 以此时判断pre有无右孩子,若无,则指向当前回溯结点标示下一个要访 问的结点 */ /* 最后完成头结点的右结点工作,完成线索二叉树 */ 1: #include 2: #include 3: 4: //link(0)指向孩子节点 5: //thread(1)指向双亲节点 6: 7: typedef enum{link,thr... 阅读全文
posted @ 2013-10-19 14:56 desert-camel 阅读(379) 评论(0) 推荐(0) 编辑

时钟系统与UART

摘要: 关于时钟设置原理: 关于如何设置系统时钟的思路。 其中锁定时间需要一个寄存器,PLL需要一个寄存器(MPLLCL),分频还需要一个寄存器,总计三个寄存器。步骤如下: 1. 上电后,FCLK=Fin 2. 启动MPLL,经过LOCKTIME后,频率达到要求。 3. 具体寄存器设置如下: 的比例。 If HDIVN is not 0, the CPU bus mode h... 阅读全文
posted @ 2013-10-09 14:15 desert-camel 阅读(704) 评论(0) 推荐(0) 编辑

存储控制器使用

摘要: 一、使用存储控制器访问外设的原理 1、S3C2440的地址空间 S3C2440对外引出27根地址线ADDR0-ADDR26,访问范围只有128MB,CPU对外还引出8根片选信号nGCS0-nGCS7,对应BANK0-BANK7,当访问BANKx的地址空间时,nGCSx引脚输出低电平来选中外接设备。 这样每个128MB空间,共8个片选,对应1GB的地址空间。空间分布图如下: 左边是nGC... 阅读全文
posted @ 2013-10-06 11:11 desert-camel 阅读(1406) 评论(0) 推荐(0) 编辑

中断控制器

摘要: 此为ARM终端流程。 R14是LR,R15为PC寄存器。中断发生时,R14得到R15的备份,而在中断结束返回时,把R14中的值给R15. 其中R13-R15都有子寄存器,也就是说,在进入中断后,不需要单独给他们进行备份(FIR是R8-R15) 除了这些寄存器,每个工作模式下还有一个CPSR寄存器,保存当前程序状态。下图 中断处理过程: 总而言之,中断处理应... 阅读全文
posted @ 2013-10-06 10:59 desert-camel 阅读(703) 评论(0) 推荐(0) 编辑

Makefile的变量赋值和函数

摘要: 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地 展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“ 命令”或是Makefile的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“:”、“#”、“=”或是空字符(空格、回车等)。变量是大小写敏感 的,“foo”、“Foo”和“FOO”是三个不同的变量名。传统的Makefile的变量名是全大写的命名方式,但我推荐使用大小写搭配的变. 阅读全文
posted @ 2013-10-05 22:19 desert-camel 阅读(4566) 评论(0) 推荐(0) 编辑