S3C6410开发板LED驱动代码分析及测试代码分析

发布者:Zhenxiang最新更新时间:2021-03-23 来源: eefocus关键字:S3C6410  开发板  LED驱动 手机看文章 扫描二维码
随时随地手机看文章

在本文中,我们对S3C6410开发板LED驱动代码的实现过程进行分析,然后通过一个实例对LED进行控制。在本文的资源中包含了设备驱动的源码和测试的源码。


一、设备驱动源码分析

设备驱动主要实现了模块的初始化、模块的卸载、io模块操作的功能。


1、模块初始化

模块的初始化的源码如下所示。


static int __init dev_init(void)

{

int ret;

 

{

unsigned tmp;

tmp = readl(S3C64XX_GPKCON);

tmp = (tmp & ~(0xffffU<<16))|(0x1111U<<16);

writel(tmp, S3C64XX_GPKCON);

tmp = readl(S3C64XX_GPKDAT);

tmp |= (0xF << 4);

writel(tmp, S3C64XX_GPKDAT);

}

 

ret = misc_register(&misc);

 

printk (DEVICE_NAME"tinitializedn");

 

return ret;

}


在初始化的源码中,主要是对控制LED的GPIO引脚的寄存器进行设置,将GPIO设置为输出,并将GPIO的初始状态设置为高电平,灯是熄灭状态。另外一个功能就是将LED的混杂设备注册到内核中。


2、模块卸载

模块卸载的代码比较简单,如下所示。


static void __exit dev_exit(void)

{

misc_deregister(&misc);

}


模块卸载代码实现的功能是将LED的混杂设备从内核中取消注册。


3、io 操作

io操作的代码如下所示。


static long sbc2440_leds_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)

{

switch(cmd) {

unsigned tmp;

case 0:

case 1:

if (arg > 4) {

return -EINVAL;

}

tmp = readl(S3C64XX_GPKDAT);

tmp &= ~(1 << (4 + arg));

tmp |= ( (!cmd) << (4 + arg) );

writel(tmp, S3C64XX_GPKDAT);

//printk (DEVICE_NAME": %d %dn", arg, cmd);

return 0;

default:

return -EINVAL;

}

}


这个函数主要使用来对LED进行控制的,其中,cmd是LED的控制命令,1点亮,0熄灭。arg指明控制那个灯,0~3的取值,对应4个LED灯。控制命令最终会被写入到控制GPIO引脚的数据寄存器中。


二、测试代码分析

编写了一个简单的测试代码对led的驱动进行测试,实现led灯的控制。代码如下。


int main(int argc, char **argv)

{

int on;

int led_no;

int fd;

//验证输入

if(argc!=3||sscanf(argv[1],"%d",&led_no)!=1||sscanf(argv[2],"%d",&on)!=1||

on<0||on>1||led_no<0||led_no>3)

{

fprintf(stderr,"Usage: ./led_test 0|1|2|3 0|1n");

return 1;

}

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

if(fd<0)

{

fprintf(stderr,"can't open leds!n");

return 1;

}

 

ioctl(fd,on,led_no);

close(fd);

return 0;

}


led的控制命令通过命令行输入,命令输入后先验证命令是否有效,如果有效则打开leds设备文件,并通过ioctl函数对led进行控制。编译代码,并将可执行文件传到开发板中。通过命令行就可以实现对led的控制。比如下面的命令,表示将led3点亮。


./led_test 3 1


关键字:S3C6410  开发板  LED驱动 引用地址:S3C6410开发板LED驱动代码分析及测试代码分析

上一篇:基于Linux系统和ZigBee的智能家居系统
下一篇:S3C6410开发板adc驱动代码分析及测试代码分析

推荐阅读最新更新时间:2024-11-17 15:16

