arm驱动开发之LED(1)

Linux arm点亮led pinctrl 子系统主要用于管理设备的引脚控制功能。它提供了一种统一的方式来配置管理芯片引脚的复用、电气特性(如驱动能力、上下拉电阻等)以及引脚的状态(如输入、输出等)。在 Linux 内核中,pinctrl 子系统使得驱动开发者能够方便地对引脚进行配置,而无需直接操作硬件寄存器。它抽象了不同芯片厂商的引脚控制差异,提高了代码的可移植性。例如,在一个 SoC 中,某个引脚可能既可以作为通用输入输出(GPIO),也可以作为特定的外设功能引脚(如 UART 发送引脚)。 阅读详情

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/arch/regs-gpio.h>
#include <asm/hardware.h>

#define DEVICE_NAME     "leds"  /* 加载模式后,执行”cat /proc/devices”命令看到的设备名称 */
#define LED_MAJOR       231     /* 主设备号 */


static struct class *leds_class;
static struct class_device    *leds_class_devs[4];


/* bit0<=>D10, 0:亮, 1:灭 
 *  bit1<=>D11, 0:亮, 1:灭 
 *  bit2<=>D12, 0:亮, 1:灭 
 */ 
static char leds_status = 0x0;  
static DECLARE_MUTEX(leds_lock); // 定义赋值

//static int minor;
static unsigned long gpio_va;

#define GPIO_OFT(x) ((x) - 0x56000000)
#define GPFCON  (*(volatile unsigned long *)(gpio_va + GPIO_OFT(0x56000050)))
#define GPFDAT  (*(volatile unsigned long *)(gpio_va + GPIO_OFT(0x56000054)))


/* 应用程序对设备文件/dev/leds执行open(...)时,
 * 就会调用s3c24xx_leds_open函数
 */
