自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (6)
  • 收藏
  • 关注

原创 一些常用技术文档网站

蜗居科技:http://www.wowotech.net/

2017-03-31 17:14:39 1545

原创 ubuntu双网络设置

ubuntu16.04 eth0 eth5,eth0:内网(静态IP),eth5:外网(DHCP分配)root@localhost:~# ifconfigeth5 Link encap:Ethernet HWaddr 00:11:22:33:44:51 inet addr:172.21.171.68 Bcast:172.21.171.255 Mask:255.255.254.0 inet6 addr: fe80::4a41:bfd0:68b9:e9...

2020-06-22 17:14:30 470

原创 Unable to handle kernel NULL pointer dereference at virtual address

1:从sd卡出错log里可以看出来pc指针以及出错位置PC is at dw_mci_pre_dma_transfer.isra.19+0x7c/0x158pc : [<8032e130>] lr : [<8032e14c>] psr: 000f0013但是不知道在dw_mci_pre_dma_transfer内部的具体位置2:arm-none-linux-gnue...

2020-04-30 16:30:01 1965

原创 Android切换usb和tcp adb方式

设备端执行:TCP/IP方式:setprop service.adb.tcp.port 5555stop adbdstart adbdusb方式:setprop service.adb.tcp.port -1stop adbdstart adbdPC端执行:TCP/IP方式:adb connect 192.168.1.199 (Android设备IP地址)us...

2019-06-28 15:50:51 1723

原创 IMX6Q 读取CPU温度命令

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governorsinteractive conservative ondemand userspace powersave performancedevice/fsl/mx6/init.rc:on property:sys.boot_completed=1# Set ...

2019-06-28 14:43:33 2268 1

原创 Linux runlevel 运行级别

runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和Command prompt only。Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多...

2019-05-28 10:27:58 622

原创 ubuntu16.04 64位中的32位兼容lib

sudo apt-get install  lib32ncurses5 lib32z1

2018-07-11 17:41:35 1816

转载 Linux下常见的编译错误及解决方法

