1.建立目录
yangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp$ cd sources/meta-elmo
yangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp/sources/meta-elmo$ mkdir recipes-kernelyangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp/sources/meta-elmo$ mkdir recipes-kernel/chardriver
2.建立bb文件
yangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp/sources/meta-elmo/recipes-kernel/chardriver$ vi chardriver_0.1.bb
#yocto recipe to build a kernel module out of the kernel tree
DESCRIPTION = "Chardriver kernel module out of the kernel tree"
LICENSE = "CLOSED"
PROVIDES = "virtual/kernel-module-chardriver"
RPROVIDES_${PN} = "virtual/kernel-module-driver"
RPROVIDES_${PN}-dev = "virtual/kernel-module-driver"
#PR = "r0"
inherit module
SRC_URI = "file://chardriver.c \
file://Makefile \
"
S = "${WORKDIR}"
~
3.编写Makefile
yangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp/sources/meta-elmo/recipes-kernel/chardriver$ mkdir filesyangzhiwen@yzw-kingsee:/home/work/workspace/fsl-release-bsp/sources/meta-elmo/recipes-kernel/chardriver$ vi files/Makefile
obj-m := chardriver.o
SRC := $(shell pwd)
all:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC)
modules_install:
$(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install
clean:
rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -f Module.markers Module.symvers modules.order
rm -rf .tmp_versions Modules.symvers
4.编写驱动C文件
#include <linux/module.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/cdev.h>
#include <linux/errno.h>
#include <linux/sched.h>