内核自带LED驱动移植

u-boot 添加LED驱动(for F1C100S) UBOOT版本:2018.01 实验目标:u-boot启动后点亮3个led灯 u-boot启动过程中会调用crt0.S汇编代码,在该汇编代码中点亮LED. LED对于引脚如下: REG --GPE4 GREEN – GPE5 YELLOW – GPE6 1、GPIO驱动实现 u-boot的驱动程序都放在drivers目录下。 LED驱动属于GPIO驱动。 所以led驱动应该写在drivers\gp... 阅读详情

在fl2440的内核中,本身已经有了LED驱动,我们要根据自己的需求将它使能即可,重要的是如何找到需要修改的位置,如何修改。在前面分析过我们自己写的驱动代码,内核中自带的驱动原理也大概相似,首先在make menuconfig 下添加内核对LED驱动的支持,然后我们要在内核的drivers/目录下找到leds,然后去看s3c24xx.c里的代码,前面在plat-led中分析过设备和驱动是如何找到彼此的,通过.name,找到设备名,然后返回内核目录下,用grep命令查找我们在驱动中的.name,看设备文件在哪里,然后根据fl2440的硬件原理图对其进行修改,返回内核目录下执行make,       OK。


下面是实际操作过程。

一、首先在内核中添加对LED的支持。

[fanmaolin@Centeros linux-3.0]$ make menuconfig

Device Drivers  --->  

[*] LED Support  --->  


[*]   LED Class Support  

<*>   LED Support for Samsung S3C24XX GPIO LEDs    



二、找到设备信息,进行修改


[fanmaolin@Centeros linux-3.0]$ cd drivers/



会看到leds,


[fanmaolin@Centeros drivers]$ cd leds/


在里面找到 leds-s3c24xx.c   



 [fanmaolin@Centeros leds]$ vim leds-s3c24xx.c

找到.name     =    "s3c24xx_led"我们用它来找到设备信息文件



用grep命令寻找包含这个字符串的文件

[fanmaolin@Centeros linux-3.0]$ grep s3c24xx_led -r *



去arch/arm/plat-s3c24xx/common-smdk.c里寻找


根据原理图修改结构体里的信息



[fanmaolin@Centeros linux-3.0]$ vim arch/arm/plat-s3c24xx/common-smdk.c

/* LED devices */
 50 
 51 static struct s3c24xx_led_platdata smdk_pdata_led4 = {
 52     .gpio       = S3C2410_GPB(5),//根据手册改引脚  分别改为5、6、8、10
 53     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 54     .name       = "led0",//.name 可以根据自己习惯改,不改也无所谓
 55     .def_trigger    = "timer",
 56 };
 57 
 58 static struct s3c24xx_led_platdata smdk_pdata_led5 = {
 59     .gpio       = S3C2410_GPB(6),
 60     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 61     .name       = "led1",
 62     .def_trigger    = "nand-disk",
 63 };
 64 
 65 static struct s3c24xx_led_platdata smdk_pdata_led6 = {
 66     .gpio       = S3C2410_GPB(8),
 67     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 68     .name       = "led2",
 69 };
 70 
 71 static struct s3c24xx_led_platdata smdk_pdata_led7 = {
 72     .gpio       = S3C2410_GPB(10),
 73     .flags      = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 74     .name       = "led3",
 75 };


这样就可以了,然后make编译,重新安装内核。。。


三、开发板上进行测试


我们可以在sys/class下看到leds



关于sys/:

sysfs 文件系统总是被挂载在 /sys 挂载点上,sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。它给用户提供了一个从用户空间去访问内核设备的方法,写程序访问sysfs,可以像读写普通文件一样来操作/sys目录下的文件。在/sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备,也包括 ACPI 等不那么显而易见的真实设备,还有 tty, bonding 等纯粹虚拟的设备;在其它目录如 class, bus 等中则在分类的目录中含有大量对 devices 中真实对象引用的符号链接文件.  


更多详细的关于sysfs的介绍,可以参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html


对于我们的LED,linux把他当作是直接挂载在总线上的,可以直接通过/sys上操作对应文件而控制LED。


可以看到设备信息。

进入led2,

brightness是控制灯的亮灭,>1亮,0灭。 max_brightness可以控制灯的亮度


现在我们对其进行实际操作  

>: echo 2 > brightness


可以看到第三盏灯亮

>: echo 0 > brightness  ,,灯灭。

其它的灯可以同样进行这样的操作。

也可以写一个程序直接对其进行操作,而不用进到文件里面。。。



u-boot LED驱动分析(2018.01版 ) u-boot版本:2018.01版 作者:YFW 博客: 当前分析基于cpu: F1C100S (全志) 下面代码位于: arch/arm/include/asm/arch-sunxi/gpio.h #define SUNXI_GPIO_L 11 #define SUNXI_GPIO_M 12 #define SUNXI_GPIO_N 13 #define GPIO_BANK(pin) ((p... 阅读详情