1、/bin/bash: bison: command not foundmake: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127解决方法:sudo apt-get install bison2、make: *** [out/host/linux-x86/obj/E...

2018-05-30 15:19:17 22890

原创 RK3288 android6.0双屏异显时,USB触摸屏只映射到prmry

系统版本:RK3288 android 6.0设备同时有两个lcd,主屏是lvds接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切正常;测试过hdmi作为主屏,lvds作为副屏,此方法同样适用。当打开双屏异显的app时,触摸屏就失效,触摸没反应,插上usb鼠标是正常的。经过测试,在打开双屏异显app后,触摸主屏触摸屏,主屏没反应,...

2018-05-16 14:26:00 3163 3

原创 rk3288 android6.0 dvfs

Platform: RockchipOS: Android 6.0Kernel: 3.10.92ddr,gpu以及arm的clock都受dvfs模块管控, 所以只要执行:root@rk3288:/ # cat /sys/dvfs/dvfs_tree [78603.186480] -------------DVFS TREE-----------[78603.186548] DVFS TREE:[7...

2018-04-17 15:35:29 1061 2

转载 实现udev/mdev自动挂载与卸载

   mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的自动挂载,只是在实现的过程中有点差异,在发生热插拔时间的时候,mdev是被hotplug直接调用,这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个...

2018-04-13 15:26:38 884

转载 设备树中设备的禁用和启用

device tree中的status标识了设备的状态,使用status可以去禁止设备或者启用设备,看下设备树规范中的status可选值默认情况下不设置status属性设备是使能的,下面看两具体的例子  下面是设备树中节点属性status的处理代码,位于内核的drivers/of/base.c中static bool __of_device_is_available(const struct de...

2018-03-02 15:02:07 2118

转载 ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大

2017-10-13 17:39:16 397

转载 ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身

设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音频数据,暂停或停止,dapm框架会根据音频路径,完美地对各种部件的电源进行控制,而且精确地按某种顺序进行,防止上下电过程

2017-10-13 17:38:06 2167 1

转载 ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系

前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da

2017-10-13 17:37:07 413

转载 ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/***************

2017-10-13 17:36:04 556

转载 ALSA声卡驱动中的DAPM详解之三:如何定义各种widget

上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,但是对于系统中的widget和route,我们是需要自己进行定义的,另外,widget所包含的kcontrol与普通的k

2017-10-13 17:31:14 402

转载 ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol

上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:只能描述自身,无法描述各个kcontrol之间的连接关系;没有相

2017-10-13 17:29:53 406

转载 ALSA声卡驱动中的DAPM详解之一:kcontrol

DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c

2017-10-13 17:28:36 446

转载 Linux ALSA声卡驱动之八:ASoC架构中的Platform

1.  Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl

2017-10-13 17:26:13 389

转载 Linux ALSA声卡驱动之七:ASoC架构中的Codec

1.  Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的

2017-10-13 17:25:35 378

转载 Linux ALSA声卡驱动之六:ASoC架构中的Machine

前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结

2017-10-13 17:24:58 399

转载 Linux ALSA声卡驱动之五:移动设备中的ALSA

1.  ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:   Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动

2017-10-13 17:24:25 1511

转载 Linux ALSA声卡驱动之四:Control设备的创建

Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口的API来实现的。ALSA已经为AC97定义了完整的控制接口模型,如果你的Codec芯片只支持AC97接口,

2017-10-13 17:23:41 381

转载 Linux ALSA声卡驱动之三:PCM设备的创建

1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲,把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续地输出、传输、处

2017-10-13 17:22:51 343

转载 Linux ALSA声卡驱动之二:声卡的创建

1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。正因为如此,本节中,我们也从 struct cnd_card开始吧。 

2017-10-13 17:22:07 347

转载 Linux ALSA声卡驱动之一:ALSA架构简介

一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。    在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-

2017-10-13 17:20:56 413

转载 linux内核中的GPIO系统

软件框架一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议

2017-07-19 15:09:13 6204

转载 Common Clock Framework系统结构

一、前言之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理。本文内容包括三个部分,第二章给出了整个CCF相关的block diagram图,随后在第三章对各个模块

2017-03-31 17:10:32 453 1

转载 Linux common clock framework(3)_概述

1. 前言前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入到clock framework的内部,分析相关的实现逻辑。注:本文使用的kernel版本为linux-3.10.29。虽然

2017-03-31 16:59:26 547

转载 Linux common clock framework(2)_概述

1. 前言本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。由于kernel称clock driver为clock provider(相应的,clock的使用者为clock consumer),因此本文遵循这个规则,统一以clock provider命名。

2017-03-31 16:58:23 487

转载 Linux common clock framework(1)_概述

1. 前言common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:1)向其它driver提供操作clocks的通用API。2)实现clock控制的通用逻辑,这部分和硬件无关。3)将和硬件相关的clock控制逻辑封装成操作函数集,交由底层的platform开发者实现,由通用逻辑调用。因此,蜗蜗会将clock

2017-03-31 16:56:37 447

转载 v4l2驱动编写篇

大部分所需的信息都在这里。作为一个驱动作者,当挖掘头文件的时候,你可能也得看看include/media/v4l2-dev.h,它定义了许多你将来要打交道的结构体。一个视频驱动很可能要有处理PCI总线,或USB总线的部分。这里我们不会花什么时间还接触这些东西。通常会有一个内部一I2C接口,我们在这一系列的后续文章中会接触到它。然后还有一个V4L2的子系统接口。这个子系统是围绕video_dev

2016-11-02 15:29:03 3744

转载 嵌入式c笔试题

预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你

2016-11-02 14:30:28 707

转载 mipi协议中文详解

一、MIPI MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。MIPI(移动行业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准。 已经完成和正在计划中的规范如下:二、MIPI联盟的MIPI DSI规范 1、名词解释 • DCS (DisplayCommandSet):DCS是一个标准化的命令集,用

2016-11-02 14:22:28 10336 1

原创 uboot 2016.05编译uboot.bin和spl

1:Makefile中的all目标编译出相应的文件. 我们来看看这个all目标all: $(ALL-y)2:# Always append ALL so that arch config.mk's can add custom onesALL-y += u-boot.srec u-boot.bin System.map

2016-10-25 10:54:40 2110

转载 u-boot 2013.01.01 Makefile分析

#########################################################################  # (C) Copyright 2000-2012  # Wolfgang Denk, DENX Software Engineering, [email protected].  #  # See file CREDITS for list of

2016-10-25 10:34:50 644

转载 字节对齐

一、概念    对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。     二、为什么要字节对齐   需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话需要访问

2016-10-18 08:49:46 307

转载 TCP参数优化

net.ipv4.tcp_mem内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看:  #getconf PAGESIZE  4096  net.ipv4.tcp_mem = 196608       262144  393216  第一个数字表示,当 tcp 使用的 page 少于 196608 时,kerne

2016-10-17 14:28:19 1453

转载 内核参数整理

以下内核参数未做相关优化,均使用系统默认值net.ipv4.tcp_mem = 196608 262144  393216net.core.wmem_max = 131071net.core.rmem_max = 131071net.ipv4.tcp_wmem = 4096  16384  4194304net.ipv4.tcp_rmem = 4096 87

2016-10-17 14:25:49 1511

adv7282 datasheet

adv7282 datasheet,user manual,寄存器描述

2017-02-28

龙芯3A用户手册下卷

龙芯3A处理器用户手册下册,主要介绍GS464处理器核

2015-03-13

龙芯3A用户手册上卷

龙芯3A用户手册上卷,多核处理器架构、寄存器描述与系统软件编程指南

2015-03-13

龙芯1B user manual

非常完成的龙芯1B用户手册,V2.0版本的

2015-03-13

龙芯2H user manual

非常完整的龙芯2H的用户手册,V1.4版本的。

2015-03-13

linux下的内存映射函数mmap详解及示例代码

介绍应用使用mmap以及到kernel内部的映射实现过程以及实例代码

2014-03-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除