linux内核及驱动开发
章之京
不管你经历了什么,那都是在收获与成长,也许过程是喜怒悲哀。
展开
-
利用ov511的webeye v2000摄像头实现YUV420P格式转RGB24格式来抓取一张图片
最近因为做了国嵌的那个高级项目里的基于H.264的视频采集项目和动态图像检测项目。在充分理解了利用V4L2进行图像采集的过程后,又因为老师的一个要求,希望我能够完成一个小的动态图像检测的项目(要求要移植到arm 9开发板上去),以便能够推荐我到深圳那边的一家安防公司干活,又由于我对嵌入式的热爱和对图像处理的固执。我决定进行自己的图像采集实验。原本老师的要求是在7月中旬的时候要求我能够做出来的,但是...转载 2012-08-02 18:31:39 · 1157 阅读 · 0 评论 -
九轴传感器之数据处理篇
关于九轴传感器数据的处理原创 2018-01-10 19:57:37 · 8940 阅读 · 9 评论 -
九轴传感器之驱动篇
九轴传感器芯片:BOSCH的BMX055原创 2018-01-10 19:56:19 · 2236 阅读 · 0 评论 -
Mini AHRS 姿态解算说明
本文旨在讲解以下内容 1.加速度 2.陀螺仪 3.磁力计0 序言一直想写篇文章关于姿态解算原理的,使用尽量通俗的语句说明如何从加速度计和陀螺仪的数据,融合得到载体的姿态角。无奈自己的水平有限,一直搁置。 淡泊以明志,宁静以致远.人总是要逼自己做些事,才过得心安理得。那就拿点时间把这方面的资料整合一下吧。这篇文章的大部分内容都不是本人原创的,感谢网络上无私奉献的人. ...转载 2018-01-05 10:17:09 · 3125 阅读 · 0 评论 -
嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件
pulseaudio基于a2dp音频架构,其使用流程如下: 首先需要一直bluez5及pulseaudio,此处关于一直pulseaudio详见其他博客。 配置使用流程: 1.开启蓝牙设备//此处与后续的bluetoothctl命令中的power on相对应,没有开启的话,bluetoothctl会报错.root@imx6qsabresd:~#rfkill unblock bluetooth原创 2016-12-19 20:01:05 · 20739 阅读 · 38 评论 -
蓝牙设备上电提示Failed to set power on: org.bluez.Error.Blocked
[NEW] Controller 74:2F:68:6A:37:44 moon-0 [default] [NEW] Device 00:07:61:76:8E:78 Logitech diNovo Edge Agent registered [bluetooth]# list Controller 74:2F:68:6A:37:44 moon-0 [default] [bluetooth]原创 2016-12-19 11:29:40 · 6467 阅读 · 0 评论 -
IMX6Q上使用NFS文件系统
NFS服务器IP地址:10.23.6.196 开发板IP地址:10.23.6.100 网关:10.23.6.255setenv ipaddr 10.23.6.100 setenv serverip 10.23.6.196 setenv ethaddr 00:00:00:00:00:03 setenv nfsroot /home/pengrui/nfs setenv gateway 10.原创 2016-12-19 11:02:35 · 1318 阅读 · 0 评论 -
pulseaudio使用过程中遇到的问题
W: [pulseaudio] main.c: This program is not intended to be run as root (unless –system is specified). E: [pulseaudio] core-util.c: Home directory not accessible: Permission denied./pulseaudio: line 20原创 2016-12-16 11:58:20 · 20490 阅读 · 20 评论 -
关于音频设备切换
首先总结下这段时间接触音频,音频在linux下分三种结构,HSP,ALSA和A2DP。HSP(handset profile)是单声道的,ALSA和A2DP都是双声道,但A2DP比ALSA更容易控制。pavucontrol:Ubuntu Unity环境提供的音频控制有很多需要改进的地方。如果你从不使用USB音频设备,也不想从Skype这样的应用切换到另一个录音设备的话,那没问题。但还是推荐pavuc原创 2016-12-15 23:02:55 · 2359 阅读 · 2 评论 -
九轴传感器之测试篇
关于九轴传感器的数据测试处理原创 2018-01-10 19:58:31 · 3361 阅读 · 2 评论 -
bootloader中的中断服务程序的相关解释
前一段时间在学习bootloader代码时,就是不明白bootloader的中断服务怎么跳转过去的,到网上查了半天,还是没能弄明白,只好自己动手了,下面是我对中断服务程序的理解,可能有点偏差:...原创 2012-06-22 12:00:00 · 1705 阅读 · 0 评论 -
S3C2440系统中断
1.1 S3C2440系统中断CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式来对硬件进行管理监视:l 查询方式:CPU不停的去查询每一个硬件的当前状态,根据硬件的状态决定处理与否。好比是工厂里的检查员,不停的检查各个岗位工作状态,发现情况及时处理。这种方式实现起来简单,通常用在只有少量外设硬件的系...转载 2012-06-22 18:12:51 · 658 阅读 · 0 评论 -
linux usb驱动框架 2
接下来的工作是向系统注册一些以后会用的的信息。首先我们来说明一下usb_set_intfdata(),他向内核注册一个data,这个data的结构可以是任意的,这段程序向内核注册了一个usb_skel结构,就是我们刚刚看到的被初始化的那个,这个data可以在以后用usb_get_intfdata来得到。 usb_set_intfdata(interface, dev); retval ...转载 2012-08-02 16:41:10 · 975 阅读 · 0 评论 -
linux usb驱动框架 1
初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。 事实上,Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一...转载 2012-08-02 16:39:59 · 453 阅读 · 0 评论 -
kzalloc 函数详解
用kzalloc申请内存的时候,效果等同于先是用kmalloc()申请空间,然后用memset()来初始化,所有申请的元素都被初始化为0./** * kzalloc - allocate memory. The memory is set to zero. * @size: how many bytes of memory are required. * @flags...转载 2012-08-01 15:29:52 · 1432 阅读 · 0 评论 -
mini2440 dm9000 网卡驱动详解 3 (稍带改动)
*dm9000_get_drvinfo() 该函数去的设备的基本信息(设备名,版本,总线名)传给ethtool_drvinfo结构体变量。代码清单如下:*dm9000_get_drvinfo() 该函数去的设备的基本信息(设备名,版本,总线名)传给ethtool_drvinfo结构体变量。代码清单如下:static void dm9000_get_drvinfo(...转载 2012-08-01 09:22:06 · 671 阅读 · 0 评论 -
mini2440 dm9000 网卡驱动详解 2 (稍有改动,其中黄色字体为改动处)
3. platform_driver的remove, suspend和resume的实现remove函数的功能是把设备从内核中移除,释放内存区域。该函数在卸载模块时被调用。代码清单如下:static int __devexit dm9000_drv_remove(struct platform_device *pdev) { struct net_de...转载 2012-08-01 09:16:35 · 718 阅读 · 0 评论 -
mini2440 dm9000 网卡驱动详解 1
虽然Linux驱动程序应该是和具体的硬件平台分离的,但是为了更好的理解DM9000的驱动程序,这里还是结合一下Mini2440开发板,这样也可以更好的体会如何实现驱动和平台分离。本文分成以下几个部分:一、Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系。二、两个重要的结构体介绍:sk_buff和net_device三、具体代码分析...转载 2012-07-29 08:50:47 · 1008 阅读 · 0 评论 -
2440 dm9000 到底咋确定地址端口和数据端口
下面是大侠给我的解释:“DM9000对外来说只有两个端口——地址口和数据口,地址口用于输入内部寄存器的地址,而数据口则完成对某一寄存器的读写。DM9000的CMD引脚用来区分这两个端口,当CMD引脚为0时,DM9000的数据线上传输的是寄存器地址,当CMD引脚为1时,传输的是读写数据。我们把DM9000的AEN接到s3c2440的nGCS4引脚上,则DM9000的端口基址为0x20000300...转载 2012-07-29 08:28:26 · 1989 阅读 · 1 评论 -
fasync(在内核发生某个事情时向应用发信号, 应用需要把那个设备用fcntl改一下。)
fasync的解释fasync(fd,file,on) 当我们呼叫fcntl()系统呼叫,并使用F_SETFL命令来设定档案的参数时,VFS就会呼叫fasync()这个函式,而当读写档案的动作完成时,行程会收到SIGIO的讯息。=============================================================================...转载 2012-07-17 17:17:01 · 1173 阅读 · 0 评论 -
交叉编译bluez-5.3及解决No default controller available文件解决
Bluez作为当前最成熟的开源蓝牙协议栈,在Linux的各大发行版中已经得到了广泛的应用。在桌面环境下,使用Bluez应该已经没有太大的问题,本文的主要目的是介绍在嵌入式平台上,搭建和配置Bluez的各个Profile运行所需做的工作,讨论可能遇到的问题,介绍一些工具的使用和工作原理。因为本人的能力和测试时间有限,可能下文中有些理解、分析不一定准确,欢迎联系指正。 1 相关说明 1.1 bl原创 2016-12-14 17:30:24 · 8895 阅读 · 8 评论 -
嵌入式linux开发板上增加rfkill命令
很多计算机系统包含无线电传输,其中包括Wi-Fi、蓝牙和3G设备。这些设备消耗电源,在不使用这些设备时是一种浪费。 RFKill是Linux内核中的一个子系统,它可提供一个界面,在此界面中可查询、激活并取消激活计算机系统中的无线电传输。当取消激活传输时,可使其处于可被软件重新激活的状态(软锁定)或者将其放在软件无法重新激活的位置(硬锁定)。 RFKill核为子系统提供应用程序编程界面原创 2016-12-14 14:23:11 · 5765 阅读 · 4 评论 -
IMX6Q上蓝牙设备测试
目前,蓝牙技术已经比较成熟,特别是基于手机和PC得蓝牙文件传输。 本文主要讲述基于嵌入式arm linux的蓝牙文件传输。 现行2.6.x的linux内核都已经集成了bluez蓝牙驱动,对于2.4版本内核的需要到bluez官方网站下载并安装bluez蓝牙驱动。 本为基于2.6版本的内核讲述。对于2.4下载bluez后安装即可。有了bluez蓝牙驱动还需要安装bluez-libs库和bluez-原创 2016-11-23 22:46:55 · 3313 阅读 · 2 评论 -
Linux设备驱动开发详解总结(二)之并发与竞争
转载地址:http://blog.csdn.net/lwj103862095/article/details/8548500 Linux设备驱动中必须解决一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,在当今的Linux内核中,支持SMP与内核抢占的环境下,更是充满了并发与竞态。幸运的是,Linux 提供了多钟解决竞态问题的方式,这些方式适合不同的应用场景。例如:中断屏蔽、原子转载 2016-04-06 10:42:10 · 542 阅读 · 0 评论 -
mini2440上烧写Angstrom(GTK)版本内核
前天一不小心,将自己的GT2440开发板烧写,而且还是CPU烧了。于是只能从网上回收了一块二手的mini2440开发板(SDRAM:64M,NANDFLASH:64M,LCD:N35),想起以前在google上看到过的一篇博客《mini2440上运行Angstrom(GTK)》,于是想试试,就开始翻墙上谷歌,把那些资源下载下来了,然后开始烧写尝试,中间遇到各种问题,而且还没资料,不过最终还是解决了。原创 2015-12-09 13:08:09 · 1590 阅读 · 0 评论 -
opensuse13.2上nfs无法使用
转载:http://bbs.51cto.com/thread-1134848-1.html 问题描述: 板子设置挂载nfs文件系统启动,无法启动 ,错误提示见上图。 设置nfs的步骤: 1 vi /etc/exports 加入 /home/...../filesys 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)2转载 2015-12-05 19:31:03 · 967 阅读 · 0 评论 -
ubuntu下修改yaffs2文件系统镜像文件
原地址:http://www.tjworld.net/wiki/Linux/Kernel/SimulateNandMtdDevice 对原博客的修改:将写mtd设备命令:sudo dd if=system.img of=/dev/mtdblock0 改成sudo nandwrite -a -o /dev/mtd0 system.imgSimulate NAND MTD DeviceWhen wor转载 2015-10-28 14:30:27 · 2813 阅读 · 0 评论 -
深层解决cramfs文件系统不支持nandflash坏块的解决办法
今日在对公司的产品调试时,发现如果nandflash有坏块在cramfs文件系统分区,那么linux系统无法启动,提示如下信息: uncorrectable error : uncorrectable error : end_request: I/O error, dev mtdblock0, sector 512 Buffer I/O error on device mtdblock0原创 2015-10-10 11:50:04 · 3442 阅读 · 0 评论 -
RS232,RS485波形分析
经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况。其实最有效的调试方法是用示波器观察收发数据的波形。通过观察波形可以确定以下情况:是否有数据接收或发送;数据是否正确;波特率是否正确;一、串行数据的格式异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5、6、7、8位,停止位可以是1、1.5、2位。起始位是一个值为0的位,所以对...转载 2015-09-02 19:14:22 · 21033 阅读 · 0 评论 -
linux中注册共享中断
共享中断,意思是多个中断共享一个中断号,那么这就意味着,多个设备中断发生时,都会产生一个同样的中断信号。那么怎么在linux下进行检测和处理呢?同时需要注意哪些事项? 1、首先,注册共享中断时,request_irq()函数中的flags标志必须指定为IRQF_SHARED; 2、request_irq()参数中dev_id必须唯一; 3、共享中断的处理程序中,不能使用disable_irq(原创 2015-08-29 18:35:54 · 1993 阅读 · 0 评论 -
基于at91sam9260芯片在u-boot写添加看门狗控制命令
基于at91sam9260芯片在u-boot下添加wdt on/off控制命令,需要进行如下修改: 1、在common目录下增加cmd_wdt.c文件,代码如下:/<span style="font-size:18px;">* * Driver for NAND support, Rick Bronson * borrowed heavily from:...原创 2015-08-28 20:14:42 · 1467 阅读 · 0 评论 -
linux中断下半部的处理
转载:http://www.cnblogs.com/wang_yb/archive/2013/04/23/3037268.html 1. 中断下半部处理 那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部? 这里有一些经验可供借鉴: 如果一个任务对时间十分敏感,将其放在上半部 如果一个任务和硬件有关,将其放在上半部 如果一个任务要保证不转载 2016-04-06 15:53:50 · 1865 阅读 · 0 评论 -
linux下烧写atmel芯片
linux下安装sam-ba驱动烧写atmel芯片 Install :You just have to unzip the ‘sam-ba_cdc_x.y.linux_zz.zip’ archive in a folder of your choice.Note : packages needed : tcl8.4 tclx8.4 tk8.4.USB CDC Serial driver moun原创 2016-05-09 14:19:55 · 1077 阅读 · 0 评论 -
IMX6添加PCI接口的AR9580无线网卡驱动支持
因内核3.0不支持9300系列网卡,需要修改内核,比较麻烦。故直接使用compat开源驱动代码,因为最新的4.1, 4.2版本有bug编译运行后出现问题,目前使用的时4.0.1-1版本backports-4.0.1-1。1、Linux内核编译及安装1.1 配置linux内核make imx6_defconfig 1.2 选择General setup->Kernel->user space rela原创 2016-05-18 19:44:12 · 3781 阅读 · 0 评论 -
IMX6Q上移植AR3K蓝牙驱动
我的开发板配置: 开发板硬件:IMX6Q 蓝牙模块: 基于MINI PCI-E接口的 ATHEROS AR5B225 300M无线+4.0蓝牙 二合一半高网卡模块(AR3K系列) linux内核:3.14.52(主要是我的开发板自带内核带了很多工具,如果换底版本的内核的话,会比较麻烦,所以就是用了其自带核) 编译工具:arm-linux-gcc:4.9.2 我把所有的压缩包都放在了/opt原创 2016-11-23 22:38:37 · 2147 阅读 · 0 评论 -
RTl8188EUS无线网卡驱动编译,支持master模式
基于rtl8188eus无线网卡驱动,提供两个版本,分别是支持linux3.10以下版本及支持linux3.10以上版本,此驱动可使用hostapd软件实现AP共享,具体使用步骤如下: 基于RTL8188EUS无线网卡的驱动程序,此驱动可工作于master模式,基于linux 3.10版本以上内核可测试通过。 首先提供下两个版本驱动的git资源地址: linux3.10以下版本:https:/原创 2016-09-22 18:41:52 · 10037 阅读 · 7 评论 -
openwrt下web方式升级固件提示文件格式错误
最近公司产品使用openwrt,其中在使用openwrt的web方式升级内核和文件系统时(即sysupgrade固件)时,发现校验文件时提示The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform.于原创 2016-09-08 15:54:49 · 11496 阅读 · 0 评论 -
基于QT实现对网络摄像头数据的显示
其实一直有一个想法,就是设计一个远程视频监控软件,目前自己手中有的硬件包括:mini2440开发板,韦东山老师的摄像头模块ov7740,当然这款摄像头提供了基于mini2440下的读取及显示功能,但是没有提供网络显示功能,为此,我想增加这项功能,有这个想法,也是来自于mjpg-streamer项目的设计思路。原创 2016-08-01 16:49:30 · 11644 阅读 · 0 评论 -
嵌入式开发板上基于RTL8188EUS搭建AP
最近发现,很多文章提及RTL8188EUS无法搭建AP,于是实际测试了下,发现可以,以下记录此次构建过程 博客地址:http://blog.csdn.net/pengrui18/article/details/52625822原创 2016-05-26 13:46:10 · 3326 阅读 · 2 评论 -
mini2440NFS启动,VFS: Unable to mount root fs via NFS, trying floppy.
NFS服务器基于opensuse13.2 nfs-kernel-server 1.3.0-4.4.1版本,启动时提是如下错误:U-Boot 1.3.2-moko12 (Apr 4 2009 - 14:15:08) I2C: ready原创 2016-05-20 00:05:12 · 5970 阅读 · 0 评论