android 音频调试工具tinyalsa简介


Android 系统集成了简化版本的 ALSA (Advanced Linux Sound Architecture),包括:tinymix,tinypcminfo,tinycap,tinyplay 四个常用的指令。

  • 编译与集成:

在android系统编译环境中输入 mmm external/tinyalsa/,即可在system/bin下面找到tiny 系列的二进制文件,若需要在系统编译时候就集成此功能,可修改对应的项目的mk文件,增加如下内容:

  1. PRODUCT_PACKAGES += \
  2.     tinycap \
  3.     tinymix \
  4.     tinyplay \
  5.     tinypcminfo

注意:编译集成是,package要用最后生成的文件名字,不能使用文件夹的名字。

  • 适用范围:

tinycap 用来简单录音,通常用来测试录音,参数如下:

tinycap file.wav [-D card] [-d device] [-c channels] [-r rate] [-b bits] [-p period_size] [-n n_periods] [-T capture time]

一般在录音前需要用tinymix的配置好录音的参数。

tinymix 用来配置音频参数,通常输入tinymix ,可以看到当前声卡的信息如下:

tinyplay 是一个简易的音乐播放器,一般用于播放测试。tinyplay只能播放wav原始格式的音乐,不能进行Mp3等格式的解码,支持44.1kHz,48kHz采样率的wav音乐。在调用tinyplay播放音乐之前需要先使用tinymix切换好音频通路。

tinypcminfo 用于查看pcm通道的相关信息

内核中修改和保存defconfig的方法


【需求】

修改和保存defconfig

【分析】

使用make ARCH=arm 或者 arm64 xxxx_defconfig,可以将xxxx_defconfig,生成kernel根目录的.config。

在根目录执行make menuconfig 可进入 .config的图形化修改界面。

在根目录执行,make savedefconfig 生成defconfg文件。

【结论】

对比 defconfg 和 xxxx_defconfig 或者直接拷贝过去就好了。

 

DDR 常见模式的测量判断方法


【简述】

各类型DDR在运行中,有三种模式比较常见,在调试过程中需要特别注意,分别为:

运行模式,自刷新模式( self-refresh )和断电模式(auto power down )。

【方法说明】

通过测量DDR的CKE脚的电平变化状态判断DDR当前的模式,标准如下:

低电平持续时间时间大于7.8us,DDR处于自刷新模式。

DDR3、DDR4低电平持续时间小于或者等于7.8us,LPDDR2、LPDDR3、LPDDR4低电平持续时间小于或者等于3.9us,DDR处于断电模式

CKE为高电平,为正常工作模式

【特别说明】

自刷新模式和断电模式都是省电模式,通常情况DDR是会在模式之间切换,我们会看到CKE的电平出现高低变化,说明DDR在各状态之间切换。

全志A133 Android 10 前后相同摄像头型号修改记录


【问题】

全志A133 Android 10 使用前后置都为相同的摄像头时,会出现i2c注册失败的问题,从而导致摄像头调试失败,具体log见下所述:

  1. [    4.472993] [c2590_mipi_r]PWR_ON!
  2. [    4.531231] [c2590_mipi_r]sensor_init
  3. [    4.532734] [c2590_mipi_r]V4L2_IDENT_SENSOR = 0x202
  4. [    4.532738] [c2590_mipi_r]sensor_init ok !
  5. [    4.532742] [c2590_mipi_r]PWR_OFF!
  6. [    4.541169] i2c i2c-2: Failed to register i2c client c2590_mipi_f at 0x36 (-16)

运行中会出现:

  1. [   20.851147] [c2590_mipi_r]PWR_ON!
  2. [   20.910241] [c2590_mipi_r]sensor_init
  3. [   20.911581] [c2590_mipi_r]V4L2_IDENT_SENSOR = 0x202
  4. [   20.911586] [c2590_mipi_r]sensor_init ok !
  5. [   20.912813] [c2590_mipi_r]PWR_OFF!
  6. [   20.925117] [VIN_ERR]there is no valid sensor

【解决方法】
1. 在 kernel/linux-4.9/drivers/media/platform/sunxi-vin/modules/sensor/camera.h 中增加:

  1. #define CONFIG_SAME_I2C  

2. 在所有的驱动文件中的probe函数中增加:

  1. #ifdef CONFIG_SAME_I2C  
  2.     info->sensor_i2c_addr = (0x6c >> 1);  
  3. #endif  

以上我踩的坑,记录一下!

Android 10 修改Android层方向的方法


【需求】

Android 10 修改Android层方向

【分析】

Android 一直以来都有prop的节点来控制Android的方向,Android 10 修改了节点的名称,经查询为:ro.surface_flinger.primary_display_orientation=ORIENTATION_0

【方法】

查找ro.surface_flinger.primary_display_orientation 的定义值,搜索在device 目录和 out 目录此关键字的值,修改最终起效果的值为我们需要的值。

    • ORIENTATION_0 表示 不旋转
    • ORIENTATION_90 表示 旋转90
    • ORIENTATION_180表示 旋转180
    • ORIENTATION_270 表示 旋转270