创建文件夹,创建VSCode工程,创建led.c文件,此文件就是led的驱动文件
① 定义宏,包括主设备号、设备名字、LED开/关宏
④ led_switch函数:用于控制开发板上的LED灯亮灭,sta:1,打开LED灯;sta:0,关闭LED灯。
⑤ led_open函数,空函数,在此函数将设备结构体作为参数filp的私有数据
⑥ led_read函数,空函数,可以读取GPIO1_DR寄存器的值,返回给应用程序以读取LED的状态。
⑦ led_write函数,空函数,实现对灯的开关操作,当应用程序调用write函数向led设备写数据的时候此函数就会执行。
⑧ led_release函数,空函数,关闭设备的时候会释放掉led_open函数中添加的私有数据
⑨ 设备文件操作结构体led_fops的定义和初始化
⑩ led_init驱动入口函数,实现LED的初始化工作
通过ioremap函数获取物理寄存器地址映射后的虚拟地址,
使能GPIO1时钟,设置GPIO1_IO03复用功能,配置GPIO1_IO03的属性
使用register_chrdev函数注册led字符设备
驱动出口函数led_exit,首先使用iounmap取消内存映射,最后使用unregister_chrdev注销这个字符设备。
使用module_init和module_exit这两个函数指定led设备驱动加载和卸载函数