
Android
Android 系统
shichaog
这个作者很懒,什么都没留下…
展开
-
高效率代码技巧
CSND已永久停更,最新版唯一来源点击下面链接跳转:语音增强和识别网页书1.对齐memory,高效利用cache line,尽可能减少取数次数/* |alignment| is the byte alignment and MUST be a power of two. */```struct AlignedPtr* AllocAlignedPointer(int ...原创 2020-04-21 16:48:41 · 1664 阅读 · 2 评论 -
android audio flinger
AudioFlinger创建./frameworks/av/media/mediaserver/main_mediaserver.cpp:47 int main(int argc __unused, char** argv)48 {... 135: AudioFlinger::instantiate(); 139 AudioPolicyService原创 2017-03-09 22:49:51 · 1143 阅读 · 0 评论 -
adb 调试命令
ADB:Android Debug Bridge。这里性能调试如下:性能测试需要进行如下设置:如果要让user模式能够进行root操作,需要更改(system/core/adb/adb.c)将无用的log信息去掉,#define LOG_NIDEBUG 0如果调试Web的用户体验,需要wifi已经能够正常工作以下命令将设备进入性能模式将DDR进入原创 2017-03-10 11:45:35 · 10095 阅读 · 0 评论 -
高通Thermal debug
包括两个部分kernel thermal monitor(KTM)和thermal engine。Thermal 管理包括的内容如下:硅片结温内存温度限制外表面温度限制原创 2017-03-09 21:41:56 · 17510 阅读 · 2 评论 -
wifi测试相关
wpa_cli工具使用连接wpa工具,进入配置wlan0接口的配置交互模式wpa_cli -i wlan0 -p /data/misc/wifi/sockets交互模式下常用命令如下:查看当前网络接口信息list_network扫描其能探测到的wifi信号scan显示探测到的wifi连接结果,scan_results按如下格式显示bssi原创 2015-11-26 11:28:53 · 4664 阅读 · 1 评论 -
android ART编译预优化
编译预优化DEX文件编译比较花费时间。这在OTA或者工厂首次烧入程序后非常明显。可以在BoardConfig.mk文件中使能编译预优化,在编译时将会为APK/jar做Dex优化(dex2oat):WITH_DEXPREOPT := true如果完全的编译预优化,则system.img的大小将会增加500MB。由于ASLR特性,预优化的DEX文件将被转化并拷贝到data分区,所以原创 2017-03-14 10:17:22 · 8563 阅读 · 4 评论 -
ALSA Dynamic PCM
转载自《https://kernel.org/doc/html/latest/sound/soc/dpcm.html》Dynamic PCM转载 2017-02-03 16:47:52 · 2502 阅读 · 1 评论 -
android audio arch
android audio archALSA System on Chip(ASoC)ASoC 驱动将一个audio子系统分成四个部分:Machine driver, Platform driver, CPU driver以及Codec driver。Machine 驱动将平台,CPU以及codec驱动绑定在一块实现在kernel/sound/soc/msm/定义前端F原创 2017-02-04 19:24:46 · 3708 阅读 · 0 评论 -
Ubuntu 命令行安装android studio
安装sudo apt-add-repository ppa:paolorotolo/android-studiosudo apt-get updatesudo apt-get install android-studio创建桌面快捷方式sudo vim /usr/share/applications/Studio.desktop 输入以下内容 [Desktop原创 2017-01-20 10:46:43 · 2913 阅读 · 0 评论 -
cpu 调频 温度 ondemand
5410硬件结构体5410内部TMU单元,TermalSensor是温度传感器,检测CPU的温度,这个温度温度会和设定的温度触发门限进行比较,触发的门限对应于ThresholdRise LevelX(X:0-4),当温度发生从一个门限到另一个门限时会触发中断,上升和下降都将产生中断,产生中断后会执行驱动程序指定的动作。arch/arm/mach-exynos/boa原创 2015-10-12 19:44:41 · 5195 阅读 · 0 评论 -
Android Battery 架构
Android系统对电池的管理驱动继承了linux的power supply class。在用户层在BatteryService.java中通过广播的方式将电池相关的属性报给app使用,并且注册了uevent监听电池状态变化,以实时获取电池状态。frameworks/base/services/core/java/com/android/server/BatteryService.java原创 2016-12-28 23:41:05 · 9996 阅读 · 3 评论 -
高通平台ondemand调频
关于调频策略更多文章里有一篇关于三星的调频修改方式。 while true; do cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq; cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq; cat /sys/devices/syste原创 2017-01-15 14:01:29 · 4275 阅读 · 0 评论 -
CPU interactive调频策略
本文集中于interactive调频策略内核可选的调频策略读取可用的调频管理策略/sys/devices/system/cpu/cpufreq/cpu0/cpufreq/scaling_available_governors.调频策略通常有如下:1.Performance:CPUfreq 被设置成scaling_min_freq和scaling_max_freq中的最高频率,原创 2017-03-13 14:24:01 · 12763 阅读 · 0 评论 -
makefile 编译第三方库
CSND已永久停更,最新版唯一来源点击下面链接跳转:语音增强和识别网页书以前在编写跨平台编译框架时,要引用第三方库,这里的例子实现了下载和编译第三方库,正适合用~!```FFTW = fftw-3.3.4all: .deps fftw decode ops utils.deps: sudo apt-get install libsamplerate-dev -y...原创 2018-05-28 10:15:34 · 2455 阅读 · 0 评论 -
openwrt调试用到的
NFSUbuntuPC端sudo apt-get install nfs-kernel-serversudo /etc/init.d/nfs-kernel-server startvim /etc/exports该文件写入/home/gsc/nfs 10.99.*.*(rw,sync,no_root_squash)嵌入式设备端mount -n -o nolock 10.99.1.3:/home原创 2017-09-12 09:47:30 · 1539 阅读 · 0 评论 -
Ubuntu usefull tools
代码自动补全软件sudo apt-get install vim-addon-manager sudo apt-get install vim-youcompleteme vim-addons install youcompleteme中文支持如果安装的是英文键盘,增加搜狗需要按如下设置:fcitx-config-gtk3添加到右侧 sudo im-co...原创 2017-05-16 21:09:44 · 954 阅读 · 0 评论 -
code profiling
本文基于c/c++。perf可以使用perf list列出所有支持的event。perf工具支持硬件和软件事件,硬件事件由硬件计数器测量。 常关心的硬件事件如下:cpu-cycles OR cyclesinstructionscache-referencescache-missesbranch-instructions OR branchesbranch-missesbus-cycle原创 2017-09-23 22:08:58 · 2196 阅读 · 0 评论 -
android调试用过的
repo仓库遍历repo forall -p -c git log --since="2017-02-15" --until="2017-02-22"android bms日志获取echo "file qpnp-bms.c +p" > sys/kernel/debug/dynamic_debug/controllogcat -b kernel > /data/kernel.log原创 2017-04-02 17:45:18 · 1566 阅读 · 0 评论 -
linux 调试用到知识点
ubuntu 崩溃,进入grub解救:内存不够导致系统崩溃,进入不了linux系统(grub rescure)根据已有ramdisk镜像修改/替换ramdisk部分内容的方法: 1:unzip the imagemv ./ramdisk.img ./ramdisk.img.gzgunzip ./ramdisk.img.gz 2:restore the image原创 2015-12-29 12:43:10 · 3860 阅读 · 4 评论 -
高通android display subsystem
MDSS:Multimedia Display Sub-systemDisplay driver包括:SurfaceFlinger,Hardware Composer(HWC),以及overlayFramebufferMIPI DSI驱动系统架构MDSS 1.0显示子系统Soure Surface Processor(ViG, RGB,DMA-SSPA)---格式转原创 2017-03-10 10:59:31 · 8086 阅读 · 0 评论 -
android 内存泄露诊断
MAT(Memory Analyzer Tool)是一个快速,功能丰富的java原创 2017-01-22 13:12:01 · 911 阅读 · 0 评论 -
android sensor移植
sensor直接连接到应用处理器,并有linuxkernel管理。本文涉及到kernel驱动,sensor HAL以及SensorService。sensor架构安卓提供Sensor API和SensorManager,然而没有提供Sensor HAL和sensor驱动。电源管理和管脚功能设置在设备树中应当设置好,Sensor类用于支持一些新特性。增加了一些sensor新特性,如:原创 2017-03-13 17:35:55 · 4169 阅读 · 0 评论 -
高通android bootloader
高通LK(little kernel)。little kernel是bootloader,其作用是硬件初始化,读取linux 内核和ramdisk到RAM里,设置初始寄存器以及内核命令行参数,并跳转到内核运行。作用硬件初始化:设置向量表,MMU,cache,初始化外设从存储器加载boot.img支持flash和recovery即使在64bit架构,LK依然运行在32bit模式原创 2017-03-13 16:03:54 · 5958 阅读 · 1 评论 -
Selinux 权限策略定制
Selinux 语言:左边的一列是Security Context。u:r:init:s0的意思是u为user。SEAndroid中定义了一个SELinux,值为ur为role的意思。一个u可以属于多个r,不同的role具有不同的权限。init 表示该进程所属的domain 为init。s0和SELinux是为了满足军用和教育行业而设计的MultiLevel Security。原创 2016-12-22 16:19:50 · 8210 阅读 · 0 评论 -
SElinux
SElinux是一个linux安全增强功能,其允许用户和管理员对访问控制有更多的控制权。访问控制可以做到哪个用户可能访问哪些资源的级别。这些资源可以来自文件。标准的Linux存取控制,如文件权限(-rwxr-xr-x)由用户或用户运行的程序修改。相反的,SELinux 的存取权限由系统加载时的policy确定,这个policy不能随意更改。SELinux同样提供了细粒度的存取控制,不仅仅是原创 2016-12-08 21:29:02 · 8793 阅读 · 0 评论 -
编写、调试linux常用命令杂记
Makfile编译参数 -i 忽略命令执行返回的出错信息。 -s 沉默模式,在执行之前不输出相应的命令行信息。 -r 禁止使用build-in规则。 -n 非执行模式,输出所有执行命令,但并不执行。 -t 更新目标文件。 -q make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。 -p 输出所有宏定义和目标原创 2015-06-11 09:01:50 · 1013 阅读 · 0 评论 -
内核管理-之进程虚拟内存-基于linux3.10
关于启动过程内存管理见《内存管理-之启动》如果需要,内存管理五章整理成pdf了,下载地址http://download.youkuaiyun.com/detail/shichaog/8662135进程的虚拟地址空间和内核的虚拟地址管理方法不一样,不论应用程序如何切换,内核始终是一个并且其一直驻留在内存中,而进程则不同,可以有多个进程同时驻留在内存中,并且从各个进程的角度来看,呈现的系统是一原创 2015-05-06 23:11:28 · 1686 阅读 · 0 评论 -
linux内核使用的一些算法和思想(个人总结)
这里只罗列一些算法,其中有些在我之前的博文中有所涉及,有些没有,后续有时间再详细分析每一个算法。排名不分先后1、trie算法,linux网络子系统中取代了之前哈希算法的新路由算法,适合有大、超大规模路由项的应用场景。2、CFS(completely fair scheduler),说是一种算法,其实更是类似一种思想,基于时间片分割技术。进程调度使用。3、哈希算法,到处在用,网络原创 2015-06-05 20:05:14 · 3216 阅读 · 0 评论 -
Linux进程管理和调度-基于linux3.10
在linux操作系统的主要目的是管理和分配硬件资源并为应用层提供一个良好的抽象接口。不论是内存管理子系统还是文件子系统亦或是网络子系统等都是为应用程序提供服务的,而应用程序映射到linux内核中称之为进程,由性能原因多个进程可能会被简化并组织为若干线程。Linux进程可以把linux内核的其它子系统串接在一起,其和linux内核各个子系统均有联系,本文着重点就是梳理linux进程和各个子系统之原创 2015-06-04 20:56:47 · 2905 阅读 · 1 评论 -
MTD子系统和NAND
先前的文章《虚拟文件系统 (VFS)-基于linux3.10》和《UBIFS文件系统》只是对文件系统进行各层的分析,并没有连贯到读写flash。透过本文可以知道ubifs文件系统发出的读在linux操作系统上是到底是如何完成的。NAND设备Linux将裸NAND(区别于emmc、usbstick)归纳到MTD设备类型里,这类设备通常相关的操作通常位于drivers/mtd/nand目录原创 2015-05-29 18:48:02 · 3963 阅读 · 0 评论 -
根文件系统挂载过程—基于linux3.10
本文基于linux3.10某一嵌入式系统,该文件系统的配置选项设置如下:图1.1 根文件系统配置选项设置 两行配置如下:[*] Initial RAMfilesystem and RAM disk (initramfs/initrd) support(usr/rootfs.cpio.gz)Initramfs source file(s)这两行的意义是原创 2015-05-29 18:38:47 · 2706 阅读 · 0 评论 -
UBIFS文件系统
引言什么是UBIFS文件系统UBIFS是UBI file system的简称,用于裸的flash设备,作为jffs2的后继文件系统之一。UBIFS通过UBI子系统处理与MTD设备之间动作。UBIFS文件系统更适合MLCNAND FLASH。需要注意的是UBIFS并不是为SSD,MMC,SD,Compact Flash等之类的基于flash的存储设备,其是针对于裸flash设备。原创 2015-05-23 09:38:11 · 27310 阅读 · 0 评论 -
虚拟文件系统 (VFS)-基于linux3.10
引言虚拟文件系统(VFS, VirtualFileSystem)介于具体的文件系统和C库之间,其用提供一个统一的方法来操作文件、目录以及其它对象。其能够很好的抽象具体的文件系统,在linux上具体的文件系统主要分为三类:l 基于非易失性的存储介质(磁盘、SSD、Flash)的文件系统,如Ext4,Resisterfs、FAT、Ubifs、yaffs2等l 伪文件系统, 如pro原创 2015-05-19 14:41:03 · 4553 阅读 · 1 评论 -
vim+taglist+ctags+cscope+自动补齐
vim命令录制于回放script -t 2>time.log -a vim-hacking-taglist.txtscriptreplay time.log vim-hacking-taglist.txt这一过程录制在了一个压缩包里,解压缩后使用scriptreplay time.log vim-hacking-taglist.txt即可观看。共六个部分。第一个部分是vim常原创 2015-05-08 13:34:42 · 845 阅读 · 0 评论 -
功放测试和音质
功放测试SNRSNR= 20LOG( 64uV / REF) FFT-24.5dB digital inputTHD+N VS. POUT原创 2015-11-29 18:35:01 · 8941 阅读 · 0 评论 -
exynos5410 TMU系统的critical情况处理方法
根据TMU,将CPU的温升分为四种情况来处理,分别是下述情况:THERMAL_TRIP_HOTTHERMAL_TRIP_ACTIVETHERMAL_TRIP_PASSIVETHERMAL_TRIP_CRITICALTHERMAL_TRIP_HOT只是简单的调用该平台实现的notify函数即可。THERMAL_TRIP_ACTIVE是主动降频,THERMAL_TRIP_PASSIV原创 2015-12-16 17:51:24 · 2139 阅读 · 0 评论 -
内存管理-之内核内存管理-基于linux3.10
关于启动过程内存管理见《内存管理-之启动》如果需要,内存管理三篇文章整理成pdf了,下载地址http://download.youkuaiyun.com/detail/shichaog/8662135第四章 物理内存管理图2.2中(见内存管理-之启动)已经展示了伙伴系统对内存的组织管理,但是并未关联具体的实现代码,Linux内核并未将伙伴系统的管理代码单独列在一个buddy.c的文件里。原创 2015-05-05 22:22:04 · 4581 阅读 · 0 评论 -
单主机多网卡位于同一个网段
一个设备有两张网卡,一个以太网卡,一个wifi无线网卡,如route命令输出的,eth0的IP地址是10.12.39.10;wlan0的IP地址是10.12.39.11;当eth0的RJ45接口的网线连上,wlan0的无线wifi不连上。发现ping eth0,发现能ping通;ping wlan0时,发现也能ping通。反过来,发现也能ping通。现象:# route原创 2015-04-21 19:00:34 · 2063 阅读 · 0 评论 -
android wifi display屏幕分辨率修改
/frameworks/av/media/libstagefright/wifi-display/source/WifiDisplaySource.cpp 52 WifiDisplaySource::WifiDisplaySource( 53 const String16 &opPackageName, 54 const sp &netSession,原创 2016-11-11 23:00:47 · 3237 阅读 · 0 评论 -
USB audio调试
androidstudio打印的信息有如下:07-12 08:27:17.660 2284-2284/? I/AudioFlinger: loadHwModule() Loaded a2dp audio interface from A2DP Audio HW HAL (audio) handle 707-12 08:27:17.660 2284-2284/? I/AudioFlinger:原创 2016-07-13 21:53:25 · 14434 阅读 · 5 评论