社区
驱动开发/核心开发
帖子详情
linux driver中调用open函数
我是Android开发者
2011-09-05 03:52:59
我有个问题困扰我很久,我想在driver中open “/dev/mmcblk0” ,然后调用lseek和read函数,去读取sd卡中某个区域的数据,可是我不知道头文件是什么?
有人用过吗?
...全文
614
18
打赏
收藏
linux driver中调用open函数
我有个问题困扰我很久,我想在driver中open “/dev/mmcblk0” ,然后调用lseek和read函数,去读取sd卡中某个区域的数据,可是我不知道头文件是什么? 有人用过吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
钱国正
2011-09-17
打赏
举报
回复
我现在也遇到这样的情况把应用程序改为驱动的形式,不知道怎么实现
winli_87
2011-09-16
打赏
举报
回复
以后就main 函数名 就知道该多包含哪些头文件了
jjlmonkey
2011-09-08
打赏
举报
回复
[Quote=引用 15 楼 zhangjie201412 的回复:]
引用 10 楼 jjlmonkey 的回复:
在kernel里 可以用
#include <linux/fs.h>
struct file *filp_open(const char *filename, int flags, int mode);
file->f_op->read()
file->f_op->write()
但是好像在driver加载过程中,tmpfs没有挂载……
[/Quote]
你是动态加载驱动的话,就可以。
我是Android开发者
2011-09-08
打赏
举报
回复
[Quote=引用 10 楼 jjlmonkey 的回复:]
在kernel里 可以用
#include <linux/fs.h>
struct file *filp_open(const char *filename, int flags, int mode);
file->f_op->read()
file->f_op->write()
但是好像在driver加载过程中,tmpfs没有挂载到/dev上,不一定能访问到/dev/block……
[/Quote]这样做真的可以吗?
我是Android开发者
2011-09-08
打赏
举报
回复
[Quote=引用 11 楼 xg1410 的回复:]
sys_open
[/Quote]求解释
woshi_ziyu
2011-09-07
打赏
举报
回复
[Quote=引用 10 楼 jjlmonkey 的回复:]
在kernel里 可以用
#include <linux/fs.h>
struct file *filp_open(const char *filename, int flags, int mode);
file->f_op->read()
file->f_op->write()
但是好像在driver加载过程中,tmpfs没有挂载到/dev上,不一定能访问到/dev/bloc……
[/Quote]
+++++++++++++
钱国正
2011-09-06
打赏
举报
回复
驱动中调用可以直接使用系统调用啊
leerobin83
2011-09-06
打赏
举报
回复
LZ,你直接调用mmc的read write函数或者mmc再写个接口给自己用不就行了
jason-xu
2011-09-06
打赏
举报
回复
驱动里不能调用的open等函数的,这个是应用层接口函数,其实你要读mmcblock的数据其实直接通过调用SD卡驱动的读写函数和lseek函数来实现
lr2131
2011-09-06
打赏
举报
回复
open("/dev/mmcblk0",O_RDWR);
xg1410
2011-09-06
打赏
举报
回复
sys_open
jjlmonkey
2011-09-06
打赏
举报
回复
在kernel里 可以用
#include <linux/fs.h>
struct file *filp_open(const char *filename, int flags, int mode);
file->f_op->read()
file->f_op->write()
但是好像在driver加载过程中,tmpfs没有挂载到/dev上,不一定能访问到/dev/block/mmcblk0.
jerrylim
2011-09-06
打赏
举报
回复
[Quote=引用 4 楼 zhangjie201412 的回复:]
引用 2 楼 cqbamboo 的回复:
我想应该是下面的3个头文件中的吧
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
我说的是在driver层 不是应用层
[/Quote]
驱动中file_operations结构体中的函数有些是不用自己实现的,因为内核已经帮我们实现好了。如open,close.你只要在应用程序中用open()或fopen()打开相应的设备文件就可以对设备进行其它操作了。
cqbamboo
2011-09-05
打赏
举报
回复
Linux driver 是在kernel层
而 open() 是系统调用,是提供给应用层的
我觉得,在driver中好像不能直接用open(), 估计得用另外的办法
我是Android开发者
2011-09-05
打赏
举报
回复
[Quote=引用 2 楼 cqbamboo 的回复:]
我想应该是下面的3个头文件中的吧
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
[/Quote]我说的是在driver层 不是应用层
我是Android开发者
2011-09-05
打赏
举报
回复
我说的是,在linux driver中,不是应用层~~~
cqbamboo
2011-09-05
打赏
举报
回复
我想应该是下面的3个头文件中的吧
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
yldyb
2011-09-05
打赏
举报
回复
你说的是fopen(), fseek(), fread(), fclose()吗? 头文件是"stdio.h"
Linux
tty驱动学习 - UART驱动的
open
操作
本文深入解析
Linux
系统
中
打开/dev/ttyS*设备的过程,从tty_fops的tty_
open
开始,通过get_tty_
driver
匹配uart驱动,接着执行uart_
open
。在uart_
open
中
,启动uart硬件设备,包括分配发送缓冲池,
调用
uart_port->ops->startup(即serial8250_startup)。serial8250_startup通过对硬件寄存器的读写初始化硬件,并进行
中
断处理注册,
中
断处理
函数
serial8250_interrupt则负责处理接收和发送数据的
中
断事件。
浅析2.6.24下char字符驱动tty注册和实际
调用
流程
本文解析了
Linux
2.6.24内核
中
字符设备TTY驱动注册过程及
调用
流程,详细介绍了从usb/class/cdc-acm.c
中
的acm_init
函数
开始,到tty_fops操作集的设置,直至最终
调用
自己的驱动acm_tty_
driver
的
open
函数
的过程。
四
linux
tty驱动
本文深入探讨了
Linux
TTY驱动的各个组成部分,包括tty结构体、系统初始化、tty初始化步骤、TTY操作以及线路规程操作。从tty_
driver
到tty_struct,再到tty_ldisc,详细解析了tty_
open
、tty_read和tty_write等关键
函数
。最后,文章提到了串口驱动在TTY系统
中
的作用和
调用
顺序。
Open
harmony I2C驱动程序分析
本文站在鸿蒙Harmony角度分析I2C驱动,对比
Linux
内核思想一致。详细剖析
Open
harmony I2C源码,包括通用的I2C Device
Driver
层、I2C Core层,需根据开发板调整的I2C Controller
Driver
层,还介绍了各层连接过程,如用户
调用
open
、ioctl等
函数
实现与硬件I2C设备的交互。
五
linux
串口驱动
本文详细介绍了
Linux
系统
中
的串口驱动,包括串口驱动结构体、串口端口结构体、操作
函数
集和uart_state的定义。还讨论了串口驱动的注册与注销流程,以及端口的注册与注销方法,如uart_configure_port。此外,文章阐述了串口对应的tty_
driver
操作
函数
集,特别是
open
方法uart_startup和写方法uart_start及其内部
调用
流程。
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章