上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页
摘要: 上面是六个进程重要的状态。 上面的意思是:把当前正在运行的状态设置成阻塞态。放弃cpu资源。 阅读全文
posted @ 2016-02-13 23:39 cestlavie 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 首先是创建内核模块。 按照上面的那张图,我们知道,我们创建链是使用INIT_LIST_HEAD这个函数。现在我们来使用source insight查看该函数的结构。 该函数是对我们的链表头进行初始化的。我们把链表头做一个参数传进来之后。我们分别用next和prev指针同时指向他本身。 可以看到,该函 阅读全文
posted @ 2016-02-13 23:36 cestlavie 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 管理模型 右边是虚拟地址,左下角是虚拟地址到物理地址的转换。 在linux系统程序中都是用虚拟地址。虚拟地址空间是由硬件来决定的。例如32位的系统,虚拟地址空间是4G=2的32次方。0-3G是用户空间,3G-4G是内核空间。而内核空间又被分为了四个部分:直接映射区(896M),vmalloc区,永久 阅读全文
posted @ 2016-02-13 23:34 cestlavie 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 根文件系统其实包含两个含义:1.是根。2.是文件系统。 根:就是第一个的意思。必须有的。 文件系统:就是我们在编译linux内核看到的: 上面的目录和文件就是文件系统的。 接下来我们就来创建文件系统: 这里我们需要下面文件: 把它解压开,在把它的内容拷贝到/rootfs/etc: 接着是添加内核模块 阅读全文
posted @ 2016-02-13 23:33 cestlavie 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 前面我们已经制作了uboot,接下来是制作kernel。 首先进入内核源码,执行make distclean.清除先前编译产生的文件。 注意配置内核的时候多了一个ARCH=arm的条件。 回车之后会进入arm的配置菜单: 就像我们前面配置linux内核一样,我们也会去找一个配置好的配置文件: 把co 阅读全文
posted @ 2016-02-13 23:31 cestlavie 阅读(206) 评论(0) 推荐(0) 编辑
摘要: Uboot的使用 解压uboot的压缩包得到uboot的工程文件uboot,进入uboot,打开Makefile文件,搜索自己的开发板的类型。我的是OK6410 256的。 然后执行配置文件: 接着执行一下的命令进行编译: 编译完成的截图: 完成之后,我们会在我们的uboot的目录看待生成uboot 阅读全文
posted @ 2016-02-13 23:29 cestlavie 阅读(1215) 评论(0) 推荐(0) 编辑
摘要: Linux的模块驱动 接下来写个最简单的驱动程序,就像程序语言的hello world程序。 首先是:hello.c的代码: 这是个最简单的驱动程序。就是打印hello的信息。驱动程序和我们的程序语言结果有点不大一样。驱动模块的入口是倒数第二行的module_init()的函数。驱动模块的出口是mo 阅读全文
posted @ 2016-02-13 23:26 cestlavie 阅读(907) 评论(0) 推荐(0) 编辑
摘要: Linux内核的配置和编译 之所以要对内核进行配置,这是很多都是硬件的需求,和软件的需求。就是选择自己需要的,去掉自己不要的。 上面有两种配置方法,但是make config是几乎不用的。他是一问一答的配置方法。很费时间。所以,都是采用make menuconfig来配置内核的。 接下来是配置的简单 阅读全文
posted @ 2016-02-13 23:24 cestlavie 阅读(314) 评论(0) 推荐(0) 编辑
摘要: Q:内核中的如何描述设备号? A:Struct kdev_t Q:如何从kdev_t结构中分解出主设备号? A:MAJOR(kdev_t dev) Q:如何从kdev_t结构中分解出次设备号? A:MINOR(kdev_t dev) 创建设备文件: 使用mknod命令手工创建。 使用devis提供的 阅读全文
posted @ 2016-02-13 23:23 cestlavie 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 菜鸟的2013 阅读全文
posted @ 2016-02-13 23:10 cestlavie 阅读(132) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 下一页