
Linux Driver......
文章平均质量分 52
Marvin_wu
这个作者很懒,什么都没留下…
展开
-
Linux 内核链表使用举例
链表数据结构的定义很简洁:struct list_head { struct list_head *next, *prev;}; list_head结构包含两个指向list_head结构的指针prev和next,该内核链表具备双链表功能,通常它都组织成双循环链表,这里的list_head没有数据域。在Linux内核链表中,不是在链表结构中包含数据,而是在数据结构中包含链表节点。原创 2014-06-20 17:20:00 · 1485 阅读 · 0 评论 -
Linux 信号量
信号量的使用主要是用来保护转载 2014-05-01 20:47:24 · 879 阅读 · 0 评论 -
网页浏览远程网络视频
平台:MINI2440系统:Linux-2.6.32.2开发:Ubuntu摄像头:USB摄像头浏览器:谷歌浏览器1.编译mjpeg-stream:源码下载地址:http://download.youkuaiyun.com/detail/wu20093346/7848285解压mjpg-streamer.zip,进入文件夹mjpg-streamer:# make CC=a原创 2014-09-01 00:49:35 · 1891 阅读 · 0 评论 -
DM9000 网卡驱动程序分析
平台:MINI2440系统:Linux-2.6.36.2mach-s3c2410/include/mach/map.h:#define S3C2410_CS4 (0x20000000) //AEN接nGCS4,BANK4mach-mini2440.c:#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300) //TXD原创 2014-08-26 13:19:27 · 1178 阅读 · 0 评论 -
Install ncurses(ncurses-devel) and try again
新安装的Ubuntu系统编译时使用make menuconfig命令出现错误:Install ncurses(ncurses-devel) and try again解决:执行 sudo apt-get install libncurses5-dev 命令原创 2014-09-12 11:38:34 · 1624 阅读 · 0 评论 -
Linux USB gadget 网络体验
平台:Mini2440系统:linux-2.6.32.2主机:Windows配置USB gadget功能中的usbnet时,主要工作是加载g_ether.ko模块,但是试了好几次插到电脑上,都是没反应,windows识别不到设备,查阅资料后才知道是USB接口的上拉问题,mini2440通过GPC5来上拉USB接口,只有这样主机才能识别到设备并提示安装设备。整合了资料后解决了问题,下面是原创 2014-09-14 18:16:17 · 2626 阅读 · 0 评论 -
DM8168 屏蔽 PCIe
DM8168新板在没有做PCI接口的情况下,可以把PCI模块注释,直接尝试:make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm menuconfig在BUS Support下注释掉PCI Support,但是DM8168自动加载模块的时候发生了冲突会出现fatal error:类似 pvrsrvkm: Unknown symbol p原创 2014-10-21 22:02:58 · 1586 阅读 · 0 评论 -
DM8168 自动登录root用户
①指定连接:# ln -s /bin/busybox /sbin/getty②修改/etc/inittab文件:# vi /etc/inittabS:2345:respawn:/sbin/getty 115200 ttyO2 -n -l /bin/autologin③创建自动登录shell:# vi /bin/autologin#!/bin/shexec /bi原创 2014-11-01 14:00:05 · 1602 阅读 · 0 评论 -
DM8168 开机自动运行程序
①home目录创建自动运行的shell:# vi test.sh②将test.sh拷贝到/home/root下:# mov test.sh /home/root③修改Profile文件:# vi /etc/profile④结尾添加:cd /home/rootsh test.sh原创 2014-11-01 17:15:41 · 1221 阅读 · 0 评论 -
DM8168 PWM驱动(寄存器设置)
DM8168的PWM是通过TIMx_OUT引脚输出的,需要对Timer进行配置才能有波形输出。①对Timer的时钟进行配置,确保Timer能正常工作。②设置寄存器之前关闭Timer。③设置定时溢出后的装载值。④设置比较值,该值决定PWM占空比。⑤设置internal counter值。⑥启动Timer。启动DM8168过后,停在U-boot界面,使用U-boot的内存读原创 2014-06-11 19:59:29 · 1897 阅读 · 1 评论 -
DM8168 PWM驱动与测试程序
昨天把DM8168的Timer设置给摸了一遍,为写PWM的底层驱动做好了准备,现在就要进入主题了。dm8168_pwm.c:#include #include #include #include /* copy_to_user,copy_from_user */#include #include #include static struct class *pwm_cla原创 2014-06-12 14:53:13 · 2354 阅读 · 1 评论 -
Virtualbox 安装Ubuntu 无法全屏 解决办法
Virtualbox 安装Ubuntu后无法全屏解决:需要Virtualbox的增强功能:点击Virtualbox窗口上的《设备》按钮,选择《安装增强功能》,如下图:之后桌面上会出现一个光驱图标,右击选择 Open with Autorun Prompt ,然后输入权限密码,开始安装,结束后restart。或者是 cd /medi原创 2014-03-21 22:48:11 · 13766 阅读 · 1 评论 -
DM8168 GPIO驱动与测试程序
本次测试针对GPIO1进行,挑选了GP1[31],引脚的复用默认的就是GPIO还是老规矩,贴上driver.c,Makefile,test.c:dm8168_gpio.c:#include #include #include #include /* copy_to_user,copy_from_user */#include #include #include st原创 2014-06-13 23:06:53 · 2418 阅读 · 0 评论 -
"this whole ARM thing is a f*cking pain in the ass"
原创 2015-02-24 21:16:21 · 5402 阅读 · 1 评论 -
非阻塞读取串口终端数据
当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了它才有可能继续运行。与睡眠状态相对的是运行(Running)状态。打开终端使用O_NONBLOCK标志,可以实现非阻塞读取终端数据:#include #include #include #include #include int main(void){ cha原创 2015-09-25 10:09:22 · 2466 阅读 · 0 评论 -
Android底层驱动验证过程(S3C6410 gpio)
硬件平台:S3c6410操作系统:ubuntu 虚拟机virtualbox板子系统:Android开发工具:jdk,ndk,eclipsejdk资源:http://115.com/?ct=rar&pickcode=bntc6d7l5q2d88bx6410板子系统Android2.3的内核源码、文件系统以及uboot在资源里提供:内核源码:http://115.com/?原创 2013-09-09 14:02:24 · 1729 阅读 · 0 评论 -
Linux驱动开发-OK6410-LED字符设备驱动实现过程
操作系统:ubuntu 10.04交叉编译环境:arm-linux-gcc 4.3.2 ,安装位置 /usr/local/arm/4.3.2/6410板子内核源码路径:~/Desktop/linux-3.0.1目标板环境 :OK6410-A linux3.0.1driver_led.c1. #include 2.3. #include 4. #include原创 2013-07-11 13:53:44 · 1125 阅读 · 0 评论 -
Linux下NDK安装配置
NDK的安装很简单,将其压缩包解压到指定的文件夹即可,接着对它进行环境的配置。如果解压位置为/home/user/Desktop/android-NDK-r6b则打开/etc/profile添加#set NDK env NDKROOT=/home/user/Desktop/android-NDK-r6b export PATH=$NDKROOT:$PATH原创 2013-09-09 12:51:01 · 928 阅读 · 0 评论 -
Linux下USB驱动编写
引言随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越来越成为困扰我们的一大问题;本文的目地是使大家了解怎样编制USB设备驱动,为更好地配置和使用USB设备提供方便;对于希望开发Linux系统下USB设备驱动的人员,也可作为进一步学习USB驱动的大体架构进而编写出特殊USB设备的驱动程序。U转载 2013-10-14 21:50:28 · 1282 阅读 · 0 评论 -
VirtualBox下的ubuntu和windows系统文件共享
windows系统下利用VirtualBox安装虚拟机,ubuntu 要想实现两个操作系统之间的文件共享,需要安装virtualbox的增强包,方法较为简单,在virtualbox的菜单栏就有选项。 安装过后,在ubuntu里/mnt文件夹下创建共享文件夹share 相应的在windows系统下创建共享文件夹,例如E:/myshare 在virtualbox的共享选项中更改共享信息,将共享文件夹定原创 2013-11-16 13:08:17 · 1098 阅读 · 0 评论 -
NFS 安装配置过程
NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。 配置过程:①apt-get update②apt-get install nfs-kernel-server原创 2014-04-12 13:22:34 · 1179 阅读 · 0 评论 -
Linux 信号函数-signal
信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序发送的命令,即信号。应用程序收到信号后,有三种处理方式:忽略,默认,捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就忽略该信号;如果是SIG_DFT,就采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数,就会中断当前进程正在处理的任务,转而去执行该信原创 2014-04-10 14:17:39 · 1113 阅读 · 0 评论 -
进程与线程的形象解释
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。转载 2014-05-13 12:33:38 · 829 阅读 · 0 评论 -
OK6410 Starting kernel ... undefined instruction pc : [<50008004>]
uboot 源码包:u-boot1.1.6.tar编译器:arm-linux-gcc-4.3.2源码路径下配置 # make forlinx_nand_ram128_config编译 # make得到uboot.bin之后考到sd卡中,通过sd卡中的mmc.bin将uboot、kernel、filesystem烧到nandflash启动出现一直重启的错误:CPU:原创 2014-05-20 11:02:06 · 3158 阅读 · 0 评论 -
mini2440之动手写简易bootloader
Bootloader 它的终极使命就是启动内核,它的主要工作就是在上电之后原创 2014-05-23 22:59:01 · 1427 阅读 · 0 评论 -
Nandflash底层驱动编写与验证
平台:MINI2440在目录drivers\mtd\nand\下创建空的C文件mynand.cmynand.c:#include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2014-06-09 13:15:13 · 1225 阅读 · 0 评论 -
Linux USB 鼠标输入驱动详解
USB设备插入时,内核会读取设备信息,接着就把id_table里的信息与读取到的信息做比较,看是否匹配,如果匹配,就调用probe函数。USB设备拔出时会调用disconnect函数。URB在USB设备驱动程序中用来描述与USB设备通信时用到的基本载体和核心数据结构。原创 2014-06-16 17:07:17 · 2777 阅读 · 0 评论 -
Linux驱动经典面试题目
1、 linux驱动分类2、 信号量与自旋锁3、 platform总线设备及总线设备如何编写4、 kmalloc和vmalloc的区别5、 module_init的级别6、 添加驱动7、 IIC原理,总线框架,设备编写方法,i2c_msg8、 kernel panic9、 USB总线,USB传输种类,urb等10、android boot 流程原创 2014-07-27 22:26:09 · 1231 阅读 · 0 评论 -
Linux驱动编译进内核-GPIO驱动
OK6410_leds.c如下:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-07-11 13:50:36 · 1767 阅读 · 0 评论 -
Linux 下 SD 卡 只读文件系统
SD卡有时会显示只读文件系统,无法拷贝,删除,查看文件:①sudo fdisk -l 查看文件分区,例如该SD卡为sde1。②umount /dev/sde1。③sudo dosfsck -v -a /dev/sde1,修复该文件系统。原创 2015-11-18 14:52:27 · 3395 阅读 · 0 评论