static int s3c24xx_leds_open(struct inode *inode, struct file *file)
{
    int minor = MINOR(inode->i_rdev); //MINOR(inode->i_cdev);

    switch(minor)
    {
        case 0: /* /dev/leds */
        {
            // 配置3引脚为输出
   

嵌入式学习--arm开发板跑马灯 学习要求:编写开发板GPIO (通用IO)驱动测试程序,要求led1led3实现跑马亮灯状态,每盏灯亮两秒一次,持续3秒。 开发板:友善之臂mini2440 解: 1.操作步骤 (1)  打开ubuntu系统,打开终端,输入命令“arm-linux-gcc 2_1_paomadeng.c –o paomadeng”交叉编译生成开发板上可以执行的文件paomadeng。 (2)  将文... 阅读详情

相关推荐

TMS470 ARM7开发套件快速入门:从环境搭建到LED闪烁实战

嵌入式系统开发是软硬件协同设计的核心领域,其基础在于理解微控制器架构与工具链的配合。ARM7TDMI作为经典的RISC处理器内核,以其精简指令集稳定的流水线设计,为实时控制应用提供了可靠的计算平台。在工程实践中,高效的开发环境部署与硬件调试是项目成功的关键,能够显著缩短开发周期并降低入门门槛。以TI的TMS470系列微控制器为例,它广泛应用于汽车电子工业控制场景,其配套的IAR Embedded WorkbenchJ-Link调试器构成了完整的开发解决方案。本文聚焦于**TMS470开发套件**的快速

weixin_33829657的博客 374

基于ARMLED显示屏控制

近年来 ,LED(light emiting diode,发光二极管)显示屏作为一种高科技产品日益引起人们的重视。它可以实时显示或循环播放文字、图形图像信息,具有显示方式丰富、观赏性强、显示内容修改方便、亮度高、显示稳定且寿命长等多种优点,被广泛应用于商业广告、体育比赛、交通信息报导等诸多领域.LED显示屏的核心技术主要集中在控制器中。目前,大部分异步显示屏采用的是8位或16位的微控制器,由于受到微处理器的处理速度、体系架构、寻址范围、外围接口资源等诸多限制,已难以在要求显示较多像素、显示内容帧频较高、动态显示效果复杂的情况下得到良好的动态视觉效果。 针对以上情况,本文研究开发了一种全新的,由32位高性能ARM微处理器组成的LED显示屏控制系统,就控制平台、硬件结构软件开发实现给出了驱动部分控制部分的详细分析与设计。

FPGA上构建ARM Cortex-M1软核实现LED控制

ARM Cortex-M1是一种面向FPGA优化的32位RISC处理器内核,其软核化部署突破了传统MCU硬件固定性的限制,使开发者能在可编程逻辑中灵活定制处理器架构与外设资源。其核心原理基于AMBA总线协议(如APB/AHB)实现外设互联,并通过ITCM/DTCM片内存储器提供确定性执行环境。该技术显著提升嵌入式原型验证效率,支持快速迭代与异构协同,在工业控制、边缘AI推理低功耗物联网节点等场景中具备工程落地价值。本文以逻辑派FPGA-G1开发板为平台,详解Cortex-M1软核配置、GPIO驱动开发及比

weixin_42594427的博客 63

ARM原理学习】-LED灯点亮驱动编写

目标顶格写,后面是冒号,冒号后面是依赖;:依赖就是达成目标的原材料;:命令前面一定是,不能是顶格,更不能是多个空格;命令就是要生成目标要执行的动作。链接器得到的led.elf其实是我们的可执行文件,如果在操作系统下用led.elf完全就可以了,但是在裸机中,我们需要的是可以烧写的文件(也就是镜像文件),因此我们得先用led.elf来制作镜像文件,制造工具是交叉编译链中的arm-linux- objcopy.arm-linux-objdump工具进行反编译(反汇编 ),将可执行文件翻译成汇编语言!

钟浩森的博客 593

嵌入式系统开发与应用——ARM 开发环境搭建及GPIO控制LED实验

一、 实验目的 1、掌握仿真器FS-JTAG 的使用方法; 2、掌握主流的ARM开发环境; 3、掌握GPIO的工作原理及其控制LED编程。 二、 实验仪器设备 PC机、Exynos4412 实验箱。 三、 实验原理 1ARM仿真器简介 JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些

TTTSEP9TH2244的博客 7545

编译第一个驱动,加载点亮LED

volatile unsigned long *gpfcon=NULL; volatile unsigned long *gpfdat=NULL; static int led_drv_open (struct inode *inode,struct file *file){ //printk("first_dir_open\n"); * gpfcon &= ~((0x3<<(4*2))|(0x3<<(5*2))|(0x3<<(6*2))); //控制寄存器位取反清零 * gpfcon |= ((0x1

Funning的博客 951

【嵌入式Linux+ARM】GPIO操作

1.GPIO介绍 GPIO(general purpose i/o ports)意思为通用输入/输出端口,通俗的说就是一些引脚。 我们可以通过它们输出高低电平 或 读入引脚的状态。

SCOTT 技术博客 6196

Linux ARM平台开发系列讲解(LED) 2.1.2 如何点亮一个LED驱动编写

1. 认识platform 框架 platform是Linux下的万能驱动框架,学好它基本很多驱动都可以写出来了 如下图,platform不像I2c一样是一条实际存在的总线,它是一条由用户虚拟出来的总线,帮助用户匹配设备信息,方便驱动移植 ......

DSMGUOGUO的博客 546

ARM Linux 驱动开发篇--嵌入式 Linux LED 驱动开发实验(1)--Linux 下 LED驱动原理-- Ubuntu20.04

ARM Linux 驱动开发篇--嵌入式 Linux LED 驱动开发实验(1)--Linux 下 LED驱动原理-- Ubuntu20.04

博主发布的博客主要分布在:​ 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》《linux裸机开发专栏》 《freertos专栏》《STM32 HAL库专栏》 《ROS开发专栏》 ​《产品测评专栏》《Ai智能体专栏》 621

Linux ARM平台开发系列讲解(LED) 2.1.3 如何点亮一个LED之注册字符设备驱动

1. 注册字符设备驱动 /* 注册字符设备驱动 */ platform_example_driver_member.major = register_chrdev(0, CHR_DEV_NAME, &fops); if (platform_example_driver_member.major < 0) { printk("major register failed! %s %d %s \n", __FILE__, __LINE__, __func__); err = -1; r

DSMGUOGUO的博客 449

视频教程-GPIOLED-1.4.ARM裸机第四部分-驱动/内核开发

GPIOLED-1.4.ARM裸机第四部分 互联网课程品牌《朱老师物联网大...

weixin_28978857的博客 192

【RA-Eco-RA2L1开发板评测】深入实践 FSP IO 驱动,实现双 LED 交替闪烁

本文介绍了如何在RA2L1开发板上使用FSP的IOPORT驱动实现LED交替闪烁功能。主要内容包括:分析开发板原理图确定LED对应引脚(P103P104),通过FSP Configuration图形化配置GPIO模式输出类型,利用R_IOPORT_PinWrite()函数控制LED亮灭,配合延时函数实现500ms间隔的交替闪烁效果。相比传统寄存器操作方式,FSP提供了更简单的API接口图形化配置,提高了开发效率。实验成功实现了预期功能,并为后续按键功能开发奠定了基础。

2301_76403635的博客 213

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-9.1-LED灯(模仿STM32驱动开发实验)

本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验学习笔记内容。本文大量引用了正点原子教学视频链接中的内容。

小狗爱吃黄桃罐头的博客 794

ARM Linux 驱动开发篇---新版led驱动实验程序编写-- Ubuntu20.04

ARM Linux 驱动开发篇---新版led驱动实验程序编写-- Ubuntu20.04

博主发布的博客主要分布在:​ 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》《linux裸机开发专栏》 《freertos专栏》《STM32 HAL库专栏》 《ROS开发专栏》 ​《产品测评专栏》《Ai智能体专栏》 1549

Linux LED驱动实验

函数释放掉 ioremap 函数所做的映射。函数用于获取指 定 物 理 地 址 空 间 对 应 的 虚 拟 地 址 空 间。depmod //第一次加载驱动的时候需要运行此命令。./ledApp /dev/led 1 //打开。./ledApp /dev/led 0 //关闭。,此参数就是要取消映射的虚拟地址空间首地址。modprobe led.ko //加载驱动。是虚拟空间到物理空间的映射,也叫做地址映射。读取写内存地址,返回值就是读取到的数据。:要映射的物理起始地址。:要映射的内存空间大小。

zzipeng的博客 870

硬件知识_LED原理图

本文介绍了ARM嵌入式开发中点亮LED的入门方法。通过分析LED原理图识别、基础电路组成四种常见驱动方式,阐述如何通过GPIO控制LED亮灭。关键步骤包括:查看硬件原理图确定控制引脚,查阅芯片手册了解配置规则,编写控制程序。文章强调限流电阻的必要性,并指出不同电平标准下软件控制逻辑的一致性(高/低电平对应1/0)。最后提及驱动能力不足时可使用三极管拓展电路,为后续引脚配置代码开发奠定硬件基础。

桃蹊、的博客 360

ARM转战TI DSP:手把手教你用CCS 10.1.1搞定F280049C的第一个LED工程(含CMD文件避坑指南)

本文详细介绍了如何从ARM开发环境转向TI DSP开发,使用CCS 10.1.1完成TMS320F280049C的第一个LED工程。内容涵盖开发环境搭建、工程文件架构、CMD文件配置避坑指南及实战演练,帮助开发者快速掌握DSP开发的核心技巧。

weixin_33743703的博客 645

嵌入式实验报告--共7个实验

嵌入式实验报告--共7个实验 去发现同类优质开源项目:https://gitcode.com/ 此仓库包含了一组关于嵌入式系统学习的实验报告,共涵盖7个实验项目。以下是每个实验的报告简介: 实验一:ADS1.2 开发环境简介 本实验旨在让学习者熟悉ADS1.2集成开发环境,理解其基本使用方法界面布局。 实验二:超级终端设置及BIOS 功能使用 学习如何配置使用超级终端,以及如何操作BI...

gitblog_06719的博客 627
上一篇: 无线测速方法:
下一篇: nfs 文件系统挂载
wangzhibo_csdn
博客等级 码龄10年 105粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值