用linux写跑马灯程序,Linux下LED跑马灯驱动
一.驱动程序代码:
#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跑马灯驱动相关推荐
- 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程
实验5 嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...
- linux如何运行java程序,Linux环境下运行简单java程序
一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...
- Linux写文件断电保存,linux 写文件操作,异常掉电后,文件损坏丢失(0kb)
今天调试程序,在做异常断电测试时,再开机发现文件是0 kb, 通过log查询,文件已经写入完成.不明白为何掉电之后文件就没了. 查到下面的博文解决了该问题. 通过 fflush->fsync-& ...
- linux如何调试elf程序,Linux应用程序elf描述
玩Linux的人应该明白ELF文件是一种文件格式,就好比.txt,.doc等一样,只是这个文件是按照特定信息排列组成,同样在windows上也存在一种格式,它叫PE,老的叫dos.下面我就来看看ELF ...
- linux nvidia是否安装程序,Linux 为 Nvidia 显卡安装闭源驱动
**2018/06/30更新:如果你只想用独显,不需要安装Bumblebee进行双显卡切换,请移步此文[Install Nvidia driver, CUDA 9.1 and Tensorflow 1 ...
- 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么
原标题:"Linux"小程序发布一个月后,我们发现了什么 这一个月来,这个小程序得到了八千多人的使用,一百多位贡献者实际参与了翻译贡献,其中贡献最高的"Datura st ...
- linux串口发送数据程序,linux串口驱动分析——发送数据
一.应用程序中write函数到底层驱动历程 和前文提到的一样,首先先注册串口,使用uart_register_driver函数,依次分别为tty_register_driver,cdev_init函数 ...
- 编写linux下跑马灯应用程序,01 arm11 led 跑马灯程序
.text .globl _start _start: ldr r0, =0x70000000 orr r0, r0, #0x13 mcr p15, 0, r0, c15, c2, 4 ldr r0, ...
- linux 跑java程序_Linux下独立执行Java程序
Linux系统里,很多时候因为种种原因,需要把java程序单独执行,而不是在web容器环境下执行,这时候很多容器资源是无法直接取到的,比如数据库连接池配置的数据源等等,还有就是程序运行需要的第三方ja ...
最新文章
- 运行报表时提示输入用户名和密码
- 简简单单用OpenCV让一只小猫咪变成奶凶奶凶的科技猫
- 动态数组怎么定义_动态规划最长回文子序列
- php判断多维数组的技巧
- idea删除module
- 2-2:套接字(Socket)编程之深入了解套接字
- 内存对齐 | 原来字段顺序还能影响结构体占用的内存空间
- 微信Windows版本升级 可以浏览朋友圈了
- 【面试题】面试问红黑树,我脸都绿了。。
- java 守护进程 linux_Java实现Linux下服务器程序的双守护进程
- 计算机二级access数据库考试题型,2016最新计算机二级Access数据库试题及答案
- 高光谱遥感图像数据下载
- 红白机基本原理(一)总述
- GBASE 8s UDR内存管理_05_mi_free
- 安卓广告机带4G一体开发
- kernel启动流程-head.S的执行_3.preserve_boot_args
- 【LeetCode】64. 最小路径和 结题报告 (C++)
- 服务端发现2t3ik.p进程占CPU过高。2t3ik ddgs.3011
- 计算机网络哪个学校好厦门,厦门较好的的计算机学校有哪几间
- Express+MongoDB服务端开发教程
热门文章
- vue项目中,关于echarts报错:To install them, you can run: npm install --save echarts/lib/chart/bar…………
- 一起来聊聊MySQL 8.0 的特性及排名可好?
- 【PAT(甲级)】1063 Set Similarity(题目意思)
- HTTP 协议相关入门
- win7能装HTML5年吗,告诉你正版win7如何安装
- 《计算机网络》——文件传输协议FTP、简单邮件传送协议SMTP、邮局协议POP3、网际报文存取协议IMAP、万维网和HTTP协议、超文本传输协议HTTP
- java跟python哪个好找工作-短期找工作,编程语言是学习Python还是Java好呢?
- The 16th Heilongjiang Provincial Collegiate Programming Contest部分题解
- 基于Multisim的4*4 乘法器原理图设计和仿真
- 客户最佳实践 | All in企业微信,苏州吴中维多利亚美容医院让每位员工成为“美丽管家”!