之前我们一直是在虚拟机ubuntu环境中测试我们的first_drv驱动模块,但是这不是我们的开发方向,在刚开始的学习中我们避免搭建过多的环境,因此选择了只在ubuntu中测试驱动。
我们的模式是:
[first_drv.c]-->[使用ubuntu内核源码编译]-->[first_drv.ko(可运行于虚拟机)]-->
[ 安装到虚拟机中 ]-->[ hello world! ]-->[ 从虚拟机中卸载 ]-->[ goodbye world... ]
但是我们的最终目标是在arm微处理器平台上运行驱动程序。
因此我们需要改成如下模式:
[first_drv.c]-->[使用arm-kernel内核源码编译]-->[first_drv.ko(可运行于arm-kernel)]
-->[ 安装到arm-kernel中 ]-->[ hello world! ]-->[ 从arm-kernel中卸载 ]-->[ goodbye world... ]
这里需要解释下什么是arm-kernel(这是我临时起的名字),我们拟定使用的arm微处理器是S3C2440,在S3C2440外接的内存中有一块区域是linux内核运行的区域,而在这片内存区域中运行的代码叫做uImage,这个uImage是我们在虚拟机ubuntu环境中编译出来的,依据什么编译的呢?依据内核源码,哪个内核源码呢?就是之前说过的/work/kernel/linux-2.6.22.6目录下的内核源码。