一、设备注册:
1、首先需要对内核文件iTop4412_Kernel_3.0 中的arch/arm/mach-exynos/mach-itop4412.c 平台文件做修改,仿照leds的设备注册来写。该结构体定义在include/linux/platform_device.h 中,这里还需要确认一下,是否有“HELLO_CTL”宏定义,只有定义了这个宏,在生成内核的时候才会将其编译到内核。 在drivers/char/Kconfig 中可查看是否定义
2、make menuconfig在Device Drivers --->”→“Character devices --->”→“Enable HELLO config
确认了宏定义“HELLO_CTL”
3、打开“arch/arm/mach-exynos/mach-itop4412.c”平台文件可查找LEDS_CTL 仿照着已有的初始化代码写即可
4、保存退出,make zImage重新编译内核,烧写到开发板
5、开发板启动之后,使用命令“ls /sys/devices/platform/”可以查看到新注册的设备
二、驱动注册:
1、内核源码中 vim include/linux/platform_device.h 可看到驱动注册的相关函数,查找一下“platform_driver_register” 可看到:
注册驱动的函数:
extern int platform_driver_register(struct platform_driver *)
卸载驱动的函数:
extern void platform_driver_unregister(struct platform_driver *)
其中 platform_driver 类型的结构体 是非常重要的,该结构体在include/linux/platform_device.h 头文件中,里面的几个操作函数和一个对象会在编写的驱动C文件中调用,相关函数可参照例程中仿写。
2、在Makefile文件中把第四行的 .o 文件 修改为相应的驱动C文件的名字 如驱动C文件probe_linux_module.c,则改为probe_linux_module.o