相关推荐

Exynos4412 内核移植(五)—— 驱动的移植

驱动程序的动态编译和静态编译

知秋一叶 5766

在U-boot中添加led驱动步骤

基于HI3515开发包的uboot和编译器,开发板。 目的: 在u-boot中增加驱动的步骤; 例子:增加对led的控制函数 1、在u-boot/drivers目录下新建led目录,并在led目录下新建led.c文件 2、led.c内容如下 #include&lt;common.h&gt; void led(void) { printf("led control---- \n")...

kouriba 863

小熊派华为物联网操作系统LiteOS裸机驱动移植01-以LED为例说明驱动移植

1. LiteOS裸机驱动移植系列 俗话说的好,光说不练假把式,上一个系列 LiteOS内核实战教程 中讲述了内核中任务如何管理、如何使用信号量同步多个任务的运行,如何用互斥锁保护共享资源,如何申请分配动态内存空间,但是在嵌入式系统中,如果不能将内核有效的应用在实际场景中控制外围设备,那么一切都是纸上谈兵。在这个系列中,本教程将会带领大家,手把手添加一些常用的外设驱动到LiteOS系统中,掌握外设...

小熊派开源社区的博客 2448

uboot 之led灯闪烁

发光管二极管的发光原理: 当发光二极管中流过的电流达到一定值时,二极管便会发光,一般情况下,这个电流值是3~10mA(稍微大于10mA也可以,不过最好不要大于20mA,否则二极管会被烧坏),所以我们要点亮发光二极管就是让他流过的电流在这个范围内。 发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算: R=(E-UF)/

幸福的瞬间 3018

四.驱动框架入门之LED(上)

目录 一.何谓驱动框架(了解下即可) 1.1、驱动是谁写的 1.2、驱动编程协作要求 1.3、到底什么是驱动框架 二.内核驱动框架中LED的基本情况 2.1、相关文件 2.2、九鼎移植的内核中led驱动 2.3、案例分析驱动框架的使用 2.4、典型的驱动开发行业现状 三.初步分析led驱动框架源码1_2 3.1、涉及到的文件 3.2、subsys_initcal...

Mr.Wang的博客 1592

基于tiny210v2的linux-3.9.6内核驱动移植1:led驱动

tiny210v2上有4个led,可以通过gpio直接控制,今天尝试最简单的led驱动移植,主要通过对比友善给的linux-3.0.8来进行移植。      参考:http://blog.youkuaiyun.com/it_114/article/details/6203681  第一步:             查得对应GPIO为GPJ_0---GPJ_3;             在drivers/ch

MyBlog of Embbnux 1551

内核LED驱动框架讲解以及led设备注册示例代码

1、驱动框架介绍 (1)内核中驱动部分维护者针对每个种类的驱动设计一套成熟的、标准的、典型的驱动实现,然后把不同厂家的同类硬件驱动中相同的部分抽出来自己实现好,再把不同部分留出接口给具体的 驱动开发工程师来实现,这就叫驱动框架。 (2)内核维护者在内核中设计了一些统一管控系统资源的体系,这些体系让内核能够对资源在各个驱动之间的使用统一协调和分配,保证整个内核的稳定健康运行。譬如系统中所有的GPIO就属于系统资源, 每个驱动模块如果要使用某个GPIO就要先调用特殊的接口先申请,申请到后使用,使用完后要释放。

weixin_42031299的博客 1173

系统移植二和网卡移植实验和私有驱动LED的移植

驱动文件的集成:通过修改 Kconfig 和 Makefile 文件,将驱动集成到内核中,并在 menuconfig 中显示配置项。驱动的编译方式:可以选择将驱动编译到内核中(内建)或编译为模块(动态加载)。模块的灵活性更高,便于在需要时加载。测试程序的编译与执行:通过交叉编译工具编译应用程序,并将其放置到目标文件系统中,用于与驱动通信。设备节点:通过 mknod 创建字符设备节点,作为应用程序与驱动的通信接口。

m0_51830537的博客 923

linux3.0-内核自带led驱动移植

********************************************************************************************************************************************************************************** cpu          : s3c24

crazy boy 1116

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3146

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件)

本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。

weixin_42531128的博客 320

linux led子系统(一)

就像学编程第一个范例helloworld一样,学嵌入式,单片机、fpga之类的第一个范例就是点亮一盏灯。对于庞大的linux系统,当然可以编写一个字符设备驱动来实现我们需要的led灯,也可以直接利用gpio口,应用程序来拉高拉低管脚控制。不过,既然linux系统自己本来就带有led子系统,那么就可以好好利用之。好处不用多说了,主要对于应用层来说,不同平台都用linux的led子系统,那...

