准备移植驱动【内核模块】,从hello开始,
摘:Linux设备驱动属于内核的一部分,Linux内核的一个模块可以以两种方式被编译和加载:
(1)直接编译进Linux内核,随同Linux启动时加载;
(2)编译成一个可加载和删除的模块,使用insmod加载(modprobe和insmod命令类似,但依赖于相关的配置文件),rmmod删除。这种方式控制了内核的大小,而模块一旦被插入内核,它就和内核其他部分一样。
摘:最近开始搞内核模块的交叉编译,意思是在pc机上面编写能在arm上面insmod的模块,以下是注意点:
1)打开2440开发板自带的光盘,把开发板操作系统的内核拷贝到电脑linux系统下面,名称为linux-2.6.32.2-mini2440-20110413.tar,解压,发现里面有config_mini2440_w35将这个文件重命名为.config
2)转到交叉编译链目录下,创建硬链接ln arm—angstrom——gnueabi-objdump arm-linux-objdump
ln arm—angstrom——gnueabi-objcopy arm-linux-objcopy ln arm—angstrom——gnueabi-nm arm-linux-nm
下一步make要用到这个
3)转回mini2440的内核目录,make
这个时候应该就没有问题了,必须要编译这个内核,因为编译内核模块代码的时候,需要用到此编译过程中的.o文件,如果不编译,会出现很多找不到文件的错误,及其郁闷!!
现在就可以写arm内核模块了。
Kconfig产生menuconfig上面的选项
make menuconfig产生./config文件,make 产生vmlinuz文件。