
Linux设备驱动
袁保康
.
展开
-
Ubuntu 18.04 安装eclipse CDT
按照网上执行这个sudo apt install eclipse eclipse-cdt会报这个log file.....!SESSION Fri Aug 16 14:39:20 IST 2019 ------------------------------------------!ENTRY org.eclipse.equinox.launcher 4 0 2019-08-16 14:39:20.065!MESSAGE Exception launching the Eclipse Plat原创 2021-06-13 15:18:08 · 1565 阅读 · 1 评论 -
如何制作Ext4文件系统镜像
如何制作Ext4文件系统镜像将来有一天,在一个目录上右击,会有一个选项是「生成Ext4镜像」。但是目前还没有,记录一下步骤。原创 2015-10-24 17:54:34 · 10275 阅读 · 2 评论 -
查看当前Linux内核配置文件/proc/config.gz
查看当前Linux内核配置文件/proc/config.gz当前的Linux内核的配置文件保存到了/proc/config.gz,有了它可以对调试当前内核有很大的帮助。这里先简单记录一下,以后再完善。原创 2016-04-30 16:45:12 · 8824 阅读 · 0 评论 -
Linux应用层直接操作GPIO
Linux用户层直接操作GPIO在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低。这个大大地提高了灵活性,官方的文档有GPIO Sysfs Interface for Userspace,GPIO Sysfs。原创 2015-03-22 10:34:31 · 18948 阅读 · 3 评论 -
RK3066开发板的唯一码UUID
RK3066开发板的唯一码UUID不像RK3188平台上那样,会在/proc/emmc_info有EMMC的唯一码;也不像A20平台那样在/proc/cpuinfo中有一个Serial字段是CPU的唯一码。RK3066平台上两个都没有找到,一般平台上可用的唯一码还会有以太网的MAC地址、WiFi的MAC地址等等。在这个名为SWH-5159的主板使用的是普通的NAND FLASH并不是EMMC,那么这原创 2016-05-30 11:11:49 · 2614 阅读 · 2 评论 -
绝境重生
绝境重生真得需要一个7寸屏带触摸,我都快疯了,我有能力搞定linux内核对触摸屏的支持,但是手上这块板我却没有源码。找到了电阻屏的福音,但是却没有办法将它应用上。我不想在一个42寸大屏幕上调试程序,或者在一个21寸显示器屏幕上调试。那让我很痛苦,我得使用鼠标我的桌子上摆满了线。显示器的电流又特别的大,时而让鼠标不能使用。各种问题的纠缠。我尝试过找这个主板的其它厂家,但是都不给提供源码,他们是怕我盗版原创 2016-05-09 13:24:19 · 1273 阅读 · 0 评论 -
电阻屏的福音
电阻屏一个为4线,现在有将其转换成USB接口的软硬件了。这样就可以把各个模块隔离开来。硬件模块如下: 查得VID和PID: 对应内核的驱动配置项为TOUCHSCREEN_USB_EGALAX: drivers/input/touchscreen/Kconfig原创 2016-05-09 13:57:54 · 2037 阅读 · 0 评论 -
常见的USB VID
常见的USB VID:(遇到再更新)040a Kodak Co.04b8 Seiko Epson Corp.0eef D-WAV Scientific Co., Ltd附所有VID:(来自http://www.linux-usb.org/usb.ids)## List of USB ID's## Maintained by Stephen J. Gowdy <linux.us原创 2016-04-30 15:53:41 · 87383 阅读 · 1 评论 -
configure: error: newly created file is older than distributed files!
在一个特定的环境中遇到如下情况:configure: error: newly created file is older than distributed files!是因为现在的时钟要比文件的时间早,所以有两个方法去实现。本文中介绍了这两种方法。原创 2015-09-13 22:56:00 · 9988 阅读 · 0 评论 -
GPU一些概念总结
GPU一些概念总结,记录一些自己理解的GPU相关知识,口语化多一些,有助于理解。原创 2015-09-13 08:46:04 · 2729 阅读 · 1 评论 -
HP Officejet 100 Mobile Printer 探索记录
HP Officejet 100 Mobile Printer 探索记录对Officejet 100打印机在Android端的驱动程序研究,重点是通过蓝牙进行打印,这里记录了搜索整理的资料。原创 2015-10-16 22:13:27 · 7803 阅读 · 1 评论 -
Camera驱动调试小记
Camera驱动调试小记应用使用V4L2 API操作Camera设备是比较统一的,但是对Camera驱动的实现是多种多样了,比如UVC(USB免驱摄像头)以及SoC-Camera。前者不需要额外的驱动程序,所以不用过多关心;后者是片上系统Camera的支持。针对SoC-Camera内核中标准的文档是Linux-3.0-soc-camera。SoC-Camera和ASoC是一样的思想,最终实现SoC端原创 2015-06-02 19:18:43 · 8852 阅读 · 1 评论 -
键值从键盘到Linux内核传输过程分析
键值从键盘到Linux内核传输过程分析 这是一个以前没有了解过的一个盲区。 源于在制作一个带有特殊键的键盘,键盘厂商让挑选择殊键的实现方法。并举例说明了普通按键z在他们的MCU中其实是00 00 1d 00 00 00 00 00(以下简称:MCU键值)即0x1d十进制29,我立即通过hexdump /dev/input/eventX方法查看键盘上z键的原创 2014-12-30 14:39:29 · 8230 阅读 · 0 评论 -
error: expected declaration specifiers before ‘return’
error: expected declaration specifiers before ‘return’因为竟是我的{}少了{,我晕死。内核模块编程。原创 2013-10-31 10:00:55 · 4221 阅读 · 0 评论 -
Eclipse开发内核模块
我在这样想,有IDE为什么不用呢?内核模块再怎么牛,它好赖是一个Makefile工程,是Makefile工程就可以用eclipse来开发。所以就总结了eclipse内核模块开发的配置信息。当然了,本文适合已经熟练内核模块的命令行开发的人来看,因为这里解决的就是命令行中步骤在eclipse中的代替。原创 2013-11-03 19:44:19 · 5575 阅读 · 2 评论 -
NAND Flash SLC、MLC技术解析
什么是SLC和MLC 要认清问题,首先要搞明白什么是SLC和MLC,它们属于两种不同类型的NAND FLASH存储器,用来作为MP3播放器、移动存储盘等产品的存储介质。SLC全称是Single-Level Cell,即单层单元闪存,而MLC全称则是Multi-Level Cell,即为多层单元闪存。它们之间的区别,在于SLC每一个单元,只能存储一位数据,MLC每一个单元转载 2012-09-29 10:46:39 · 3049 阅读 · 1 评论 -
nand flash坏块管理OOB,BBT,ECC
nand flash坏块管理OOB,BBT,ECC0.NAND的操作管理方式NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大转载 2013-06-23 13:16:10 · 2666 阅读 · 0 评论 -
linux嵌入式系统开发之触摸屏---驱动篇(上/硬件原理\下/源码分析)
linux嵌入式系统开发之触摸屏---驱动篇(上/硬件原理)时间:3月20日地点:咖啡厅“小涛哥,你说上节课讲的触摸屏应用的部分,从测试代码来看确实也没啥,但一个触摸屏确实很神秘啊,确实吸引人,也确实引的那么多的Iphone迷,要不你今天把驱动篇给我讲讲吧,我请你喝咖啡..”(听着声音,看这神情,不用我介绍,大家也知道是谁啦..)“切,你呢?还不了解你啊.每次都这样,有转载 2012-10-30 17:36:08 · 3287 阅读 · 0 评论 -
Linux内核强制使用自配置的cmdline
开发过程中遇到一些问题,需要改cmdline。cmdline在不同的平台上有不同的改法,有的单独存在于一个分区中,有的使用的是uboot,需要在启动过程中中断启动并进行手动修改,也有的平台上使用的是uboot的变种读取配置文件获取cmdline,更甚至还有一些平台在sdcard中跑系统和在emmc中跑系统的修改cmdline的方法都不一样。原创 2016-07-21 18:33:38 · 12677 阅读 · 0 评论 -
一种奇葩耳机与喇叭互斥的实现方式
一种奇葩耳机与喇叭互斥的实现方式所谓耳机与喇叭的互斥,是指当耳机插入时,喇叭通道自动关闭,声音从耳机中输出;当耳机拔出时,喇叭通道打开。Android平台标准的实现「耳机与喇叭互斥」的方式是:标准耳机接口硬件(带的插入检测) -> 连接到CPU的GPIO -> 内核检测到GPIO变化后改变/sys/class/switch/h2w/state中的值 -> Android上层系统读取该文件以判断当前耳原创 2017-02-08 18:47:04 · 1963 阅读 · 0 评论 -
USB中CDC-ECM的了解和配置
USB中典型类及子类:类别解释子类典型应用IC芯片备注UVC视频类 免驱USB摄像头 CDC通讯类RNDIS ECM(p24)原创 2014-07-09 20:10:48 · 42304 阅读 · 1 评论 -
Ubuntu16.04编译Android 4.4
Ubuntu16.04编译Android 4.4参考:https://nosemaj.org/howto-build-android-kitkat-nexus-5问题:Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at kernel/timeconst.pl答案:https://blog.csd...原创 2019-07-06 18:00:12 · 804 阅读 · 0 评论 -
Ubuntu 16.04安装libuvc
安装依赖sudo apt-get intall libjpeg-dev libusb-1.0-0-devsudo ldconfig安装libuvcgit clone https://github.com/ktossell/libuvccd libuvcmkdir buildcd buildcmake ..make && sudo make install...原创 2019-07-06 17:58:46 · 3428 阅读 · 1 评论 -
EXT4-fs (sda1): Filesystem with huge files cannot be mounted RDWR without CONFIG_LBDAF
在选上Ext4时,出现如题错误:[*] Enable the block layer ---> [*] Support for large (2TB+) block devices and files原创 2019-05-07 18:13:07 · 2441 阅读 · 0 评论 -
初次接触CamDroid
以前的以前,一般平台会提供Android或者Linux+Qt的环境。前者比较全面,资源占得比较多,开发比较容易一些。后者比较简单,资源占的比较少,但是开发比较困难;现在又出现了一个前后者的结合体CamDroid,也就是裁剪的Android系统,保留了一些Android底层,对上层App以及Framework的支持全部去掉了。一般使用C开发程序,但是如果用到简单的GUI可以使用MiniGUI或者Qt...原创 2019-04-28 00:03:36 · 5196 阅读 · 0 评论 -
I2S注意事项
关于I2S,[wikipedia][1]上介绍的比较全面。这里记录一些容易出错的点。启用I2S以Linux/Android主板而言,I2S是ASoC中的CPU Platform驱动。一般情况下需要同时搭上Codec和Machine驱动才能够启用。启用后会在/proc/asound/cards中查看到多出一个声卡。(如果硬件上I2S确实没有连接Codec,那么一般CPU厂家内核中会有Plubli...原创 2018-11-06 16:18:25 · 2192 阅读 · 0 评论 -
蓝牙设备也有VendorId ProductId ?
在做一个蓝牙HID设备的时候,从机使用的SensorTile,主机使用的Android 5.0平板(内核3.4),在内核中的HID驱动和HID设备是通过VID PID匹配的,而这个SensorTile的VID PID一直是0x00, 0x00。为了快速验证,我把generic-usb或者hid-multitouch的hid_device_id表中添加了如下代码以兜底这个VID PID均为0x00的...原创 2018-07-24 10:37:42 · 4534 阅读 · 0 评论 -
chroot FATAL: kernel too old
chroot使用了很多年,第一次遇到这个问题chroot FATAL: kernel too old。那是在一个Android 4.2.2(kernel 3.0.36)下准备chroot进Ubuntu 16.04下遇到的问题,简单使用strace跟踪了一下,是Ubuntu 16.04里报的错误和busybox sh都没有关系,换成Ubuntu 14.04没有问题了。具体的问题是出在了Ubuntu文...原创 2018-06-15 19:08:14 · 2944 阅读 · 0 评论 -
E: Couldn't create temporary file to work with /var/lib/apt/lists/ports.ubuntu.com_ubuntu-ports_dist
E: Couldn’t create temporary file to work with /var/lib/apt/lists/ports.ubuntu.com_ubuntu-ports_dists_trusty_Release - mkstemp (2: No such file or directory)Ign http://ports.ubuntu.com trusty-secu...原创 2018-06-15 19:03:16 · 3315 阅读 · 3 评论 -
NanoPC-T2 驱动R8188EUS WiFi芯片
Ubuntu上测试该模块枚举信息:usb 1-2.6: USB disconnect, device number 67usb 1-2.6: new high-speed USB device number 68 using xhci_hcdusb 1-2.6: New USB device found, idVendor=0bda, idProduct=8179usb 1-2.6:...原创 2018-05-17 17:48:27 · 2141 阅读 · 4 评论 -
Ubuntu 16.04 双网卡 同时上内外网
PC上测试Ubuntu 16.04 本身已经支持双网卡同时工作,使用route命令查看时可以看到,目前无线网卡和有线网卡已经同时在工作,其中wlp2s0是无线网卡,enxa44cc8f621d9是有线网卡。tony@pc:~$ routeKernel IP routing tableDestination Gateway Genmask Fl...原创 2018-05-09 13:32:57 · 11298 阅读 · 0 评论 -
Linux中的currentTimeMillis
Java中的currentTimeMillis很好用,在Linux内核或者应用程序中封装了一下。内核中:long currentTimeMillis (void) { struct timeval tp; do_gettimeofday(&tp); return tp.tv_sec * 1000 + tp.tv_usec / 1000;}// 打印...原创 2018-03-06 16:22:25 · 1130 阅读 · 0 评论 -
Android Audio FastMixer 实例
只有手上一个Nexus 5支持了FastMixer,难得能得到调试信息,记录之。安装audio-echo。然后运行这个命令:$ adb shell ps | grep echo u0_a83 26473 211 931416 55048 sys_epoll_ 00000000 S com.google.sample.echo$ adb shell dumpsys media.audio原创 2017-11-16 16:04:44 · 4307 阅读 · 0 评论 -
Ubuntu for armel的绝唱 ubuntu-core-12.04-core-armel.tar.gz
armel是不使用硬浮点的arm,现在的arm硬件一般都是ARMv7以上了,都支持armhf了。基于armhf的系统也比较多了,Ubuntu,Debian以及其它的。armel以后会被谈忘。但是如果供应商提供了armel编译的程序,不提供源码的话。那么你需要所有其链接到armel版本的库,比如libc,ld-linux.so.3等等。而现在12.04以后的Ubuntu不再支持armel。原创 2017-11-15 11:01:57 · 1038 阅读 · 0 评论 -
NanoPC-T2 支持USB Audio
这个板子原本不支持USB Audio。根据USB 数字音频的教程,可以很方便地使其支持USB Audio。原创 2017-11-09 20:45:46 · 882 阅读 · 0 评论 -
USB Audio Class (UAC) 分析
本文记录USB Audio Class 驱动分析过程。原创 2017-11-09 09:53:58 · 26245 阅读 · 4 评论 -
如何解决Linux下USB设备节点名不固定问题
如何解决Linux下USB设备节点名不固定问题以USB转串口为例,通常设备节点名为ttyUSBx(x为0~n),Linux内核会根据插入设备的先后顺序进行编号的分配,比如第一个插入的设备编号为0,然后依此加1。如果仅仅以设备节点ttyUSBn来区别具体是哪个设备,因为末位的编号是随时会变的,所以就会造成混乱。无法保证A设备就是0,B设备就是1。其实这个问题在LDD3上已经提到过,目前的内核早已经解决原创 2015-06-01 11:26:58 · 13949 阅读 · 3 评论 -
Ubuntu 14.04 编译最新版本strace
strace一直使用很多年前的版本,会有一个问题是,新版本加添了ioctl命令不支持,那么就会显示一个纯数字,看起来就比较恼火。所以会考虑到要编译最新版本的strace来调试。原创 2017-09-10 12:23:21 · 2398 阅读 · 0 评论 -
单片机串口调试丢包验证过程记录_已解决
void main_form::remoteDataIncoming() //QSocketNotifier监测到出口有数据读就自动调用该函数(一般不会丢数据){ u_char a; read(m_fd,read_buf,33); for(a=0;a<33;a++) qDebug("%u",read_buf[a]);}if((event->timerId原创 2012-10-23 19:43:43 · 11528 阅读 · 1 评论 -
Linux设备驱动程序:gnu make 扩展语法
/************************************************************************************原文地址:http://www.cppblog.com/aaxron/archive/2012/03/16/168055.html说明:这里的Makefile和应用程序中的稍有不一样,特转载过来。***转载 2013-02-12 17:45:47 · 1457 阅读 · 0 评论