![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINUX篇
var.zhou
毕业于某985院校,现任职于某个比较坑员工的手机厂商做Android 驱动。
展开
-
LINUX中SPI的一些小技巧
linux spi杂记原创 2022-06-22 09:40:51 · 1398 阅读 · 1 评论 -
DYNAMIC_DEBUG调试纪要
1、打开dynamic_debug调试CONFIG_DYNAMIC_DEBUG2、调试的使用// 提供文件 svcsock.c 1603行信息echo -n 'file svcsock.c line 1603 +p' > <debugfs>/dynamic_debug/control// 提供文件svcsock.c所有信息 echo -n 'file svcsock.c +p' > <debugfs>/dynamic_debug/control// 提原创 2022-04-07 19:15:06 · 463 阅读 · 0 评论 -
linux之DMA使用
前言对于长期从事嵌入式的开发人员来说,DMA是一个在实际中优化设备而老生常谈的问题,我们可以将它比喻为一个小机器人,长期重复与某一个动作的傻瓜式机器人,当我们设置好了出发添加,这个小机器人就会自动去执行相关的业务而不需要CPU的参与,从而大大的减轻了cpu的负载压力。一、对于使用DMA控制器有什么内存上限制?dma的内存要求内存上是连续的一片虚拟内存空间,1、我们不要使用vmalloc以及kmalloc这些通过get_free_page()函数来触发系统异常来分配在内存上可能是不连续的内存地址,而使原创 2021-03-05 15:18:04 · 5502 阅读 · 1 评论 -
Ubuntu18编译qt小结
前沿编译X11arm交叉编译一:前沿qt作为一款优秀的工具,可以横跨移动端,pc等,特别是20年初推出的qt for mcu后,qt可以更是横跨整个芯片行业。本次使用的环境ubuntu:18.04qt版本:qt-everywhere-opensource-src-5.9.1gcc版本:arm-linux-gnueabihf-6.3.11.1、安装编译所需要的依赖库sudo apt-get install flexsudo apt-get install bisonsudo apt-g原创 2020-09-16 07:25:09 · 417 阅读 · 0 评论 -
posix的pthread_cond_wait系列通常总结
这里仅仅是总结,不涵盖原理讲解:现在有两个线程1,2。1号线程等待2号线程的某些资源,当资源达到后才会执行消费。pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond = PTHREAD_COND_INITIALIZER;1号线程:while(1){ pthread_mutex_lock(&mu...原创 2020-03-07 10:43:36 · 248 阅读 · 0 评论 -
X26的交叉编译
一:环境ubuntu-16.04arm-openwrt-linux-gccx264 last new version二:编译2.1、配置./configure --prefix=${PWD}/tmp --enable-shared --disable-asm --host=arm-openwrt-linux2.2、修改config.makSYS_ARCH=ARMSYS=LINU...原创 2020-01-02 10:25:27 · 106 阅读 · 0 评论 -
linux创建deamon
概述所谓deamon,既是守护进程,在linux或者android中,很多的模块均是与deamon形式存在。创建1:fork()一个进程,然后父进程exit(0) : 是的子进程为孤儿进程。2:设置umask,设置umask = 0,禁止其他文件更具mask来访问。3、使用setside()来独立于父进程继承下来的回话。3、修改目录路劲,chdir("./")设置子进程的更目录为"./...原创 2019-12-19 11:09:32 · 117 阅读 · 0 评论 -
小谈网络协议
一:TCP/IP网络层二:各层小谈2.1:运用层运用层主要运用socket编程来实现对网络数据的传输:服务器 客户端socket() socket() //创建socketbind()//绑定服务器的IP地址与端口 connect() //连接服务器listen()//打开监听...原创 2019-12-09 15:20:16 · 106 阅读 · 0 评论 -
线程的分离与否简述
概述:看见百度上乱七八糟的说了一大丢的线程分离问题,很容易对人造成误解,这里我们简述一下开始了~~~线程分离的引入: 主要是为了避免线程(默认为joinable)在结束后等待其他线程的join导致资源尚未被释放编程了僵尸线程。所以为了避免僵尸线程的存在,将创建的线程设置为分离状态,这样线程结束后就不用等待其他线程的join而被回收了。简而言之: pthread_detach()就是将线程的...原创 2019-12-09 09:14:41 · 188 阅读 · 0 评论 -
大话linux运用层访问到硬件驱动层过程
维哥简述:面试就这么答就OK,今天面试居然忘记了,老司机也翻车,唉。概论流程图如下图所示:(1):当运用程序调用open(dev_path,mode)时(2):虚拟文件系统(vfs)的sys_open()函数就会被调用,该函数会在dev_path上获取到文件节点的详细信息,如:读写执行模式 主设备号 次设备号 日期 文件节点等。(3):当获取到有效的节点信息后,就会根据主设备号与次设备号...原创 2019-12-08 20:15:21 · 242 阅读 · 0 评论 -
linux性能监控以及调优工具
一、使用top,iostate,netstate,vmstate等常用工具1.1、top用于显示显示器的活动状态。1.2、iostate用于显示各磁盘的传输状态。1.3、netstate用于检测网络信息1.4、vmstate用于报告内核,虚拟内存等统计信息二、LTTng(linux track tookit-next generation)用于跟踪系统中特定时间的信息。比如事件,进程...原创 2019-12-02 20:57:58 · 147 阅读 · 0 评论 -
linux之spinlock使用
一、概述在kernel中,发生并发访问的发生源主要为一下4种方式1、中断和异常,中断发生之后,中断处理函数与被中断进程之间有可能会出现资源并发访问2、软中端以及tasklet,软中断以及任务调度都会打断当前的进程,从而发生资源的并发性访问3、内核抢占,内核抢占也是会打断当前的进程,从而造成资源的并发性访问4、smp,多个CPU也会对同一个资源进行并发性的访问。为了解决资源并发性的访问从...原创 2019-11-25 21:37:32 · 520 阅读 · 0 评论 -
移植Mplayer到arm board
项目需要,需要将Mplayer移植到开发板上,所以今天花了一下下午成功移植,其中参考很多文档,后发现许多文档陈旧,些许文档有少量错误,所以这里整理一下放出来。经过测试,avi、mp3等音视频播放流畅,运行正常,下面就是移植过程,给大家做参考。测试步骤我觉得没必要放上来,请见谅。作者lcc76161113,欢迎转载。编译器:arm-linux-gcc(4.3.2) Pc平台:ubuntu 在...转载 2019-11-05 18:43:19 · 268 阅读 · 0 评论 -
linux flash设备驱动
一、概要存储设备市面上常见的有nandflash,norflash,emmc这三类1.1、nandflashNAND Flash式东芝在1989年的国际固态电路研讨会(ISSCC)上发表的, 要在NandFlash上面读写数据,要外部加主控和电路设计。。NAND Flash具有较快的抹写时间, 而且每个存储单元的面积也较小,这让NAND Flash相较于NOR Flash具有较高的存储密度与...原创 2019-11-05 18:02:45 · 854 阅读 · 0 评论 -
linux之中断详解
一、概论中断分为硬件中断和软件中断,硬件中断是由于外部条件出发后导致CPU的SWI寄存器发送变化后出发的中断,软件中断是由于软件中某一个时间满足时出发的中断,所以在有限的硬件资源中,硬件中断可以说是非常宝贵的,在普通的MCU的rtos或者baremachine中,对这种中断只能一组中断使用一个IO,这样不太便以硬件的灵活性,所以在linux kernel中,引入了共享中断的方式(但是很多的自定义...原创 2019-11-01 10:51:09 · 520 阅读 · 0 评论 -
linux usb枚举过程分析
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-23 11:50:51 · 439 阅读 · 0 评论 -
linux之usb虚拟uart驱动详解
一、概述嵌入式设备中,单板上的uart个数是有限的,所以在需要uart接口多的项目中,usb转uart可方便的拓展,支持一拖多的方式,大大的拓宽了uart的需求,本节我们来详细说说usb转uart驱动。1.1、需要的理论1、usb驱动相关;https://blog.csdn.net/madannasf/article/details/1026586302、uart驱动相关:(我的待写),大...原创 2019-10-22 15:21:32 · 1572 阅读 · 0 评论 -
linux之usb gadget详解
待写原创 2019-10-22 11:13:07 · 966 阅读 · 2 评论 -
linux usb驱动详解
一、USB驱动层次usb采用树形拓扑结构,可分为主机侧与设备侧,每一条USB总线上只有一个主机控制器,负责协调主机与设备之间的通讯,设备不能主动的向主机发送任何消息,如下图所示如上图所示,从主机侧视角去看,在linux驱动中,usb驱动处于最上层,主要表现为usb主机侧的功能具体实现(比如U盘,鼠标,usb camer等),其下为usb核心层,主要完成usb驱动管理以及协议处理,再下为usb...原创 2019-10-21 14:31:29 · 2784 阅读 · 0 评论 -
linux 之SPI驱动详解
待写原创 2019-10-18 14:52:07 · 301 阅读 · 0 评论 -
linux之usb emulate camera device
待写原创 2019-10-18 14:49:57 · 140 阅读 · 0 评论 -
linux之rtc驱动详解
待写原创 2019-10-18 14:49:20 · 213 阅读 · 0 评论 -
linux之uart驱动详解
待写原创 2019-10-18 14:48:46 · 475 阅读 · 0 评论 -
linux之i2c驱动详解
待写原创 2019-10-18 14:48:12 · 607 阅读 · 0 评论 -
linux驱动之input子系统
待写原创 2019-10-18 14:47:40 · 218 阅读 · 0 评论 -
深入剖析Android音频之AudioPolicyService
深入剖析Android音频之AudioPolicyService见:https://blog.csdn.net/yangwen123/article/details/39497375转载 2019-07-17 17:19:46 · 308 阅读 · 0 评论 -
编译linux的内核出现all warnings being treated as errors解决办法
由于在Makefile中设计了将warming当做err的方式处理,我们将Makefile的规则进行修改即可详情看上图,将unused-but-set-variable修改为-Wno-unused-result,然后再次进行make uImage -j8 即可...原创 2019-03-20 23:07:49 · 6253 阅读 · 0 评论 -
linux之ALSA驱动篇
Linux-alsa驱动分析简述:asoc(alsa sustem on chip)是slsa在soc方向的发展和演变,但是依旧率属于alsa,只是在alsa的基础上进行了CPU代码和codec的再次封装。对于现在的内核而言,asoc由3部分组成。(1) codec层,这部分属于面向codec的编程,与CPU的平台无关。(2) platform层,这部分是与CPU进行相关的操作,它主要是处...原创 2019-03-17 00:42:27 · 2717 阅读 · 0 评论 -
Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)
本系列导航:Linux DTS(Device Tree Source)设备树详解之一(背景基础知识篇)Linux DTS(Device Tree Source)设备树详解之二Linux DTS(Device Tree Source)设备树详解之三(高通MSM8953实例分析篇)一.什么是DTS?为什么要引入DTS? DTS即Device Tree Source 设备树源码, ...转载 2019-03-15 17:03:53 · 666 阅读 · 0 评论 -
Linux驱动之USB篇
今天去面试步步高驱动一职,面试官问道是否有写博客的习惯,突然意识到自己都是在书上或者代码上写些备注,都没有想过写博客来向外分享,所以才发现这是一个大问题,所以才决定慢慢的将相关的技术资料分享到网上,便也广大网友阅读与自己可以时时的去纠正相关的错误。话不多说,今天我们开始我们的第一篇:Linux大货之USB驱动篇。一:Linux主机驱动二:Linux gitget驱动...原创 2019-03-10 13:10:43 · 568 阅读 · 0 评论 -
Linux Signal驱动与运用实现
Linux 进程间通信 之signal篇。信号 ( signal ) 机制是 UNIX 系统中最为古老的进程间通信机制,很多条件可以产生一个信号.信号的产生:1,当用户按下某些按键时,产生信号. 2,硬件异常产生信号:除数为 0 ,无效的存储访问等等.这些情况通常由硬件检测到,将其通知内核, 然后内核产生适当的信号通知进程,例如,内核对正访问一个无效存...转载 2019-03-14 11:08:17 · 580 阅读 · 0 评论