weixin_30493321的博客 117

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 243

嵌入式Linux移植5. LED驱动移植 添加LED驱动到内核,测试程序成功运行

第一次尝试开发移植Linux上的驱动,还是和当年单片机一样,从最简单的LED小灯开始,走走流程 试验结果:LED驱动已经编译进系统(产生.o文件),LED测试程序已经编译成功(产生可执行文件),但是由于疫情手头没板子, 没法上板测试,开学之后测试吧。写的有点乱想到哪写哪吧,自己能看懂就行吧,有不懂的朋友可以留言。 内核源码:飞凌提供的的kerne...

qq_36071362的博客 2951

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码)

本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。

weixin_26918763的博客 226

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

Linux 自带的 LED 灯驱动实验

使用自带的 LED 灯驱动操作led灯

weixin_46829095的博客 1707

Dify 1.0+内网部署全攻略:模型插件离线安装与信创环境适配

本文详细介绍了Dify 1.0+版本在内网环境中的部署全攻略,重点解析了模型工具插件的离线安装方法与信创环境适配技巧。通过实战经验分享,帮助企业在严格的内网隔离条件下高效部署AI平台,解决插件依赖和安装难题,提升大语言模型的应用效率。

weixin_29224529的博客 274

嵌入式 Linux 内核驱动开发【The first day: 36093万字】

嵌入式 Linux 内核驱动开发【1】 第1章 Linux 内核裁剪和定制 【1】Linux 内核开发简介 【2】 Linux 源码阅读工具 【1.2.1】Source Insight 【1.2.2 Eclipse】 【1.2.3】 vim+ctags+cscope 【1.2.4】 LXR 【3】Linux 内核源码 【1.3.1 目录树概览】 【1.3.2】 快速确定主板关联代码 【4】 Linux 内核中的 Makefile 文件 【1.4.1】 顶层 Makefi

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 2844

别再为淘宝滑块发愁了!一个Python脚本自动获取x5sec cookie的保姆级教程

本文提供了一套完整的Python自动化解决方案,帮助开发者轻松应对淘宝滑块验证码问题。通过模拟浏览器行为、精准识别滑块缺口位置和生成拟人化移动轨迹,脚本能够自动获取关键的x5sec cookie,显著提升爬虫效率。教程涵盖环境配置、验证机制分析、代码实现及反检测策略,是解决淘宝滑块验证的实用指南。

weixin_30300225的博客 575

SAP Group Reporting入门指南(3)--公司间匹配对账ICMR及合并版本等主数据

S/4HANA CLOUD公司间匹配和对账

bflyfish的博客 965

[嵌入式linux开发]利用linux内核驱动模块来控制硬件外设---LED

在掌握了基本的linux内核驱动开发知识之后, 利用内核模块驱动来实现对硬件外设的控制.

Yoshi_Z的博客 1462

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

按键驱动移植到3.4.2内核

目录LED驱动的移植first_drv.cfirstdrvtest.c按键驱动的移植second_drv.cseconddrvtest.c 本文是基于韦东山视频的学习笔记 汇总点这 以下的移植过程都大同小异,都是先把Makefile文件中的内核编译路径改为自己的3.4.2的内核编译路径(内核要成功编译过),直接make根据错误信息修改错误。 LED驱动的移植 需要去掉头文件<asm/arch/regs-gpio.h>和<asm/hardware.h>,加上头文件<linux/

weixin_36778746的博客 684

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LINUX移植——LED驱动移植

通过前两篇文章的介绍,我们已经把linux内核移植到了tiny210上,但是看到的现象都是通过超级终端来观察的,下面了,我们介绍一下led灯的移植,给大家一个更直观的感受。这篇文章主要的内容如下: 1.对平台总线的简介; 2.led驱动的移植。 一.平台总线      首先介绍一下,我们为什么要简单介绍一下平台总线呢?因为我们是做led驱动的移植,而不是自己编写led的驱动代码。我们要移植

xie0812的专栏 3002

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

基于sys文件系统的LED驱动的移植【原创】

基于RK3188平台LED驱动程序的移植的移植。如有不正确之处,欢迎大家指点。 本文的LED驱动程序不是通过打开设备节点来访问和控制LED的,是通过sys文件系统来控制LED。 板子上有四盏灯以及对应的GPIO的引脚如下: 基于sys文件系统的LED驱动内核已经提供了,我们需要做的事情没有那么多。内核通过的LED驱动程序走的是平台总线的方式,板级文件Board-rk3...

302
上一篇: 写程序熟悉read()、write()、stat()、open()、access()等函数
下一篇: fl2440移植RTC驱动及hwclock命令使用
fml1997
博客等级 码龄10年 30粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值