一.驱动程序代码:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define DEVICE_NAME "leds"

#define LED_MAJOR 231

static unsigned long led_table [] = {

S3C2410_GPF4,

S3C2410_GPF5,

S3C2410_GPF6,

S3C2410_GPF7,

};

static unsigned int led_cfg_table [] = {

S3C2410_GPF4_OUTP,

S3C2410_GPF5_OUTP,

S3C2410_GPF6_OUTP,

S3C2410_GPF7_OUTP,

};

static int s3c2440_leds_ioctl(

struct inode *inode,

struct file *file,

unsigned int cmd,

unsigned long arg)

{

switch(cmd)

{

case 0:

case 1:

if (arg > 4)

{

return -EINVAL;

}

s3c2410_gpio_setpin(led_table[arg], !cmd);

return 0;

default:

return -EINVAL;

}

}

static struct file_operations s3c2440_leds_fops = {

.owner = THIS_MODULE,

.ioctl = s3c2440_leds_ioctl,

};

static int __init s3c2440_leds_init(void)

{

int ret;

int i;

ret = register_chrdev(LED_MAJOR, DEVICE_NAME, &s3c2440_leds_fops);

if (ret < 0)

{

printk(DEVICE_NAME " can't register major number\n");

return ret;

}

devfs_mk_cdev(MKDEV(LED_MAJOR, 0), S_IFCHR | S_IRUSR | S_IWUSR |

S_IRGRP,DEVICE_NAME);

for (i = 0; i < 4; i++)

{

s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]);

s3c2410_gpio_setpin(led_table[i], 1);

}

printk(DEVICE_NAME " initialized\n");

return 0;

}

static void __exit s3c2440_leds_exit(void)

{

devfs_remove(DEVICE_NAME);

unregister_chrdev(LED_MAJOR, DEVICE_NAME);

}

module_init(s3c2440_leds_init);

module_exit(s3c2440_leds_exit);

编译的方式参考:“如何在Linux下添加自己驱动”一文。

二.应用程序测试代码:

#include

#include

#include

#include "stdio.h"

#include "sys/types.h"

#include "sys/ioctl.h"

#include "stdlib.h"

#include "termios.h"

#include "sys/stat.h"

#include "fcntl.h"

#include "sys/time.h"

int main()

{

int on=1;

int led;

int fd;

fd = open("/dev/leds", 0);

if (fd < 0) {

perror("open device leds");

exit(1);

}

printf("leds test show. press ctrl+c to exit \n");

while(1)

{

for(led=0;led<4;led++)

{

ioctl(fd, on, led);

usleep(50000);

}

on=!on;

}

close(fd);

return 0;

}

编辑完成,命一个名,如led_test.c, 然后该目录下进行静态编译:arm-linux-gcc -static led_test.c -o led_test

最后,在目标板上找到存放led_test.c的文件,执行./led_test,便可以看到想要的结果...

用linux写跑马灯程序,Linux下LED跑马灯驱动相关推荐

  1. 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程

    实验5  嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...

  2. linux如何运行java程序,Linux环境下运行简单java程序

    一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...

  3. Linux写文件断电保存,linux 写文件操作,异常掉电后,文件损坏丢失(0kb)

    今天调试程序,在做异常断电测试时,再开机发现文件是0 kb, 通过log查询,文件已经写入完成.不明白为何掉电之后文件就没了. 查到下面的博文解决了该问题. 通过 fflush->fsync-& ...

  4. linux如何调试elf程序,Linux应用程序elf描述

    玩Linux的人应该明白ELF文件是一种文件格式,就好比.txt,.doc等一样,只是这个文件是按照特定信息排列组成,同样在windows上也存在一种格式,它叫PE,老的叫dos.下面我就来看看ELF ...

  5. linux nvidia是否安装程序,Linux 为 Nvidia 显卡安装闭源驱动

    **2018/06/30更新:如果你只想用独显,不需要安装Bumblebee进行双显卡切换,请移步此文[Install Nvidia driver, CUDA 9.1 and Tensorflow 1 ...

  6. 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么

    原标题:"Linux"小程序发布一个月后,我们发现了什么 这一个月来,这个小程序得到了八千多人的使用,一百多位贡献者实际参与了翻译贡献,其中贡献最高的"Datura st ...

  7. linux串口发送数据程序,linux串口驱动分析——发送数据

    一.应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数 ...

  8. 编写linux下跑马灯应用程序,01 arm11 led 跑马灯程序

    .text .globl _start _start: ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4 ldr r0, ...

  9. linux 跑java程序_Linux下独立执行Java程序

    Linux系统里,很多时候因为种种原因,需要把java程序单独执行,而不是在web容器环境下执行,这时候很多容器资源是无法直接取到的,比如数据库连接池配置的数据源等等,还有就是程序运行需要的第三方ja ...

最新文章

  1. 运行报表时提示输入用户名和密码
  2. 简简单单用OpenCV让一只小猫咪变成奶凶奶凶的科技猫
  3. 动态数组怎么定义_动态规划最长回文子序列
  4. php判断多维数组的技巧
  5. idea删除module
  6. 2-2:套接字(Socket)编程之深入了解套接字
  7. 内存对齐 | 原来字段顺序还能影响结构体占用的内存空间
  8. 微信Windows版本升级 可以浏览朋友圈了
  9. 【面试题】面试问红黑树,我脸都绿了。。
  10. java 守护进程 linux_Java实现Linux下服务器程序的双守护进程
  11. 计算机二级access数据库考试题型,2016最新计算机二级Access数据库试题及答案
  12. 高光谱遥感图像数据下载
  13. 红白机基本原理(一)总述
  14. GBASE 8s UDR内存管理_05_mi_free
  15. 安卓广告机带4G一体开发
  16. kernel启动流程-head.S的执行_3.preserve_boot_args
  17. 【LeetCode】64. 最小路径和 结题报告 (C++)
  18. 服务端发现2t3ik.p进程占CPU过高。2t3ik ddgs.3011
  19. 计算机网络哪个学校好厦门,厦门较好的的计算机学校有哪几间
  20. Express+MongoDB服务端开发教程

热门文章

  1. vue项目中,关于echarts报错:To install them, you can run: npm install --save echarts/lib/chart/bar…………
  2. 一起来聊聊MySQL 8.0 的特性及排名可好?
  3. 【PAT(甲级)】1063 Set Similarity(题目意思)
  4. HTTP 协议相关入门
  5. win7能装HTML5年吗,告诉你正版win7如何安装
  6. 《计算机网络》——文件传输协议FTP、简单邮件传送协议SMTP、邮局协议POP3、网际报文存取协议IMAP、万维网和HTTP协议、超文本传输协议HTTP
  7. java跟python哪个好找工作-短期找工作,编程语言是学习Python还是Java好呢?
  8. The 16th Heilongjiang Provincial Collegiate Programming Contest部分题解
  9. 基于Multisim的4*4 乘法器原理图设计和仿真
  10. 客户最佳实践 | All in企业微信,苏州吴中维多利亚美容医院让每位员工成为“美丽管家”!