- 博客(33)
- 资源 (12)
- 收藏
- 关注
原创 [RK3288][Android6.0] Audio中的period_size使用规则
Platform: RockchipOS: Android 6.0Kernel: 3.10.92关于period_size的概念,之前有提过了,表示DMA一次传输的数据量:http://blog.csdn.net/kris_fei/article/details/72780656用户空间对period_size的设置:struct pcm_config pcm_co
2017-05-31 17:24:14 7835 7
原创 [RK3288][Android6.0] 调试笔记 --- Audio驱动层判断录音数据是否异常
Platform: RockchipOS: Android 6.0Kernel: 3.10.92之前有提到上层可以通过dump pcm数据查看波形来确定录音采样的数据是否正常,这里给出驱动层查看方法。http://blog.csdn.net/kris_fei/article/details/72763579当一次传输完成后会调用dmaengine_pcm_dma_c
2017-05-31 14:19:33 3257
原创 [RK3288][Android6.0] 调试笔记 --- USB Camera旋转图像方法
Platform: RockchipOS: Android 6.0Kernel: 3.10.92HAL层修改:int camera_get_number_of_cameras(void){......if (ptr != NULL) { ptr++; camInfoTmp[cam_cnt&0x01].facing_info.orientation
2017-05-31 13:20:23 5211 4
原创 [RK3288][Android6.0] 调试笔记 --- 录音音量从HAL到APP层会变小问题
Platform: RockchipOS: Android 6.0Kernel: 3.10.92现象:录音使用1K正弦波作为数据源做测试,然后比较HAL和APP层dump出来的pcm数据,发现到APP层之后相对HAL层的音量会小很多。原因:后来发现是因为在HAL层有个叫SPEEX的降噪算法,它会固定的信号有衰减,因此音量变小了。RK文档其实也做了说明了:
2017-05-27 18:43:29 2487
原创 [RK3288][Android6.0] 调试笔记 --- Volume up键改成Back键
Platform: RockchipOS: Android 6.0Kernel: 3.10.92kris@ecovacs:~/rk3288/device/rockchip/common$ g df d5f98d92d23d2c6318ba334a9b4dc6c10e9ce664 4be51a6277ea87764da776a07b9ad9eebc7a5d27diff -
2017-05-27 16:50:22 2261
原创 [RK3288][Android6.0] Audio的frame/period_size/bps_rate
Platform: RockchipOS: Android 6.0Kernel: 3.10.92Alsa Project上有篇文章,http://www.alsa-project.org/main/index.php/FramesPeriods觉得不错,简单地翻译了下:FramesPeriodsA frame is equivalent of one sam
2017-05-27 13:38:15 3835
原创 [RK3288][Android6.0] 调试笔记 --- 屏蔽系统下拉菜单显示
Platform: RockchipOS: Android 6.0Kernel: 3.10.92kris@:~/rk3288/frameworks/base/packages/SystemUI$ g df 3e38d54b49a34a1e923b7a3508f96cee73539576 8121135dc99e6864b09171a5fd71618181e26401di
2017-05-26 10:33:46 2135 2
原创 [RK3288][Android6.0] 调试笔记 --- Audio录音PCM数据抓取
Platform: RockchipOS: Android 6.0Kernel: 3.10.92当录音异常时需要把数据dump出来判断问题出在哪一层,RK虽然在HAL层已经提供了dump方法,但有点问题:static ssize_t read_frames(struct stream_in *in, void *buffer, ssize_t frames){.....
2017-05-26 09:50:20 4522 7
原创 [RK3288][Android6.0] Audio的DMA调用实例流程
Platform: RockchipOS: Android 6.0Kernel: 3.10.92dma engigne使用流程请看以前的一篇文章:http://blog.csdn.net/kris_fei/article/details/51305299此文关注点在Audio 对DMA的实例调用申请channel:soc_new_pcm -> soc-pcm.c
2017-05-24 17:22:52 4195 11
原创 [RK3288][Android6.0] Audio的ASOC驱动及数据结构
Platform: RockchipOS: Android 6.0Kernel: 3.10.92系统使用ASOC来处理Audio部分,可分为三大部分: Machine, Codec以及Platform.其中Codec分codec driver以及codec dai driver,Platform分platform driver以及CPU dai driver.rk_
2017-05-24 13:51:47 1308
原创 [RK3288][Android6.0] ALSA的buffer指针更新(hw_ptr)
Platform: RockchipOS: Android 6.0Kernel: 3.10.92借用网友的一张图,刚开始看code的时候,存在了误区,以为系统分配了n个buffer_size的buffer,后来才发现图里这么多buffer_size在code中其实都只是模拟一个循环buffer,读写指针的数值一直增大,这样他们俩理论上不会遇到,也就是没有圆形循环bu
2017-05-23 17:30:37 2551
原创 [RK3288][Android6.0] ALSA的DMA buffer读写位置更新
Platform: RockchipOS: Android 6.0Kernel: 3.10.92刚开始我以为走的是下面的通路一,后来调试发现根本没更新,而是在后面提到的通路二中更新了,不过通路一也提一下吧!通路一:以录音为例:snd_pcm_lib_read1 -> pcm_lib.c snd_pcm_update_hw_ptr ->
2017-05-23 16:35:38 1862 8
原创 [RK3288][Android6.0] ALSA中的DMA buffer分配
Platform: RockchipOS: Android 6.0Kernel: 3.10.92 DMA(Direct Memory Access,直接内存存取),顾名思义,不占用cpu资源,从一个硬件存储区域把一部分连续的数据复制到另一个硬件存储区域。这里的用例就是:录音时,把录音数据从I2S搬运到驱动内存。放音时,把驱动里的播放数据搬到I2S。 DMA buff...
2017-05-22 18:14:07 4004
原创 [RK3288][Android6.0] Tinycap录音程序源代码浅析
Platform: RockchipOS: Android 6.0Kernel: 3.10.92源代码位于:external/tinyalsa/tinycap.cint main(int argc, char **argv){ FILE *file; struct wav_header header; //默认使用第一个录音设备,双通道
2017-05-22 10:30:18 4544
原创 [RK3288][Android6.0] Display中的2D Rendering机制
Platform: RockchipOS: Android 6.0Kernel: 3.10.922D rending都是通过Surface来实现的,路径如下:也就是说,有两条路径来做rendering:1. 通过hwui: 默认处理方式,也就是我们所说的硬件加速。2. 通过skia: 软件rendering engine.hwui的禁止可以细分到每个view
2017-05-19 16:56:30 1009
原创 [RK3288][Android6.0] Display中的Composition机制
Platform: RockchipOS: Android 6.0Kernel: 3.10.92系统有很多层layer,Composition就是要需要将不同layer组成一层,然后显示,如图:而compose有两条路径:1. 通过HWC,也就是通过硬件显示模块完成,这里是RGA模块。2. 通过GPU,需要传到DDR再处理,相对会增加功耗。RK对compos
2017-05-19 14:42:16 3675 2
原创 [RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
Platform: RockchipOS: Android 6.0Kernel: 3.10.92现象:通过adb安装搜狐视频之后打开apk没进入界面之后系统就Crash,导致Android重启。Crash Log:--------- beginning of crash01-21 19:31:22.786 174 174 F libc : Fata
2017-05-19 09:39:18 1897 13
原创 [RK3288][Android6.0] 调试笔记 --- 通过adb安装APK时间很长问题
Platform: RockchipOS: Android 6.0Kernel: 3.10.92使用adb安装apk[kris@:~/Downloads]$ adb install souhushipin_6500.apk要耗时40s,log如下:01-21 17:39:26.210 2011 2011 D AndroidRuntime: >>>>>> START
2017-05-16 09:54:53 8554
原创 [RK3288][Android6.0] ART虚拟机对APK的优化知识点小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92Android 4.4之后, Google使用了ART无缝地代替了Dalvik虚拟机,无缝是指接口相同,只是替换了库而已,ART和Dalvik的使用可以通过property persist.sys.dalvik.vm.lib.2来选择.#getprop [persist.sy
2017-05-15 19:02:47 1800
原创 [RK3288][Android6.0] Audio中的HW Params设置流程
Platform: RockchipOS: Android 6.0Kernel: 3.10.92这部分内容比较繁琐,,先从初始化开始了解里面参数意义,以period size这个参数为线索来追终代码流程.pcm_native.csnd_pcm_hw_constraints_init():int snd_pcm_hw_constraints_init(stru
2017-05-15 12:11:58 3157
原创 [RK3288][Android6.0] Audio录音HAL层的数据读取流程分析
Platform: RockchipOS: Android 6.0Kernel: 3.10.92用原生SoundRecoder apk为例,以sample rate, channel及buffer size这些参数为线索来跟踪,,流程如下:openRecord_l -> AudioSystem::getInputForAttr -> aps->get
2017-05-12 10:52:31 7659 33
原创 [RK3288][Android6.0] Audio录音HAL层的初始化流程分析
Platform: RockchipOS: Android 6.0Kernel: 3.10.92以采样率和buffer size为线索来跟踪开机时Audio Hal第一次初始化:AudioPolicyManager -> ConfigParsingUtils::loadAudioPolicyConfig -> AUDIO_POLICY_CONFIG_FILE是/sys
2017-05-12 10:06:21 4919 6
原创 [RK3288][Android6.0] 调试笔记 --- 读取当前DDR频率方法
Platform: RockchipOS: Android 6.0Kernel: 3.10.92ddr和gpu的clock都受dvfs模块管控, 所以只要执行:root@rk3288:/ # cat /sys/dvfs/dvfs_tree kernel log中打印出来:[ 2264.928913] DVFS TREE:[ 2264.928977] |[ 2
2017-05-11 16:07:02 7952 9
原创 [RK3288][Android6.0] 调试笔记 --- 移除uboot和kernel开机logo
Platform: RockchipOS: Android 6.0Kernel: 3.10.92diff --git a/arch/arm/boot/dts/rk3288-b.dts b/arch/arm/boot/dts/rk3288-b.dtsindex ad3bc1a..f000e29 100644--- a/arch/arm/boot/dts/rk3288-b.dts+++ b/arch/...
2017-05-11 09:41:11 9070 9
原创 [RK3288][Android6.0] AT24C02驱动分析及功能增加小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92Spec:网上很多,如https://wenku.baidu.com/view/0020131fff00bed5b8f31d05.html驱动:文件: kernel/drivers/misc/eeprom/at24.c支持at24cxx所有系列,当然也支持at
2017-05-10 13:11:24 2457
原创 [RK3288][Android6.0] 调试笔记 --- I2C通信失败问题
Platform: RockchipOS: Android 6.0Kernel: 3.10.92使用rk3288的i2c5读写时,会出现以下error log:root@rk3288:/ # cat /sys/bus/i2c/drivers/at24/5-0050/eeprom [ 24.297924]
2017-05-10 11:18:05 6960 12
原创 [RK3288][Android6.0] 调试笔记 --- 测试I2C设备正常传输方法
Platform: RockchipOS: Android 6.0Kernel: 3.10.92rk在驱动层做了一个通用i2c测试代码提供给上层快速测试i2c外设是否传输正常.测试使用方法:#echo [0-5] > /dev/i2c_detect //0-5表示i2c number号,不过i2c5需要修改下驱动,默认只支持到i2c4.例如我的i2c2接的
2017-05-10 10:33:18 6730
原创 [RK3288][Android6.0] I2C默认传输速率及修改
RK对应的i2c controller驱动在kernel/drivers/i2c/busses/i2c-rockchip.c对应的传输函数是rockchip_i2c_xfer():static const struct i2c_algorithm rockchip_i2c_algorithm = { .master_xfer = rockchip_i2c_xf
2017-05-09 15:07:44 6466
原创 [RK3288][Android6.0] Audio录音frame rate设置流程小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92HAL:默认的配置在hardware/rockchip/audio/tinyalsa_hal/audio_hw.h:struct pcm_config pcm_config_in = { .channels = 2, .rate =44100, //
2017-05-08 13:34:50 4468 1
原创 [RK3288][Android6.0] 调试笔记 --- 实时录音会有呲呲噪音问题
Platform: RockchipOS: Android 6.0Kernel: 3.10.92需求:APP按照16k, 16bit, 单声道去读取录音数据, 每100ms读取一次,也就是一次要读取3200字节,读取完之后写到网络发送到发送到PC.现象:经验证发现,如果读取之后直接写到文件,听到的声音不会有呲呲的噪音.而当写到网络发送缓冲时,因为耗时比写文件
2017-05-05 18:39:11 6110 2
原创 [RK3288][Android6.0] Wifi Service初始化流程小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92startOtherServices -> SystemServer.java mSystemServiceManager.startService(WIFI_SERVICE_CLASS); -> WIFI_SERVICE_CLASS为 "com.android
2017-05-04 17:08:54 1314 2
原创 [RK3288][Android6.0] Wifi相关文件及类整理
Platform: RockchipOS: Android 6.0Kernel: 3.10.92由上往下相关路径:APP:packages/apps/Settings/src/com/android/settings/wifi //Settings中看到的wifiFramework:frameworks/base/wifi //wifimanager
2017-05-04 15:37:13 1033
原创 [RK3288][Android6.0] WiFi在Setting中的开启过程小结
Platform: RockchipOS: Android 6.0Kernel: 3.10.92当Setting选项中打开Wifi时, 调用流程如下,入口主要是setWifiEnabled()函数.onSwitchChanged -> WifiEnabler.java settings apk中. mWifiManager.setWifiEnabled
2017-05-02 17:05:09 2523
okHttpClient test sample
2018-05-11
WebSocketServer test sample
2018-05-11
WebSocketClient test sample
2018-05-11
apktool_and_dex2jar(ubuntu)
2018-04-26
ION基本概念.docx
2013-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人