儒卓力发布集成式热管理系统开发板
儒卓力发布集成式热管理系统开发板,帮助客户应对电动汽车等应用的复杂热管理挑战 儒卓力(Rutronik Elektronische Bauelemente GmbH)宣布发布先进集成式热管理系统(Integrated Thermal Managment System)开发板 ,该开发板采用分布式控制架构,易于配置,可提供高效率和高灵活性的解决方案,主要面向电动汽车等应用,能够帮助客户实现所需的集成式热管理系统。 随着汽车电气化程度的不断提高,尤其是电动汽车在性能、能效和舒适度等方面的更高要求,系统采用的电机数量不断攀升,给热管理提出了巨大挑战。传统热管理系统管路和零部件数量多,环境适应性差,效率和智能化程度较低,灵
[工业控制]
儒卓力发布集成式热管理系统<font color='red'>开发板</font>
米尔i.MX93核心板上市!MPU+MCU+NPU三芯一体,创新LGA设计
MPU+MCU+NPU三芯一体, 米尔i.MX93核心板上市!全新LGA封装 近日,米尔电子推出米尔基于NXP i.MX 93系列产品- MYC-LMX9X 核心板 及开发板 。NXP i.MX 9系列在i.MX 6和i.MX 8系列产品市场验证的基础上,继承了前代产品的优点的同时,进一步提升了性能、资源利用和价格的平衡。其中i.MX 93处理器配备双核Cortex-A55@1.7 GHz+Cortex-M33@250MHz,兼顾多任务和实时性需求,集成0.5 TOPS NPU赋能低成本轻量级AI应用。 NXP i.MX 93系列处理器还配备多种显示接口LVDS、MIPI-DSI、24位RGB,最高支持1080
[嵌入式]
米尔i.MX93核心板上市!MPU+MCU+NPU三芯一体,创新LGA设计
OK6410A 开发板 (三) 13 u-boot-2021.01 boot 解析 SPL 镜像运行部分 boot 详细解析
url : git@github.com:lisider/u-boot.git branch : ok6410a commit id : e63a4077ad3aea53107495b0b68b95e720fe6033 config : ok6410a_mini_defconfig // 涉及的 .S .s .c 文件 有 67个 从入口出口来看 // 运行在 0x0c00 0000 // 入口 为 arch/arm/lib/vectors.S 中的 _start 标号处的 b reset reset arch/arm/cpu/arm1176/start.S 39 lowlevel_init(1
[单片机]
STM32开发板入门的答疑解惑
首先我们需要了解什么是STM32,以及为什么选择STM32,需要哪些准备,学会之后的目的是什么,将这些都搞懂之后才会知道自己想要做什么,应该怎么做,以及做了之后的预期收获。我假设读这篇文章的人都是小白,啥都不会。 首先基本上会了解到STM32的人都是电子专业的学生,包括但不局限于电力电子,电子信息工程,电子信息科学与技术,电气自动化等等,每个学校的叫法不一样,可能这些学生在大学会学习模电,数电,电路,电工,单片机,信号与系统等等,会从51单片机开始学习。 接触到的知识非常多而且杂,而且大学生的我们哪里知道这些有什么用,只知道学校教什么,我们便学习什么,因为大学的教育就是如此,需要教授电子这个专业比较全面的知识点,但是却并不够深
[单片机]
STM32<font color='red'>开发板</font>入门的答疑解惑
ST HVLED805离线反激LED驱动解决方案
ST公司的HVLED805是具有初级检测的离线LED驱动器,包括了高性能低压PWM控制器和800V耐雪崩击穿的功率MOSFET,可直接连接到火线整流电压,恒流LED输出电流精度5%,不需要光耦器件,准谐振(QR)零电压开关(ZVS)工作,内部HV起动电路,能对LED串的开路或短路进行管理,主要用在AC/DC LED驱动器,LED替代灯(如E27, GU10)等.本文介绍了HVLED80主要特性, 应用框图以及多种性能测试电路. HVLED805: Off-line LED driver with primary-sensing The HVLED805 is a high-voltage primary switche
[电源管理]
ST HVLED805离线反激<font color='red'>LED驱动</font>解决方案
Linux下s3c6410的GPIO操作(6)
1、在 Linux下s3c6410的GPIO操作(3) 这篇博客中少分析了一个函数,当时列出了源码,但没分析,现在补上。 什么函数呢?如下所示: #ifdef CONFIG_S3C_GPIO_CFG_S3C64XX /** * s3c_gpio_setcfg_s3c64xx_4bit - S3C64XX 4bit single register GPIO config. * @chip: The gpio chip that is being configured. * @off: The offset for the GPIO being configured. * @cfg: The configurati
[单片机]
Linux下<font color='red'>s3c6410</font>的GPIO操作(6)
美国国家半导体推业界首款具有PWM调光控制功能的高亮度LED驱动
这款来自美国国家半导体PowerWise高能效系列的全新LED驱动器,可以驱动Luminus公司的超高电流PhlatLightLED 二零零七年十月三十日-- 中国讯 -- 美国国家半导体公司 (National Semiconductor Corporation)(美国纽约证券交易所上市代号:NSM)宣布推出业界首款具有脉冲宽度调制(PWM)调光控制功能的共阳电流模式高亮度LED驱动器。这款型号为LM3433的LED驱动器是美国国家半导体PowerWise 高能效系列的最新产品,可以驱动高功率高亮度的LED,尤其适用于屏幕背光系统、投影机及固态电灯。 美国国家半导体的LM3433LED驱动器可以支持共阳极的背光系统设计,而共阳
[新品]
STM32F4开发板----定时器(004)
定时器 定时器功能:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和pwm) 1.通用定时器 1.1 初始化基本定时参数 /** * @brief TIM Time Base Init structure definition * @note This structure is used with all TIMx except for TIM6 and TIM7. */ typedef struct { uint16_t TIM_Prescaler; /*! Specifies the prescaler value used to divide the TIM clock.
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved