搜索
bottom↓
回复: 19

[求教]QT开发从应用层怎么看ARM内核驱动接口

[复制链接]

出0入0汤圆

发表于 2016-7-6 16:50:24 | 显示全部楼层 |阅读模式
实在是有点迷糊了,做过window下的QT开发串口啊,网络啊,这些都可以懂,

可是到ARM板子下的Linux 就迷糊了 概念没有转换过来

实现基本控件,显示还行,到板子的功能部件比如串口,SPI,IIC......之类的就迷糊了,我知道那都是有驱动了,关键是我打开那个驱动,却不知道这个驱动为我提供了哪些接口

大神们,你们如果拿到一份内核源代码,用相应的QT开发程序时,是怎么调试板子功能驱动了,支个招吧,谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2016-7-6 17:40:03 | 显示全部楼层
设备文件

出0入0汤圆

 楼主| 发表于 2016-7-6 17:54:12 | 显示全部楼层

能 再详细点说明吗?我有点不懂了

出0入0汤圆

发表于 2016-7-6 17:55:56 | 显示全部楼层
设备文件。

例如 SPI 可以这么干:
fd = open(“/dev/spi0”,O_RDWR);
然后各种 ioctl 配置一下速度,格式,超时等。
最后标准 write/read 操作
ret = write(fd,tx_buf, count);

出0入0汤圆

发表于 2016-7-6 18:02:29 | 显示全部楼层
linux中一切皆文件,设备也是一个文件。通常对一个接口的操作无非就是
1、调用open打开设备;
2、调用ioctl去设置接口的参数;
3、调用write发数据;
4、代用read接受数据。

根据这思路可以搜索到类似的代码:
http://www.th7.cn/system/lin/201503/96810.shtml

出0入0汤圆

 楼主| 发表于 2016-7-6 21:08:21 | 显示全部楼层
mangocity 发表于 2016-7-6 17:55
设备文件。

例如 SPI 可以这么干:

谢谢 我知道这个流程了

那怎么通过设备号找到对应的驱动程序呢?我先看看驱动程序

出0入0汤圆

 楼主| 发表于 2016-7-6 21:09:17 | 显示全部楼层
lanqilove 发表于 2016-7-6 18:02
linux中一切皆文件,设备也是一个文件。通常对一个接口的操作无非就是
1、调用open打开设备;
2、调用ioctl ...

怎么找到这个设备对应的驱动代码呢?它在源代码中哪里?我改怎么查找

出0入0汤圆

发表于 2016-7-7 14:34:52 来自手机 | 显示全部楼层
百度搜,哪里不会搜哪里

出0入0汤圆

发表于 2016-7-8 08:58:42 | 显示全部楼层
ywlzh 发表于 2016-7-6 21:09
怎么找到这个设备对应的驱动代码呢?它在源代码中哪里?我改怎么查找

看下韦东山的书第19章,比较好的写了这个问题。然后觉得还不够,read the xxx code

出0入0汤圆

 楼主| 发表于 2016-7-9 13:27:59 | 显示全部楼层
imjacob 发表于 2016-7-8 08:58
看下韦东山的书第19章,比较好的写了这个问题。然后觉得还不够,read the xxx code ...

好的 谢谢

出0入0汤圆

 楼主| 发表于 2016-7-9 13:29:47 | 显示全部楼层
first_blood 发表于 2016-7-7 14:34
百度搜,哪里不会搜哪里

呵  百度搜 和 向专业人士请教 哪个好一些

况且,百度也不是面面俱到

出0入0汤圆

发表于 2016-7-9 13:38:51 | 显示全部楼层
一般我都找例子,然后修改,比如安卓--串口 ,肯定有例子,太底层的驱动不需要懂的,还去看系统源码,那效率就低了。知道怎么设置参数 、 打开设备、   收   、发   , 完事啦,还有一种情况是系统裁剪了设备,需要注意就可以了。

出0入0汤圆

 楼主| 发表于 2016-7-9 13:46:43 | 显示全部楼层
luguobing 发表于 2016-7-9 13:38
一般我都找例子,然后修改,比如安卓--串口 ,肯定有例子,太底层的驱动不需要懂的,还去看系统源码,那效 ...

恩 昨天试了一下,对这板子的功能部件的应用例程,QT也能搞

但以前学过字符设备驱动,知道是那么回事,看不到对应的源码,心里总是有点芥蒂。

做过几年单片机开发,不让我看驱动,那就一个心酸

出0入0汤圆

发表于 2016-7-9 14:15:00 | 显示全部楼层
ywlzh 发表于 2016-7-9 13:46
恩 昨天试了一下,对这板子的功能部件的应用例程,QT也能搞

但以前学过字符设备驱动,知道是那么回事, ...

额  难道你还要重新写驱动才开心,下次要用网络难道你要把所有的协议都弄懂?  有现成了就用,速度  速度开发才是正道!

出0入0汤圆

 楼主| 发表于 2016-7-9 14:21:03 | 显示全部楼层
luguobing 发表于 2016-7-9 14:15
额  难道你还要重新写驱动才开心,下次要用网络难道你要把所有的协议都弄懂?  有现成了就用,速度  速度 ...

恩  就看看他们驱动是怎么写的,至少要看懂吧,真有兴趣可以自己写写驱动呀

出0入0汤圆

发表于 2016-7-9 16:48:34 | 显示全部楼层
本帖最后由 NJ8888 于 2016-7-9 16:58 编辑

最省事办法是mmap,前提你有详细数据手册,执行效率比普通写驱动高好多。比四楼描述方法快。曾经SPI发送5字节,mmap方式消耗时间只有ioctl方式的1/20

出0入0汤圆

 楼主| 发表于 2016-7-9 20:25:34 | 显示全部楼层
NJ8888 发表于 2016-7-9 16:48
最省事办法是mmap,前提你有详细数据手册,执行效率比普通写驱动高好多。比四楼描述方法快。曾经SPI发送5字 ...

你这个方法是不是跳过驱动层,直接配置寄存器?

直接在应用层获取寄存器里的数据?

出0入0汤圆

发表于 2016-7-9 20:28:45 | 显示全部楼层
ywlzh 发表于 2016-7-9 20:25
你这个方法是不是跳过驱动层,直接配置寄存器?

直接在应用层获取寄存器里的数据? ...

对,跳过驱动,省了应用到内核以及内核到应用的两次数据拷贝

出0入0汤圆

 楼主| 发表于 2016-7-9 20:34:45 | 显示全部楼层
NJ8888 发表于 2016-7-9 20:28
对,跳过驱动,省了应用到内核以及内核到应用的两次数据拷贝

恩 谢谢 现在还没有达到那个高度,只能远观 还是想先看看驱动,一看源代码那么多,就是不知道那些个配置好的驱动源代码在哪

出0入0汤圆

发表于 2016-7-9 20:44:45 | 显示全部楼层
ywlzh 发表于 2016-7-9 20:34
恩 谢谢 现在还没有达到那个高度,只能远观 还是想先看看驱动,一看源代码那么多,就是不知道那些个配置 ...

我也不会写驱动,所以耍花招用mmap直接访问,我还把linux时钟片的中断关过导致系统卡死在我的程序中换不出去,哈哈
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 05:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表