platform驱动学习二之led测试实例
来源:互联网 发布:js取消onblur事件 编辑:程序博客网 时间:2024/04/28 23:40
*********************************************************************************************************************************************
#操作系统:CentOS6.7
#开发板 :fl2440
#cpu :s3c2440(arm920t)
#编译器 :arm-Linux-gcc(buildroot-2012.08)
#linux内核版本:linux-3.0
#开发模块:platform_led
********************************************************************************************************************************************前面我已经分析过了platform_led.c源代码,具体可以参考我的博客http://blog.csdn.net/zouleideboke/article/details/68969544
下面我将源代码进行编译,然后编写一个测试程序进行测试!
1.创建platform_led驱动模块
[zoulei@CentOS ~]$ mkdir LED1
[zoulei@CentOS ~]$ cd LED1
[zoulei@CentOS LED1]$ vim plat_led.c
[zoulei@CentOS LED1]$ vim s3c_driver.h
[zoulei@CentOS LED1]$ vim plat_ioctl.h
[zoulei@CentOS LED1]$ vim Makefile
obj -m:=plat_led.cC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gccKDIR?=~/fl2440/kernel/linux-3.0obj-m:=plat_led.odefault:@$(MAKE) -C $(KDIR) M=`pwd` modules @make clean clean:rm -f *.o *mod.c *.order *.symvers将上面的.c和.h文件保存,然后进行编译链接
[zoulei@CentOS LED1]$make
[zoulei@CentOS LED1]$ls
Makefile plat_ioctl.h plat_led.c plat_led.ko s3c_driver.h
2编写及编译测试程序
[zoulei@CentOS ~]$mkdir LED1_test
[zoulei@CentOS ~]$ cd LED1_test/
[zoulei@CentOS LED1_test]$ vim s3c_led_test.c
/******************************************************************************** * Copyright: (C) 2017 zoulei<zoulei121@gmail.com> * All rights reserved. * * Filename: s3c_led_test.c * Description: This file * * Version: 1.0.0(04/4/2017) * Author: zoulei <zoulei121@gmail.com> * ChangeLog: 1, Release initial version on "04/4/2017 15:03:40 PM" * ********************************************************************************/ #include<stdio.h>#include<stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/ioctl.h>#include <unistd.h>#define PLATDRV_MAGIC 0x60#define LED_OFF _IO (PLATDRV_MAGIC,0x18)#define LED_ON _IO (PLATDRV_MAGIC,0x19)#define LED_BLINK _IO (PLATDRV_MAGIC,0x1A)int main(int argc,char**argv){ int i; int led_num; int cmd_num; int fd; char dev_name[10]={0}; if(argc<3) { printf("too few parameters,please input:./%s\n",argv[0]); return -1; } snprintf(dev_name,sizeof(dev_name),"/dev/led"); fd=open(dev_name,O_RDWR); led_num=atoi(argv[1]); cmd_num=atoi(argv[2]); switch(cmd_num) { case 0: ioctl(fd,LED_ON,led_num); break; case 1: ioctl(fd,LED_OFF,led_num); break; case 2: ioctl(fd,LED_BLINK,led_num); break; default: printf("failure\n"); break; } close(fd);return 0;}
[zoulei@CentOS LED1_test] /opt/buildroot_2012.08/arm920t/usr/bin/arm-linux-gcc s3c_led_test.c -o s3c_led_test
[zoulei@CentOS LED1_test]$ ls
s3c_led_test s3c_led_test.c
接下来是将驱动模块及测试程序的可执行文件下载到开发板上!
3.在开发板上的操作
遇到的问题及解决方法;
- platform驱动学习二之led测试实例
- platform驱动学习一之led实例
- platform按键驱动学习之测试实例
- platform总线、设备、驱动模型之led驱动实例
- platform之LED测试
- platform之led驱动分析及测试程序
- 驱动学习回顾——platform总线驱动-结合LED实例分析
- Linux下基于Platform的led驱动(二)——测试
- ok6410学习笔记(15.platform平台总线驱动模型之混杂设备驱动led)
- 一步一步学习 Linux 驱动之 platform 机制 (tiny210 LED 驱动)
- tiny6410 platform led驱动
- linux驱动学习之LED篇(二)
- linux设备驱动之LED驱动测试
- platform按键驱动(二)——编程测试实例以及select()函数详解
- Linux下基于Platform总线led驱动学习(一)
- platform设备驱动之LED(cdev设备)
- platform设备驱动之LED(misc设备)
- 2416开发记录七: platform驱动之LED(misc)
- L型骨牌
- 使用jdbc对MySQL数据库进行增删改查
- Android:简单动画效果-淡入淡出播放
- 19.ConcurrentHashMap
- centos7下的基于nginx的fastcgi环境搭建及样例测试
- platform驱动学习二之led测试实例
- C/C++经典程序训练3---模拟计算器
- 蓝桥杯 历届试题 打印十字图
- 计蒜客-火柴棍游戏
- 算法训练 字符删除
- 【NOI OJ】1816 拨钟问题
- 半数单集
- HDOJ 3788 ZOJ问题(观察推断题)
- 操作系统小练习5