linux设备和驱动注册

  • Post author:
  • Post category:linux


一、设备注册:

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



版权声明:本文为qq_37451326原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。