电子工程师技术服务社区
- 社区首页
- 下载
- code.zip
资料描述
本帖最后由 ffaae8efa9a97b2d 于 2018-8-23 18:36 编辑
功能实现:修改用户led对应的驱动,用户能够以设备节点方式访问并控制led灯。步骤1:修改内核源码目录下drivers/leds/leds-gpio.c文件:图片左边的代码即为修改后的代码,右边的为原始代码如图1-1、图1-2、图1-3、图1-4、图1-5,之后会生成“/dev/iotest”设备节点;
步骤2:在内核源码根目录执行make arch=arm cross_compile=arm-linux-gnueabihf- menuconfig,将led-gpio驱动编译成内核模块方式加载,如图2-1;
步骤3:在内核源码根目录执行make arch=arm cross_compile=arm-linux-gnueabihf- modules -j32 重新编译模块;
步骤4:将搭建系统的sd卡接入虚拟机识别到后执行make arch=arm cross_compile=arm-linux-gnueabihf- modules_install install_mod_path=/media/rootfs安装内核模块;
步骤5:在内核源码根目录执行make arch=arm cross_compile=arm-linux-gnueabihf- zimage -j32重新编译zimage,将zimage更新到/media/rootfs/boot目录;
步骤6:编写应用层测试代码test.c:
#include
#include
#include
#include
int main(int argc,char *argv);
ioctl(fd, num1, num2);
close(fd);
return 0;
}
步骤7:将test.c交叉编译成test并上传到开发板系统任意路径,之后在此路径执行chmod 777 test;
在此路径执行./test 1 0、./test 1 1、./test 1 2、./test 1 3、./test 1 4、./test 1 5、./test 1 6、./test 1 7来分别控制三盏userled1~3