liunx驱动----点亮LED
自动挂接根文件系统(直接从NFS启动)
- 修改uboot命令行
把 bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
- 设置服务器IP,目录
- 设置自己的IP
include <sys/types.h>
include <sys/stat.h>
include <fcntl.h>
include <stdio.h> int main(int argc, char **argv)
{
int fd;
int val = ;
fd = open("/dev/xxx", O_RDWR);//打开
if (fd < )
{
printf("can't open!\n");
}
write(fd,&val,);//写
return ;
}
- 应用程序去打开一个open("/dev/xxx", O_RDWR); 使用 mknod /dev/xxx c 主设备号 次设备号 手动创建
- 使用自动创建 使用udev机制 就是busybox 中的mdev机制自动创建 (根据系统信息创设备节点)
定义一个类和一个设备
- 使用class_create创建一个firstdrv_class类
- 使用class_device_create创建一个设备 设备节点是 xyz
firstdrv_class_dev = class_device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "xyz"); //mdev 自动创建一个 /dev/xyz */
int frist_drv_init(void)
{
major= register_chrdev(,"frist_drv",&first_drv_fops);//注册函数(注册驱动程序) (major 主设备号 )告诉内核
//主设备号 驱动名称 file_operations结构
/*生成系统信息*/
firstdrv_class = class_create(THIS_MODULE,"firstdrv");//创建一个 first_class 这样的一个类
firstdrv_class_dev = class_device_create(firstdrv_class, NULL, MKDEV(major, ), NULL, "xyz"); //mdev 自动创建一个 /dev/xyz */
return ;
}
- 使用class_device_unregister 函数来卸载 class_device_create创建的设备
class_device_unregister(firstdrv_class_dev);
- 使用class_destroy 释放 掉firstdrv_class这个类
class_destroy(firstdrv_class);
void frist_drv_exit(void)
{
unregister_chrdev(major,"frist_drv");//卸载函数 卸载驱动
class_device_unregister(firstdrv_class_dev);
class_destroy(firstdrv_class);
}
- 配置 GPFCON open
static int first_drv_open(struct inode *inode, struct file *file)
{
//printk("first_drv_open\n");
/*配置GPFCON 4 5 6为输出*/
*gpfcon &=~((0x3<<(*))|(0x3<<(*))|(0x3<<(*)));//清除GPFCON 4 5 6对应位
*gpfcon |= ((0x1<<(*))|(0x1<<(*))|(0x1<<(*)));//设置 GPFCON 4 5 6 为输出
return ;
}
- 设置 GPFDAT write
static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
{
int val;
//printk("first_drv_write\n");
copy_from_user(&val,buf,count);//将buf中的数据拷贝到 val中 val的值等于 *buf的前0-count的数据 copy_from_user的功能是从用户空间传递数据到内核空间
// 对应的 copy_to_user 从内核空间传递数据到 用户空间
if(val == )
{
*gpfdat |= ((<<)|(<<)|(<<));// 熄灭灯
}
else
{
*gpfdat &= ~((<<)|(<<)|(<<));//打开led
}
return ;
}
liunx驱动----点亮LED的更多相关文章
- linux平台总线驱动设备模型之点亮LED
这一节里,我们来使用平台驱动设备这一套架构来实现我们之前使用简单的字符设备驱动点亮LED,这里并无实际意义,只是告诉大家如果编写平台总线驱动设备. 问:如何编写平台总线驱动设备这一套架构的设备驱动? ...
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- 驱动编程思想之初体验 --------------- 嵌入式linux驱动开发之点亮LED
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- ARM学习篇一 点亮LED
要点亮LED,先决条件是什么,当然得有相应的硬件设施.板子的整个电路图比较大,我就直接取相关部分. 给发光二级管加上3.3v电压后,通过1k电阻,直接与S3C2440连接.至于为什么要加电阻,大家应该 ...
- arm-点亮led灯
点亮指路灯:学习四环节:led原理图分析,芯片手册导读,思维导图设计,为什么要使用led:通常led是作为程序调试的重要手段.led原理图:led实质为发光二极管,当其两端电压一定时,即处于导通状态. ...
- 学习笔记——单片机简介 & 点亮LED & 流水灯 & 电路基础【更新Ing】
视频地址:https://www.bilibili.com/video/av10765766 超详细!!!!!! 单片机内部三大资源 [资源:单片机可提供使用的东西] FLASH 可以重复擦写 断电后 ...
- 【iCore4 双核心板_ARM】例程五:SYSTICK定时器 实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出模式,采 用灌电流方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒 ...
- 【iCore1S 双核心板_ARM】例程十:SYSTICK定时器实验——定时点亮LED
实验原理: 通过STM32的三个GPIO口驱动三色LED的三个通道,设定GPIO为推挽输出,采用 灌电流的方式与LED连接,输出高电平LED灭,输出低电平LED亮,通过系统定时器实现 1s定时,每秒变 ...
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
随机推荐
- angular.injector()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java_String
整理一下java中关于String的内容.Spring应该是java中使用最频繁的类了,那么今天我们仔细研究下关于Spring的内容. 定义: String类是一个字符串类型的类,使用" ...
- [LeetCode] Sliding Puzzle 滑动拼图
On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square repre ...
- css3 属性
1.css 面试题: css 组成: css 样式组成 规则:选择器+声明块 声明块:css属性+css属性值 2.css 解析规则: 从右往左 3.文字超出省略号显示: 1.元素不是内联块 2.ov ...
- java线程的学习
接口 Runable 属性:target 方法:void run() 类 Thread 方法:void start()用来启动一个线程 void run() 线程启动后执行的方法 Sting getN ...
- Lecture3.随机变量及其概率分布
1.随机变量的定义 2.随机变量的类型: 若随机变量X的可能取值是有限个或可列个, 则称X为离散型随机变量. 反之,则称X为非离散型随机变量. 若随机变量X的可能取值“连续”(“不间断”),则称X 为 ...
- 如何将WORD表格转换成EXCEL表格
WORD和EXCEL都可以制作表格,但WORD表格与EXCEL表格之间有着很明显的差距,所以在办公中经常会需要将WORD转换成EXCEL,今天小编就教大家一招将WORD表格转换成EXCEL表格. 操作 ...
- vins-mono中的imu参数设置
na:加速度计的测量噪声 nw:陀螺仪的测量噪声 nba: randow walk noise随机游走噪声 nbw:randow walk noise随机游走噪声 ba:加速度计的偏差 bw:陀螺仪的 ...
- 腾讯云CDB回档失败浅析
Ⅰ.先看问题 先简单介绍下cdb的回档功能,回档分为极速.快速.普通,分别对应指定表.指定库.整个实例回档. 控制台报错回档任务执行失败 提示信息:rollback table failed:SQL ...
- Mac苹果电脑没有声音怎么办
有时候 Mac 从睡眠状态恢复之后没有声音,这是 Mac OS X 系统的一个 Bug.这是因为 Mac OS X 的核心音频守护进程「coreaudiod」出了问题,虽然简单的重启电脑就能解决,但是 ...