- 博客(134)
- 资源 (2)
- 收藏
- 关注
转载 probe函数调用
最近看到linux的设备驱动模型,关于Kobject、Kset等还不是很清淅。看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用
2016-06-08 16:28:48
631
原创 tiny4412 lcd驱动问题记录
fbmem.c文件提供了framebuffer驱动程序的通用文件操作接口,自定义的framebuffer驱动程序可以使用fbmem.c中提供默认的接口。用EXPORT_SYMBOL导出到其他文件中应用s3c-fb.c是针对的三星开发板的lcd驱动文件接口(s3c_fb_probe等)。一下都是在友善tiny4412的linux3.5内核中移植lcd平台资源1.需要添加lcd的平台设
2016-06-08 16:27:54
1263
转载 ubuntu系統下配置nfs服務
#sudo apt-get install nfs-kernel-serverubuntu12.04中的已经是最新版本了,无需安装打开/etc/exports文件,在末尾加入:/home/kevin *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:/home/kevin:要共享的目录
2016-06-03 10:59:16
428
原创 spi为例的时序讲解
时序理解:SSn:这种电平表示一般为片选信号;从它的电平变低之后数据传输的时序看出。MISO:意思为主入从出,每一个类似的矩形方框,其实代表的是数据的电平高低(因为不知道电平的高低,所以把高电平、低电平都画出来了,中间的交表代表数据电平发生变化.方框中间的分界线前半部分方框代表数据准备阶段,等到电平变化,采集数据,为了避免干扰,所以电平变化之后,还需要保持一段时间,之所以有前后的电平保持阶段,
2016-04-28 18:23:53
1569
转载 spi时序的极性和相位
【背景】最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其对于SPI的设置为CPOL=1,CPHA=0,对于CPOL及CPHA的含义不了解,想要搞懂,这两个参数到底是什么意思,以及为何要这么设置。所以才去找了SPI的极性和相位的相关资料,整理如下。【SPI基础知识简介】设备与设备之间通过某种硬件接口通讯,目前存在很多
2016-04-28 17:13:27
1729
原创 网络通讯经常出现的问题
1:粘包:由于网络情况,出现前后两个包粘到一块。解决办法:制定好协议(包头,包尾,数据长度,校验);2:丢包:有时会出现丢包问题。解决办法:同步方式,发送完之后,给select设定监听超时时间,如果超时未收到回复,重新发送,尝试两三次,如果一直收不到,放弃发送。 异步方式,开启三个进程:一个线程专门发送,
2016-04-28 10:15:48
915
原创 多线程的理解
多线程可以并行执行,并且资源是共享的,所有线程的资源都在同一块内存区,对应的全局变量所有线程都是可见的。每个线程都操作同一块内存,都可以读写申请的全局变量多进程的话,不同的进程资源在不同的内存区,资源是独立的。每个进行都操作自己的内存块 可以说定义变量和之前没什么区别,不过可能会多个线程异步对他进行操作,那也就存在一些同步机制而已。 在没有多线程之前,如果想做并行计
2016-04-22 17:39:33
240
转载 s5pv210 jpeg硬件编码
做qt摄像头程序的时候发现yuv转rgb然后显示 效果很不好 所以考虑转jpg后显示 但是使用libjpeg发现格式怎么设置都不对 之前在Android上使用的函数拿过来都不能直接使用 所以还是研究硬编吧 这里使用的是广州斯道ICOOL210开发板 内核版本linux2.6.35前面的一些流程我就不上代码了标准的v4l2流程 格式设置为V4L2_PIX_FMT_YUYV即yuv422格
2016-04-21 17:17:52
648
原创 ubuntu下搭建qtcreator嵌入式qt編譯環境
一:sudo apt-get install libqt4-dev libqt4-dbg libqt4-gui libqt4-sql qt4-dev-tools qt4-doc qt4-designer qt4-qtconfig如果設置的libqt4-sql改爲libqt4-sql-mysql將會安裝mysql數據庫,否則安裝sqllite數據庫。如果在安裝的過程中出現失敗,看其提示,
2016-03-17 23:25:36
815
原创 qt多线程编程出现QPixmap: It is not safe to use pixmaps outside the GUI thread问题
不要在主线程以外使用QPixmap这种情况下, 可以在非GUI线程中发送信号, 由它来通知GUI发生变化即可, 让GUI线程调用QPixmap的方法~`
2016-03-16 09:58:52
2614
原创 ubuntu开启nfs服务,并搭建gdbserver
安装nfs软件#sudo apt-get install nfs-kernel-server-------------------------------------------打开/etc/exports文件,在末尾加入:/home/xgc *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定
2016-02-23 20:06:37
412
原创 需要学习的内容
1:live555的嵌入式linux移植,以及rtsp服务器搭建2:ffmpeg库的裁剪,以及音视频编解码,及转换,还有rtsp服务器搭建,及arm——linux系统下的移植。
2016-02-19 10:57:08
276
原创 usb mode waiting
nand启动运行superboot时,superboot会判断key1是否被按下,如果key1被按下则进入usb-mode
2016-01-19 16:43:26
672
转载 Qt USB通信--hidapi的使用
前面提到过Qt USB通信四种方案,这里详细介绍我使用的hidapi第三方库。 [html] view plaincopy从官网上下载到最新的压缩包hidapi-0.7.0.zip,解压后查看README.txt,里面介绍了三种Windows、Linux、MacOS三种平台下的编译方式: [html] view plaincopy--
2016-01-13 08:34:02
2965
原创 友善之臂开发板启动脚本配置以及fa-network-service后台服务对网络的配置
涉及的文件/etc/init.d/rcS :开机后会启动的脚本文件,里面会设置全局变量,挂载文件,创建目录和启动一些脚本和进程等/etc/init.d/ifconfig-eth0 :通过文件名就可以知道这个文件是设置网口eth0相关的mac地址,ip (eth0-setting中设置的)等/etc/eth0-setting ;这文件真正是设备网口相关信息的配置源文件,它会
2016-01-07 11:32:51
1784
原创 qt下信号发送机制
qt下信号发送机制:同一个信号,只有在上一次信号发送所执行的操作都执行完之后,第二次触发的信号才会被再次发送。例如我硬件连续发送两个数据,我触发两次信号,但是第一次信号发送出去之后,第二次信号是不会立马发送出去的,只有等第一次信号发送所要操作的任务完成之后。第二次的信号才会发送出去。
2015-12-21 10:34:44
2205
原创 arm+linux系统开机自动启动带串口qt应用程序遇到open_port error: Inappropriate ioctl for device
本人开发带串口的qt程序,但是到最后,挂到rsc启动脚本,(./应用程序 &)后台启动运行的时候运行到串口配置出现open_port error: Inappropriate ioctl for device; 但是我在命令行运行都是正常的,之后我改成前台启动(./应用程序),也可以正常运行。看到的朋友指点一下,为什么出现这种情况,正常情况应该后台自启动最好了???
2015-12-15 17:53:44
4200
1
原创 qt程序中hid问题记录
1:嵌入式下打开一个设备最好想好是那种方式打开(只读方式,读写方式,阻塞\非阻塞方式)。有一个项目,用到一个串口,两个hid方式的usb口,大体代码如下 FD_ZERO(&rd); FD_SET(cd_fd, &rd); printf("set cd fd\n"); FD_SET(rf_fd, &rd); printf("set rf
2015-12-12 17:39:52
1305
转载 自己修改linux系统启动画面
制作开机Logo方法一:Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,重新编译具体方法:#pngtopnm logo_linux_clut224.png > l
2015-12-01 11:03:12
1806
原创 嵌入式Linux下使用crond服务(定期删除过期文件)
crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。按照网上查找的资料执行时经常会碰到这种错误:crontab: chdir(/var/spool/cr
2015-11-28 16:24:20
553
转载 mfc下关于f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\occcont.cpp(926) 的奇怪问题
最近在配布一个程序到客户机上的时候,发现一个奇怪的问题。打开程序,无报错,但屏幕上没有任何显示,在任务服务器里,可以看到程序已经运行。在开发机上,却一点问题也没有。很郁闷的错误。开发环境是WindowsXP+VS2005,是使用MFC的基于Dialog的程序。客户机为HP的服务器,运行环境为Windows2003。原版系统,自动更新系统后,只安装了VC2005的运行环境Redistributa
2015-11-11 09:56:44
4007
3
转载 linux设备驱动之输入(input)子系统——核心层实现
/*************************************************************************************************************************************//* input.h */#ifndef _INPUT_H#define _INPUT_H/* *
2015-11-06 15:41:32
4113
转载 linux设备驱动之输入(input)子系统——数据结构与接口介绍
/****************************************************输入子系统****************************************************************//* * 输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸屏等动作发生时产生一个中断(或驱动通过t
2015-11-06 15:36:48
287
转载 输入子系统--event层分析
#####################################################################################################早前曾研究了一下输入子系统的原理,给人的感觉是输入子系统很复杂.但其实内核开发者在这方面已经做得很完善了,输入子系统虽然错综复杂,但是只要我们领会了输入子系统的一些设计思想后,我们要使用它并
2015-11-06 15:25:20
203
转载 Linux输入子系统:输入设备编程指南 -- input-programming.txt
基本事件类型(types)~~~~~~~~~~~~~~~~~~~~~最简单的事件类型是EV_KEY,它用于键盘和按钮,它通过以下函数上报给input子系统:[cpp] view plaincopyinput_report_key(struct input_dev *dev, int code, int valu
2015-11-06 15:20:19
283
转载 Linux输入子系统:事件的编码 -- event-codes.txt
输入系统协议用类型types和编码codecs来表示输入设备的值并用此来通知用户空间的应用程序。这篇文档对这些类型和编码进行了说明并且指出什么时候和如何使用这些类型和编码。 一个单一的硬件事件可以产生多个输入事件,每个输入事件包含一个单一数据项的新的数据值。EV_SYN是一个特别的事件类型,它用来把同一时刻产生的多个输入数据分割为多个数据包。在下面的描述中,术语事件(event)是指一个涵
2015-11-06 14:41:36
273
转载 Linux输入子系统:input.txt
1. 简介~~~~~~~~~~~~~~~这时一组驱动的集合,它们可以用于所有的基于linux的输入设备,虽然目前它只是用于USB输入设备,将来(2.5、2.6版本)它们将会被扩展并替换掉现存的多数输入系统,这就是为什么它们被放在drivers/input/目录下,而不是drivers/usb/。 输入设备驱动的核心是input模块,它需要在其他输入模块之前被加载--它是输入
2015-11-06 14:40:23
353
转载 Linux如何查看与/dev/input目录下的event对应的设备
1. /dev/input目录 /dev/input目录下的事件都是在驱动中调用input_register_device(struct input_dev *dev)产生的。如我的盒子的/dev/input目录的内容如下:[cpp] view plaincopycrw-rw---- root input 13,
2015-11-06 12:48:27
547
转载 linux驱动调试技巧:灌寄存器---------以mma7660为例
本文可以使用linux的cat echo命令直接设置mma7660的寄存器的值部分driver代码如下:static DEVICE_ATTR(mma7660_regs, S_IRUGO | S_IWUGO, show_7660regs, write_7660regs);//mma7660_regs对应着一个文件名字,show_7660regs, write_7660re
2015-11-06 11:21:14
376
原创 mma7660(gsensor)的hwmon驱动
gsensor驱动在系统中的层次如下图所示:Gsensor驱动(bma250为例子)" title="[转载]linux Gsensor驱动(bma250为例子)" style="margin:0px; padding:0px; border:0px; list-style:none">图中包含三个部分:hardware, driver, input:n
2015-11-06 11:13:25
1360
转载 Linux音频设备驱动
在Linux中,先后出现了音频设备的两种框架OSS和ALSA,本节将在介绍数字音频设备及音频设备硬件接口的基础上,展现OSS和ALSA驱动的结构。17.1~17.2节讲解了音频设备及PCM、IIS和AC97硬件接口。17.3节阐述了Linux OSS音频设备驱动的组成、mixer接口、dsp接口及用户空间编程方法。17.4节阐述了Linux ALSA音频设备驱动的组成、card和组件管
2015-11-04 14:10:44
793
转载 led子系统下应用层编程
看了这么多内核代码,终于要自己开始做驱动了.按照由易到难,由浅入深的顺序,就从LED开始.LED驱动可以说是hello world之后最简单的驱动模块了.如果自己写一个LED驱动那是很简单的,其实用linux内核中的leds子系统来做也是比较简单的,内核中的leds子系统是将led抽象成platform_device,并有leds_class.这样,在/sys/class/leds/目录下
2015-10-29 18:03:11
337
转载 usb读卡器
首先用 cat /proc/bus/input/devices 确定读卡器设备在系统里的注册信息cat /proc/bus/input/devicesI: Bus=0019 Vendor=0001 Product=0001 Version=0100N: Name="gpio-keys"P: Phys=gpio-keys/input0S: Sysfs=/
2015-10-28 17:05:04
1176
原创 libusb移植
进入libusb-1.0.8,交叉编译: mkdir install ./configure --build=i686-linux --host=arm-linux --prefix=`pwd`/install make make install说明一下:--build=i686-linux表示该软件在x86平台上被编译
2015-10-27 10:21:33
715
转载 linux系统修改启动logo的步骤
1:准备png图片;2:安装netpbmapt-get install netpbm3:制作 ppm图片保存一个png图片logo.png,按如下方式操作:#pngtopnm logo.png > linuxlogo.pnm# pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm# pnmtoplainp
2015-10-13 16:26:41
1471
原创 arm平台下linux系统时间设置
arm开发板上Linux下如何保存设置的系统时间?答:分以下步骤进行:(1)通过开发板控制台设置开发板的当前系统时间:date [MMDDhhmm[[CC]YY][.ss]]例如:date 010410462008(2)将系统时间写入RTC:hwclock -w读出检验一下,写入是否正确: hwclock -r(3)修改开发板根文件系统中的/etc/init
2015-10-12 11:39:29
782
转载 LCD驱动中pixclock的计算
在LCD驱动程序中,需要我们根据LCD datasheet来设置相应的参数,这些参数包括:pixclock,left_margin,right_margin,upper_margin,lower_margin,hsync_len,vsync_len,VBP,VFB,VSPW,HBP,HFP,HSPW。下图是典型的TFT LCD时序图: __u32 pixclock; /*像素时钟(
2015-10-09 11:02:14
296
原创 dm368内核编译问题
1:首先在内核文件夹当中选择编译配置文件arch/arm/configs下选则davinci_dm368_ipnc_defconfig_nand(nandflash启动),davinci_dm368_ipnc_defconfig_nfs(nfs文件系统启动)2:make menuconfig保存退出3:make ARCH=arm CROSS_COMPILE=arm_v5t_le-
2015-09-30 18:04:00
611
原创 usb摄像头的录像时注意事项
v4l2 抓取的帧为 YUV422packed,但 ffmpeg 中 mpeg4 编码的输入帧格式为 YUV420planar,所以最终录像成视频的时候,要将 YUV422packed转换成 YUV420planar
2015-09-25 16:39:58
493
ubuntu12.04及以上配置vim成c/c++,qtIDE开发环境
2015-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人