hihi66 发表于 2013-1-12 09:47:18

嵌入式linux中驱动和Qt如何用在一起

嵌入式linux中驱动的使用在QT中,驱动的使用教程都是编写一个小程序,但那都是命令型。如何在Qt中使用自己写的驱动?还有自己写过windows的qt串口,arm里的串口变个头文件就行了吗?

hihi66 发表于 2013-1-12 10:09:59

怎么没有一个回一下呢

hihi66 发表于 2013-1-12 11:10:27

难道没有人关心,从底层开发到上层开发的过程吗。

tiancaigao7 发表于 2013-1-12 13:43:38

现在大多数所谓的Linux的嵌入式开发其实都是调用API去做开发,很少有人关注BSP层面应该如何用了,你最好去看看Linux的BSP部分应该怎么写。可能比在这里问强得多。wince的BSP部分的驱动编写很容易,没有弄过linux的。

Lonsn2010 发表于 2013-1-12 15:51:06

QT中调用驱动也没有什么特殊的,还是像普通linux程序调驱动open/close一样的。

wangzheyu 发表于 2013-1-12 16:22:36

hihi66 发表于 2013-1-12 11:10 static/image/common/back.gif
难道没有人关心,从底层开发到上层开发的过程吗。

我的理解是和QT没啥关系吧,有这个驱动或者模块,加载或者调用就行了,QT可以理解为一个很高级,加强了C++某些特性的库而已,本身和驱动开发没啥关系,你的嵌入式linux有某个驱动,就能在linux下访问了,没有,就要按照驱动开发的方式加到你的内核当中。

ksws0482846 发表于 2013-1-12 16:35:03

open -> ioctrl / read / write -> close

ksws0482846 发表于 2013-1-12 16:35:46

驱动必须实现字符设备或块设备等

hihi66 发表于 2013-1-12 17:01:23

ksws0482846 发表于 2013-1-12 16:35 static/image/common/back.gif
驱动必须实现字符设备或块设备等

我说的是在Qt中如何使用自己写的驱动啊,怎么加到QT里

hihi66 发表于 2013-1-12 17:05:21

wangzheyu 发表于 2013-1-12 16:22 static/image/common/back.gif
我的理解是和QT没啥关系吧,有这个驱动或者模块,加载或者调用就行了,QT可以理解为一个很高级,加强了C+ ...

我想问的是一般在Qt只是研究图形的,学驱动是只是说驱动怎么编,要是写一个流水灯的驱动,用一个图形界面控制。怎么把操作驱动的代码加到qt里。

NJ8888 发表于 2013-1-12 17:14:58

hihi66 发表于 2013-1-12 17:05 static/image/common/back.gif
我想问的是一般在Qt只是研究图形的,学驱动是只是说驱动怎么编,要是写一个流水灯的驱动,用一个图形界面 ...

QT里面用open打开LED的驱动文件,用ioctl这种办法,不过还有更高效的办法,因为你问的问题比较浅,估计高级办法你会继续加问,所以我就不说了,我其实也只刚用3个月,现在已经开始做实用程序了。QT无非是做界面方便,然后有个叫槽的机制使程序能像WINDOWS那样事件驱动

ksws0482846 发表于 2013-1-12 17:17:21

如果你的意思是图形界面控制流水灯,那就是驱动实现控制方式,qt与驱动交流。就是我上面说的。
应用层是无法直接操作硬件的

NJ8888 发表于 2013-1-12 17:20:12

ksws0482846 发表于 2013-1-12 17:17 static/image/common/back.gif
如果你的意思是图形界面控制流水灯,那就是驱动实现控制方式,qt与驱动交流。就是我上面说的。
应用层是无 ...

mmap是可以的,我用这方式,应用层操作任意6410的寄存器

ksws0482846 发表于 2013-1-12 17:31:55

NJ8888 发表于 2013-1-12 17:20 static/image/common/back.gif
mmap是可以的,我用这方式,应用层操作任意6410的寄存器

mmap参数是虚拟地址还是物理地址,是直接可以讲物理地址映射到用户空间吗?
我只是在学习内核,所以应用程序方面也没怎么了解

NJ8888 发表于 2013-1-12 17:57:25

本帖最后由 NJ8888 于 2013-1-12 18:02 编辑

ksws0482846 发表于 2013-1-12 17:31 static/image/common/back.gif
mmap参数是虚拟地址还是物理地址,是直接可以讲物理地址映射到用户空间吗?
我只是在学习内核,所以应用 ...

fbb=open("/dev/mem",O_RDWR | O_SYNC);
map_base =(char *)mmap(0,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fbb,0x7f008000);
virt_addr2 = map_base+0x824;
GLEDstate=*(volatile unsigned int *)(virt_addr2);
while(1)

        GLEDstate^=0x00000002;
        *(volatile unsigned int *)(virt_addr2)=GLEDstate;

上面示范了mmap在GPIO上的使用,无论内核还是应用都一样写        ,为了说明重点,还有初始化GPIO部分没添加,0x7f008000是6410 GPIO的物理基地址

hihi66 发表于 2013-1-12 18:28:58

说的意思是,qt里加上linux的些头文件,就能用想用命令形式一样操作是吗

hihi66 发表于 2013-1-12 18:49:43

mmap映射这种方法很方便啊,像裸机一样,有没有什么弊端啊

NJ8888 发表于 2013-1-12 18:58:33

本帖最后由 NJ8888 于 2013-1-12 19:03 编辑

hihi66 发表于 2013-1-12 18:49 static/image/common/back.gif
mmap映射这种方法很方便啊,像裸机一样,有没有什么弊端啊

乱用的话啥都可能发生,比如多个线程用相同资源,总之你在应用层有了绝对控制权,可以把LINUX时钟片换成其他值,串口也换成其他非标波特(我就把串口换成1.58Mbaud,为了与1.5625Mbaud的DSP通讯),你可随时写看门狗,随时软件复位,还可改写显示控制器使之花屏并恢复(想想看一个应用程序一会花屏又恢复,是不是很奇妙)。。。。。。。。。。。。总之想干啥就干啥,完全无视OS屏障,又能享受OS带来的好处,比如完整的网络协议,等等---------------------这是我三个月自学期间的最大收获,据我所查,目前中文网络上没有其他人像我这样玩弄LINUX,有的话可能是我的帖子,呵呵{:lol:}

NJ8888 发表于 2013-1-12 19:01:38

hihi66 发表于 2013-1-12 18:28 static/image/common/back.gif
说的意思是,qt里加上linux的些头文件,就能用想用命令形式一样操作是吗

QT有自己进一步封装的头文件,可用方便应用开发,当然也可利用其他函数,LINUX代码开放了,想用那个拷进来

bbs2009 发表于 2013-1-13 13:06:31

titer1 发表于 2013-1-13 20:52:52

NJ8888 发表于 2013-1-12 17:57
fbb=open("/dev/mem",O_RDWR | O_SYNC);
map_base =(char *)mmap(0,4096,PROT_READ|PROT_WRITE,MAP_SHARE ...

学习了,有独创

expressme 发表于 2013-2-22 07:26:46

Mark Linux mmap
页: [1]
查看完整版本: 嵌入式linux中驱动和Qt如何用在一起