内核中修改和保存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

DDR 相关问题排查指南


一般DDR相关问题,主要的表现为死机,重启,通常需要配合串口打印一起进行分析,这里列举常见的DDR 问题的排查思路。

    • 怎么确认是不是DDR问题?

1.   查看串口log

    • 如果串口log是在loader中的DDR初始化部分报错的话一定是DDR问题。
    • 查看loaderDDR初始化部分log中的DDR容量行列bank及颗粒类型位宽信息是否正确,如果信息错误可能引起DDR问题
    • 如果串口log是kernel 部分系统中的panic log的话,可以多尝试几次看多次panic的地址是否一致,如果不一致的话有可能是DDR问题,也可能是电源问题。

2.  看显示是否正常,如果显示异常是DDR问题的概率比较大。 

3.   做排查试验: 

    • arm gpu降频,定频适当抬压,如果有效果的话就不是DDR问题。基本上能确认是电源问题。
    • 关闭DDR变频功能,有效果则DDR变频导致的问题概率比较大。
    • 降低DDR频率到稳妥频率如200M 如果有效果那很大概率是DDR信号质量有问题。

Continue reading "DDR 相关问题排查指南"