![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux内核学习
文章平均质量分 61
AK_winson08
这个作者很懒,什么都没留下…
展开
-
printk()函数的使用
printk()函数的总结我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在linux26/includelinux/kernel.h中):#defineKERN_EMERG""#defineK转载 2011-04-12 15:45:00 · 2238 阅读 · 1 评论 -
加载模块出现的问题
<br /><br />insmod: error inserting 'hello.ko': -1 Invalid module format<br /> <br />一些不那么神秘的信息被纪录在文件/var/log/messages中;<br />Jun 4 22:07:54 localhost kernel: hello: version magic '2.6.5-1.358custom 686<br />REGPARM 4KSTACKS gcc-3.3' should be '2.6.转载 2011-04-18 16:34:00 · 974 阅读 · 0 评论 -
linux的启动配置文件inittab文件详解
<br />linux的启动配置文件inittab文件详解<br />linux inittab详解<br />一、什么是init<br /> init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。<br /> 内核启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以,init始终是第一个进程(其PID始终为1)。<br /> 内核会在过去曾使用过init的几个地方查找它,它转载 2011-04-17 10:35:00 · 762 阅读 · 0 评论 -
驱动模块Makefile解析
<br /><br />先看一下代码<br />ifeq ($(KERNELRELEASE),)<br /> KERNELDIR ?= /home/linux/linux-2.6.22.6<br /> PWD := $(shell pwd)<br /> modules:<br /> $(MAKE) -C $(KERNELDIR) M=$(PWD) modules<br /> modules_install:<br />转载 2011-04-16 23:23:00 · 729 阅读 · 0 评论 -
module编译和insmod invalid format问题解决方法
<br />insmod: error inserting 'hello.ko': -1 Invalid module format<br /> <br />一些不那么神秘的信息被纪录在文件/var/log/messages中;<br /><br />Jun 4 22:07:54 localhost kernel: hello: version magic '2.6.5-1.358custom 686<br />REGPARM 4KSTACKS gcc-3.3' should be '2.6.转载 2011-04-18 20:46:00 · 970 阅读 · 0 评论 -
在Fedora9中搭建驱动开发环境
<br /> 小菜刚刚开始学习驱动开发,啥都不会,就知道hello world……<br />本来以为写个helloworld很容易吧~的确容易~你要是懒的话直接抄书本上就可以了~<br />于是helloworld写出来了,在写makefile的时候才发现,fedora 9本身没安装源码~好吧,那就安装源码吧。于是到fedora官网下了个源码的rpm包~<br />按照网上说明的方法安装了一下~过程顺利,没啥问题<br />把配置文件从boot那里cp过来改名成.config,这样做是为了确保这个内原创 2011-04-18 20:27:00 · 1138 阅读 · 0 评论 -
安装fedora 9的内核源码
<br />1、下载source rpm<br /> http://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/source/SRPMS/kernel-2.6.25-14.fc9.src.rpm<br /><br />2、安装rpm<br /> rpm -ivh kernel-2.6.25-14.fc9.src.rpm<br /><br />3、build rpm<br /> rpmbuild -bp --targ转载 2011-04-18 16:43:00 · 1017 阅读 · 0 评论 -
模块驱动 Makefile 模板
<br /><br />TARGET=test_demo<br />#CROSS_COMPILE=arm-linux- 不用交叉环境 <br />CC=$(CROSS_COMPILE)gcc<br />STRIP=$(CROSS_COMPILE)strip<br />#CFLAGS=-O2<br />ifeq ($(KERNELRELEASE),) #若KERNELRELEASE没有定义<br /> <br /> KERNELDIR ?=/lib/modu转载 2011-04-16 23:08:00 · 807 阅读 · 0 评论 -
嵌入式驱动Makefile编写
编写嵌入式的Makefile有几个地方需要注意的:一般我们在x86下编译驱动1.首先编写一个Makefile,内容如下//////////////////////////////obj-m :=drv.odrv.objs +=file1.o file2.o/////////////////////////////2.再执行make -C /内核源码路径/ M=/驱动所在的目录/ modules这是编写x86驱动一种简单的方法与此同理编写arm的驱动只需要把Makefile需改一下就可以了。Makefi转载 2011-04-12 21:07:00 · 1142 阅读 · 0 评论 -
驱动Makefile-示例
<br /><br />首先给出文件的目录结构如下:<br /> <br />|-- A<br />| |-- Makefile <-----1<br />| |-- file2<br />| | |-- Makefile <-----2<br />| | `-- file2.c<br />| `-- file4.c<br />|-- B<br />| |-- Makefile <-----3<br />| `-- file3.c<转载 2011-04-12 20:54:00 · 596 阅读 · 0 评论 -
如何计算结构体的大小
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。C语言中的构造数据类型有三种:数组、结构体和共用体。数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数。结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存转载 2011-04-12 16:03:00 · 778 阅读 · 0 评论 -
在驱动模块初始化函数中实现设备节点的自动创建
<br /><br />我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。<br />内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建转载 2011-04-19 12:29:00 · 505 阅读 · 0 评论