Linux设备驱动程序学习之基础篇
Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:
http://blog.chinaunix.net/u1/34474/showart_404278.html
在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。
Linux设备驱动程序学习(0)-Hello, world!模块
文章来源:http://blog.chinaunix.net/u2/62910/showart_492083.html
一个学习Linux设备驱动程序都会碰到的第一个例程:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, Tekkaman Ninja !\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, Tekkaman Ninja !\n Love Linux !Love ARM ! Love KeKe !\n");
}
module_init(hello_init);
module_exit(hello_exit);
我将其复制到我的工作目录,并编写了一个简单的Makefile文件:
KERNELDIR = /home/tekkaman/working/SBC2440/linux-2.6.22.2
# The current directory is passed to sub-makes as argument
PWD := $(shell pwd)
INSTALLDIR = /home/tekkaman/working/rootfs/lib/modules
CROSS_COMPILE =/home/tekkaman/working/crosstool-gcc410-k26222/gcc-4.1.0-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-
CC = $(CROSS_COMPILE)gcc
obj-m := hello.o
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
cp hello.ko $(INSTALLDIR)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
说实话,以上是我参考了《Linux设备驱动程序(第3版)》的Makefile源码修改得来的。我对Makefile不是很了解,是该好好学习学习了!
然后就是make modules 、 make modules_install 。
[root@Tekkaman-Ninja Helloworld]# make modules
make -C /home/tekkaman/working/SBC2440/linux-2.6.22.2 M=/home/tekkaman/working/Linuxdriver/Helloworld modules
make[1]: Entering directory `/home/tekkaman/working/SBC2440/linux-2.6.22.2
相关文档:
首先,配置RedBoot的IP及其tftp服务器IP,装好tftp服务器,需要下载的内核及内存镜象应放在服务器的/tftpboot目录下
配置RedBoot的指令是
> fconfig
注意:启动的延时不要设为0,否则以后就很难再更改系统了
然后要执行flash存储器的初始化工作:
> fis init
之后,将kernel与ramdisk.gz通过tftp下载至内存并写 ......
Linux文件I/O主要由read、write、open、close、lseek五个函数组成;
一、文件描述符
在嵌入式Linux中每打开一个文件都有一个描述符与之对应,该描述符是一个非负整数;
当用open打开或新建一个文件时,该函数的返回值就是该文件的描述符;
......
如果想进一步了解linux系统,熟悉一些系统底层的东西还是非常必要的,我们可以先了解一些linux命令是如何实现相关功能的,那么如何获得命令的源代码呢?下面我们详细介绍一下。
下面以获取cat命令的源代码为例说明:
cd /sbin
rpm -qif cat
......
我所讲的是windows真实系统上有vmware的linux系统,将windows下的一个文件夹共享,如何挂载到虚拟机的linux系统下,也就是如何让linux系统试用windows下的一个文件夹。
大家也许不太明白,下面我就做一些截图
双击share folder,一定要保证sh ......