LCD调试笔记

P963F10 手动灭亮屏的打印: 相比于电源键 dpu 等未reset

6,33118,6687299931,c1,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:0 => 0 min_level:116,33119,6687306422,c6,-,caller=T596;[drm][ dpms_mode_store] input dpms mode is 36,33120,6687306435,c6,-,caller=T596;[drm] dsi_panel_set_dpms_mode(just skip it)6,33121,6687306510,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()6,33122,6687306514,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()6,33123,6687306520,c6,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()6,33124,6687306537,c6,-,caller=T596;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=3)6,33125,6687309977,c7,-,caller=T596;[drm][ dpu_stop] dpu stop6,33126,6687309995,c7,-,caller=T596;[drm] sprd_dpu_disable_vblank()6,33127,6687310008,c7,-,caller=T596;[drm] sprd_panel_disable() cmds_len=106,33129,6687310025,c7,-,caller=T596;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off6,33131,66873100

P963F10  手动灭亮屏的打印:  相比于电源键  dpu  等未reset

6,33118,6687299931,c1,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:0 => 0 min_level:11

6,33119,6687306422,c6,-,caller=T596;[drm][     dpms_mode_store] input dpms mode is 3

6,33120,6687306435,c6,-,caller=T596;[drm] dsi_panel_set_dpms_mode(just skip it)

6,33121,6687306510,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()

6,33122,6687306514,c6,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()

6,33123,6687306520,c6,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()

6,33124,6687306537,c6,-,caller=T596;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=3)

6,33125,6687309977,c7,-,caller=T596;[drm][            dpu_stop] dpu stop

6,33126,6687309995,c7,-,caller=T596;[drm] sprd_dpu_disable_vblank()

6,33127,6687310008,c7,-,caller=T596;[drm] sprd_panel_disable() cmds_len=10

6,33129,6687310025,c7,-,caller=T596;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off

6,33131,6687310069,c7,-,caller=T596;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0

6,33140,6687464822,c0,-,caller=T596;[drm] sprd_panel_unprepare()

6,33141,6687464831,c0,-,caller=T596;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1

6,33142,6687594919,c7,-,caller=T596;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off

6,33144,6687594983,c7,-,caller=T596;[drm] sprd_dpu_atomic_disable()

6,33145,6687605095,c7,-,caller=T350;[disp-pm-domain][drm][ sprd_disp_power_off] disp power domain off

6,33177,6688967754,c1,-,caller=T596;[drm][     dpms_mode_store] input dpms mode is 0

6,33178,6688967764,c1,-,caller=T596;[drm] dsi is not inited,just skip

6,33179,6688967882,c1,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()

6,33180,6688967890,c1,-,caller=T596;[drm] sprd_dsi_connector_best_encoder()

6,33181,6688967899,c1,-,caller=T596;[drm] sprd_dsi_encoder_atomic_check()

6,33182,6688967924,c1,-,caller=T596;[drm] sprd_dpu_atomic_enable()

6,33183,6688977955,c1,-,caller=T596;[disp-pm-domain][drm][  sprd_disp_power_on] disp power domain on

6,33184,6688978014,c1,-,caller=T596;[drm][        dpu_clk_init] DPU_CORE_CLK = 384000000, DPI_CLK_SRC = 153600000

6,33185,6688978024,c1,-,caller=T596;[drm][        dpu_clk_init] dpi clock is 38400000

6,33186,6688978686,c1,-,caller=T596;[drm][  dpu_enhance_reload] enhance hsv reload

6,33187,6688978696,c1,-,caller=T596;[drm][  dpu_enhance_reload] enhance cm reload

6,33188,6688979081,c1,-,caller=T596;[drm][  dpu_enhance_reload] enhance gamma reload

6,33189,6688979117,c1,-,caller=T596;[drm] dpu resume OK

6,33190,6688979131,c1,-,caller=T596;[drm] sprd_dsi_encoder_enable(last_dpms=3, dpms=0)

6,33191,6688979162,c1,-,caller=T596;[drm][       sprd_dsi_init] escape clock divider = 4

6,33192,6688979199,c1,-,caller=T596;[drm][      sprd_dphy_init] lanes : 2

6,33193,6688979204,c1,-,caller=T596;[drm][      sprd_dphy_init] freq : 512000

6,33194,6688979667,c1,-,caller=T596;[drm] sprd_panel_prepare()

6,33195,6688979673,c1,-,caller=T596;[drm] sprd_panel_prepare() tpd:lcd power on

6,33213,6689035659,c1,-,caller=T596;[drm] sprd_panel_enable() lcd_name=lcd_easyquick_aixiesheng_boe_mipi_hd

6,33214,6689035662,c1,-,caller=T596;[drm] sprd_panel_enable() step 1

6,33223,6689216478,c1,-,caller=T596;[drm] sprd_panel_enable() step 2

6,33228,6689216590,c1,-,caller=T596;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0

6,33229,6689216717,c1,-,caller=T596;[drm][             dpu_run] dpu run

6,33241,6689222565,c2,-,caller=T662;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 152 min_level:11

6,33242,6689222576,c2,-,caller=T662;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 60ms

6,33244,6689228887,c3,-,caller=T701;[drm] sprd_dpu_enable_vblank()

6,33252,6689290526,c3,-,caller=T937;[drm][           ssc_store] ssc is disabled by zte

P963F10  做esd   recovery  的打印:    相比于esd  dpu  有 reset

6,35162,6853203192,c5,-,caller=T15342;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:tp esd check error, notiry lcd esd

6,35163,6853532592,c2,-,caller=T701;[drm] sprd_dpu_enable_vblank()

6,35164,6853980438,c0,-,caller=T234;[drm] ====== esd recovery start ========

6,35165,6853980452,c0,-,caller=T234;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,35166,6853987960,c0,-,caller=T234;[drm][            dpu_stop] dpu stop

6,35167,6853987980,c0,-,caller=T234;[drm] sprd_dpu_disable_vblank()

6,35168,6853987994,c0,-,caller=T234;[drm] sprd_panel_disable() cmds_len=10

6,35170,6853988139,c0,-,caller=T234;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend power off

6,35172,6853988196,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 0 min_level:11

6,35181,6854144561,c0,-,caller=T234;[drm] sprd_panel_unprepare()

6,35182,6854144568,c0,-,caller=T234;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1

6,35183,6854274613,c0,-,caller=T234;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off

6,35185,6854274660,c0,-,caller=T234;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)

6,35186,6854274686,c0,-,caller=T234;[drm][       sprd_dsi_init] escape clock divider = 4

6,35187,6854274722,c0,-,caller=T234;[drm][      sprd_dphy_init] lanes : 2

6,35188,6854274726,c0,-,caller=T234;[drm][      sprd_dphy_init] freq : 512000

6,35189,6854275209,c0,-,caller=T234;[drm] sprd_panel_prepare()

6,35190,6854275213,c0,-,caller=T234;[drm] sprd_panel_prepare() tpd:lcd power on

6,35198,6854331236,c0,-,caller=T234;[drm] sprd_panel_enable() lcd_name=lcd_easyquick_aixiesheng_boe_mipi_hd

6,35199,6854331239,c0,-,caller=T234;[drm] sprd_panel_enable() step 1

6,35200,6854508109,c0,-,caller=T234;[drm] sprd_panel_enable() step 2

6,35205,6854508233,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:38 => 152 min_level:11

6,35206,6854508240,c0,-,caller=T234;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 60ms

6,35226,6854580386,c0,-,caller=T234;[drm][             dpu_run] dpu run

6,35227,6854580413,c0,-,caller=T234;[drm] ======= esd recovery end =========

6,35228,6854580418,c0,-,caller=T234;[drm] esd_count is 1

SPCSS01271783         S20 项目 90  hz   

SPCSS01268544         SPCSS01274652         如何改 lk  阶段平台 pwm  的频率 , 目前在 logo 界面频率  101 khz  ,超过了 100 khz  的最大频率

P963F10_T  有一个长时间待机,突然唤醒花屏问题,休眠唤醒不恢复,最后是没电才恢复的。射频干扰问题

94 三供屏回来了,做checklist

T_o=T_clk×(P_prescale+1)×(M_ +1)

T_o是输出的pwm频率,T_clk是外部时钟源26m,P_prescale是预分频系数,M_即mod。

int pwm_config(int pwm_id,int duty,int period)的三个参数分别对应PWM通道、占空比参数、周期。

占空比=duty / (period +1);

检查有无删除  faceid

adb shell  ls  /proc/device-tree/reserved-memory         或者   adb shell  ls   /sys/firmware/devicetree/base/reserved-memory

ai@ff410000        faceid-mem        ise_med         dptx_hdcp@fff10000

2023,12,12

1、P963F10   和  P720S20  陆续发现在  boot   logo 亮起来的几秒钟内,pwm   频率达到了 101  khz  超过了背光芯片支持的最大频率 100khz,我打算再看一下 720S11  ,找一个符合要求的,把代码比对过去

2、P963F10  花屏问题

在 P720S11_T  项目中,/SPRD_T_5G_V1-P720S11_T/bsp/bootloader/lk/project/zte_staple.mk  中关掉了展锐平台中自带的两个屏:

LCD_G40396_TRULY_MIPI_FHD = 0

21 LCD_NT36672E_TRULY_MIPI_FHD = 0

因为这两个屏幕在平台.mk  中被打开了      /SPRD_T_5G_V1-P720S11_T/bsp/bootloader/lk/project/ums9620_2h10.mk

# attach lcd

99 LCD_G40396_TRULY_MIPI_FHD := 1

100 LCD_NT36672E_TRULY_MIPI_FHD := 1

image.png

P720S20  在上电时, vsp   先  5.5V (默认电压),再通过写  14  ,改成 6V

sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);    打开 vsp  输出 ,tps65132  先输出默认电压  5V

zte_set_vsp_vsn_power    设为偏压  6V

mipi 上电的打印:

在  /SPRD_T_5G_V2-P720F02_T/bsp/modules/kernel5.4/display/dispc/sprd_dsi.c  中:

176   sprd_dsi_enable(dsi);177   sprd_dphy_enable(dsi->phy);178  179   sprd_dsi_lp_cmd_enable(dsi, true);

 后

  drm_panel_prepare(dsi->panel);

具有wakeup   属性的设备有无打上selinxu   标签

单独编译 :  ./build.sh P720S20T -S -I -m SuspendSepolicyTests

生成产物:

./out/target/product/ums9620_2h10/testcases/SuspendSepolicyTests/arm64/SuspendSepolicyTests

lk  里的 6  分频 ,要打开同时打开,要关闭同时关闭 :

        .dpi_clk_div = 6,

        .video_lp_cmd_enable = true,

         .hporch_lp_disable = true,      单独打开了此选项,导致了 S20  lk  阶段显示问题

kernel  里的 6  分频 ,要打开同时打开,要关闭同时关闭:

   sprd,dpi-clk-div = <6>;

   sprd,video-lp-cmd-enable = <1>;

   sprd,hporch-lp-disable = <1>;

展锐下载工具快速加载  pac  包方法:

改 BinPack.ini 里的    LoadPolicy = 2

从lk  无法进入开机向导log

drm|surfaceflinger|zygote|hwcomposer

pd  是协议, 依赖 type c  接口 ; dp  是协议,显示的 ;

上下电情况:

lk   阶段上电  :  io  电  , avdd  ,  avee    reset  

 mipi  上电平台提供不方便控; mipi  电在代码里体现在   dsi  init  ;  vsp   上电后  mipi  上电, vsp  下电后  mipi  下电 ,通过 vsp  vsn  间接控制  mipi   电 ; 如果想让  mipi   晚下电可增加休眠  10  寄存器的延时

kernel    阶段  上下电 :

唤醒 : avdd   ,     avee   ,   reset

休眠:   reset   ,    avee   ,  avdd  

image.png

在cmdline   和kernel  log 中可查看log等级  loglevel=4   ,log 等级开到 7 再看 log

在sleep  in  是关机和休眠用  里面的28   是关闭显示   display  off  , 延时  20  ms    ,   10   是   sleep   in     ,延时  120  ms

在  sleep   out    和  initial     command     里的11    出休眠 sleep  out ,  延时  120ms  ,    29   亮背光  display   on  延时 20 ms

 34  下   00   是关闭  te , 35  是打开  te    不写  35  也是关  te

2023年11月9日

1、找到了一个测vts  wakeup的shell  脚本,翻译成Python就可以做成aio,目前在看逻辑

2、606f08   963f94验证common  patch完成

2023年11月8日

1、更新解析亮屏时间分析脚本,增加set  power  莫mode2   到  finish  set  ,finish  set  到  lights write 以及   set  mode  2  到  lights     write   的时间统计,详情见https://i.zte.com.cn/#/space/0f02556f60fa4c52bbdb92824de53df3/wiki/page/c0c4b9fda9b7463e96f4863e433930d8/view  

2、vts 检查具有  wake   up属性的,有无  selinux   标签,目前在手动寻找规律中

2023年11月6日

1、p720f03 反复下版本50次,未复现  lk  阶段花屏

2、p963f10  开机不休眠  esd  恢复不了,目前看来可能与  lk   阶段 porch 配错了有关,待验证

2023年11月3日

1、P963F10_T   tp  esd  check  error  通知  lcd   做  esd   代码添加

2、 P963F10_T   在  launcher  界面字体偏小问题分析,改了物理尺寸和  density   验证

2023年11月2日

1、 P720F03  common  patch  验证,看起来的确是  T820  了,无问题,但是同时,我用  游戏版 P720F03  (后盖金黄色)的手机,发现在下完版本开机   boot  logo 阶段花屏  2到  3 秒,刚开始是竖条纹花, 后来  ZTE  上一条横线的花 ,看起来此版本有问题 。 有照片(一次性)

2、P731F21   和 P963F10  check list  

2023年11月1日

验证合入common Patch的P720f05,压测650次+。暂未发现LCD相关问题。

P 963f10做check list,发现桌面界面字体偏小。怀疑可能是物理尺寸或者density配置不对。明天继续核实一下

2023年10月31日

1、 更改了产生  boot  logo 的脚本, create_splash.sh  ,解决改前找不到  boot_logo  放一张低电  logo 问题

2、P731F21  兼容点亮  lcdtron  屏

3、P720S16  华映屏在进 deep  standby  延时  100 ms

禁用 tp      : cd vendor_dlkm/lib/modules      再     rmmod zte_tpd.ko

adb push    D:\MYFILE\zte_tpd.ko  ./vendor_dlkm/lib/modules/zte_tpd.ko   替换 tp   的ko

vendor/firmware  改模组  mv   axs_firmware_easyquick.bin    axs_firmware_easyquick2.bin  让找不到固件即可除去  tp

[Neptuneyt]$ echo $net

www.baidu.com

# 删除匹配字符串的左边,留下剩余部分

[Neptuneyt]$ echo ${net#*.} #这里用*.表示匹配到www.,用一个#表示删除匹配到的字符串,留下剩余的部分

baidu.com

# 用2个#号表示尽可能多的删除匹配到的字符串

[Neptuneyt]$ echo ${net##*.}

com

电流源的使用

按voltage   按enter   number    按  4  按  Res(小数点)   按000000(多按几个0)  按  output(输出)  

开关电源:

按  output  

log 等级开到1  ,在打印完  lk  后进入kernel  会出现  console $:  就停下来,建议  log   等级开到 7

i2c transfer fail  可能是  i2c   的lane  数配置的不对,不影响亮屏,正负  6v  偏压没设成功不影响亮屏,因为背光芯片默认输出  5v 能点亮屏幕,如果需要用到 正负  6v  偏压芯片,需要在  /SPRD_T-P606F05_T/device/sprd/mpool/module/others/bsp/mfeature/kernel/kernel5.4/msoc/sharkl3/ko/zte_okra.mk

  中加入  zte_lcdbl_vsp_vsn.ko

image.pngimage.png

s11是4  lane  ,可通过的lcd座子原理图看出来,共用一组  clk 时钟信号,  data  信号有4组,d0到d3

image.png

确认延时多少打背光,需要量  lcda  (这是背光的正极,通常 20V  左右,一颗钉就是一个二极管,二极管差不多需要 3.3  v  ,6 颗等差不多  20 V)与 d0p  和  d0n  (d0p  ,d0n 是mipi  的 data  信号,送图像的,上电前两帧画面不稳定,提前亮背光的话会看到闪屏或花屏) 的相位关系

设置 VSP  vsn  6 v 时,i2c  lane   num   在 原理图里看

image.png

如果 git   status   中出现modify  想回退修改可使用    git   checkout   xx.c   即可回退

grep -rn "pwm_backlight_update" ./bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/  可以过滤打印语句被打包在哪个  image   里了

cq  号   SPCSS01243276

S16  易快来屏  闪屏  ,同时 log  打印  dpu_isr  

05354 < 3> [91482.905973] [10-09 16:17:52.905] [drm][             dpu_isr] int value check : reg int sts value is 0x2, gap value is 9

05355 < 3> [91482.905985] [10-09 16:17:52.905] [drm][             dpu_isr] int value check : clr value is 0x0, mmu0 int value is 0x0, mmu1 int value is 0x0

05384 < 3> [91483.989345] [10-09 16:17:53.989] [drm][             dpu_isr] int value check : reg int sts value is 0x2, gap value is 9

05385 < 3> [91483.989355] [10-09 16:17:53.989] [drm][             dpu_isr] int value check : clr value is 0x0, mmu0 int value is 0x0, mmu1 int value is 0x0

053D0 < 3> [91485.485984] [10-09 16:17:54.485] [drm][             dpu_isr] int value check : reg int sts value is 0x2, gap value is 9

另外一个确定版本是否生效的方法:

在  dtsi  里加上   zte,lcd-version-v000;

然后在手机上     adb   shell  "find   -name  zte,lcd-version-v000"

可见:

./sys/firmware/devicetree/base/lcds/lcd_huaying_sitronix_st7123_mipi_hdplus/zte,lcd-version-v000

./sys/firmware/devicetree/base/lcds/lcd_sitronix_st7123_qm065hs03_ykl_mipi_hdplus/zte,lcd-version-v000

./sys/firmware/devicetree/base/lcds/lcd_gc7202_skyworth_galaxycore_mipi_hdplus/zte,lcd-version-v000

./sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus/zte,lcd-version-v000

./sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_easyquick_mipi_hdplus/zte,lcd-version-v000

两套背光方案:

P963F94   IC  侧背光,   在overlay.dts 里不会配置平台侧背光:

452 &panel {

453 sprd,backlight = <&pwm_backlight>;

454 reset-gpio = <&ap_gpio 11 GPIO_ACTIVE_HIGH>;

455 };

所以  sprd_panel_probe  里平台背光节点就会找不到:

1730   bl_node = of_parse_phandle(slave->dev.of_node,1731   "sprd,backlight", 0);

1754   } else1755   DRM_WARN("backlight node not found\n");

1779         DRM_ERROR("222, backlight node not found\n");

0106C < 4> [    3.964906] [09-21 04:16:01.964] [drm] backlight node not found

0106D < 3> [    3.965162] [09-21 04:16:01.965] [drm:sprd_panel_probe [sprd_drm]] *ERROR* 222, backlight node not found  自己加的打印

与之对应的,  IC  侧背光会走到:

在   sprd_oled_backlight_init  函数中

1331   p = of_get_property(oled_node, "sprd,reg-lock", &bytes);

1332   if (p) {1333   info->cmds[CMD_OLED_REG_LOCK] = p;

1334   info->cmds_len[CMD_OLED_REG_LOCK] = bytes;

1335   } else

1336   DRM_INFO("can't find sprd,reg-lock property\n");

1337  

1338   p = of_get_property(oled_node, "sprd,reg-unlock", &bytes);

1339   if (p) {

1340   info->cmds[CMD_OLED_REG_UNLOCK] = p;

1341   info->cmds_len[CMD_OLED_REG_UNLOCK] = bytes;

1342   } else1343   DRM_INFO("can't find sprd,reg-unlock property\n");

1371   DRM_INFO("%s() ok\n", __func__);

0107C < 6> [    4.029786] [09-21 09:36:27.029] [drm] sprd_oled_backlight_init() ok

0107A < 6> [    4.029778] [09-21 09:36:27.029] [drm] can't find sprd,reg-lock property

0107B < 6> [    4.029781] [09-21 09:36:27.029] [drm] can't find sprd,reg-unlock property

0107C < 6> [    4.029786] [09-21 09:36:27.029] [drm] sprd_oled_backlight_init() ok

如果两个背光都加上,则会死机:

[   19.535857]c0 [  T349] [<c01129d4>] (unwind_backtrace) from [<c010e18c>] (show_stack+0x20/0x24)

[   19.535891]c0 [  T349] [<c010e18c>] (show_stack) from [<c0d5c624>] (dump_stack+0x88/0xb4)

[   19.535928]c0 [  T349] [<c0d5c624>] (dump_stack) from [<c03d6dac>] (sysfs_warn_dup+0x68/0x74)

[   19.535966]c0 [  T349] [<c03d6dac>] (sysfs_warn_dup) from [<c03d713c>] (sysfs_do_create_link_sd+0xa0/0xdc)

[   19.536003]c0 [  T349] [<c03d713c>] (sysfs_do_create_link_sd) from [<c074f358>] (device_add+0x2a0/0x7c0)

[   19.536024]c0 [  T349] [<c074f358>] (device_add) from [<c06637cc>] (backlight_device_register+0x11c/0x204)

[   19.536064]c0 [  T349] [<c06637cc>] (backlight_device_register) from [<c0663a94>] (devm_backlight_device_register+0x64/0xa0)

[   19.536649]c0 [  T349] [<c0663a94>] (devm_backlight_device_register) from [<bf102ee8>] (sprd_panel_probe+0x4c8/0x914 [sprd_drm])

[   19.537130]c0 [  T349] [<bf102ee8>] (sprd_panel_probe [sprd_drm]) from [<c07546e4>] (really_probe+0x130/0x498)

[   19.537166]c0 [  T349] [<c07546e4>] (really_probe) from [<c07544d0>] (driver_probe_device+0xc8/0x1ac)

[   19.537199]c0 [  T349] [<c07544d0>] (driver_probe_device) from [<c0754cec>] (device_driver_attach+0x60/0x68)

[   19.537233]c0 [  T349] [<c0754cec>] (device_driver_attach) from [<c0754de8>] (__driver_attach+0x44/0x13c)

[   19.537271]c0 [  T349] [<c0754de8>] (__driver_attach) from [<c075244c>] (bus_for_each_dev+0x98/0xc8)

[   19.537310]c0 [  T349] [<c075244c>] (bus_for_each_dev) from [<c0752b80>] (bus_add_driver+0x11c/0x230)

[   19.537346]c0 [  T349] [<c0752b80>] (bus_add_driver) from [<c07568f8>] (driver_register+0x78/0x10c)

[   19.537771]c0 [  T349] [<c07568f8>] (driver_register) from [<bf177068>] (init_module+0x68/0x1000 [sprd_drm])

[   19.538193]c0 [  T349] [<bf177068>] (init_module [sprd_drm]) from [<c0102ea0>] (do_one_initcall+0x68/0x2b4)

[   19.538236]c0 [  T349] [<c0102ea0>] (do_one_initcall) from [<c01ef7cc>] (do_init_module+0x58/0x1f0)

[   19.538275]c0 [  T349] [<c01ef7cc>] (do_init_module) from [<c01eed74>] (load_module+0x1b10/0x2078)

[   19.538312]c0 [  T349] [<c01eed74>] (load_module) from [<c01ebbec>] (sys_finit_module+0xf4/0x11c)

[   19.538348]c0 [  T349] [<c01ebbec>] (sys_finit_module) from [<c0101000>] (ret_fast_syscall+0x0/0x54)

[   19.538364]c0 [  T349] Exception stack(0xe8a0bfa8 to 0xe8a0bff0)

[   19.538395]c0 [  T349] bfa0:                   ffffffff 00000000 00000004 becf8589 00000000 00000000

[   19.538431]c0 [  T349] bfc0: ffffffff 00000000 00000000 0000017b becf8768 becf8748 00000000 becf8589

[   19.538455]c0 [  T349] bfe0: becf8580 becf8570 0041a87d b69e84ac

[   19.539126]c0 [  T349] [drm:sprd_panel_probe [sprd_drm]] *ERROR* failed to register oled backlight ops

[   19.539172]c0 [  T349] ------------[ cut here ]------------

2023,1,18

focal      敦泰

ilitek      奕力

lcetron   联创

easyquick  易快来

#ifdefine   和 #else在vscode中可以用- 来折叠

帧率不够   ->  硬件刷新率是否  58? 测mipi波形,TE信号    ,systrace 上层帧率

查看当前应用名       adb  shell   "dumpsys window | grep -i  mCurrent"

通过应用名来找  pid  在systrace  上确认看哪个的  UI  Thread  和  Render       adb  shell  "ps -ef | grep -i baidu"

将图片  push   到手机里

DCIM\camera

python -m ensurepip --default-pip   python  安装 pip

kernel.log  里休眠唤醒关键字

zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare

cat /dev/kmsg  |grep  -E  'zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare'

adb shell  "cat /dev/kmsg  |grep  -E  'zte powerkey pressed|sprd_panel_prepare|sprd_panel_enable|dpu_run|sprd_pwm_backlight_update|dpu_stop|sprd_panel_disable|sprd_panel_unprepare'"

S11   kernel   唤醒流程

6,23423832,258168913650,c0,-,caller=T21153;gpio_keys_gpio_report_event:zte powerkey pressed!

6,23423837,258168945442,c3,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()

6,23423838,258168945452,c3,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()

6,23423848,258168947417,c3,-,caller=T1220;[drm] sprd_panel_prepare()      avdd置1   avee置1    reset  按照dtsi   sprd,reset-on-sequence  中 高低高

6,23423849,258168947421,c3,-,caller=T1220;[drm] sprd_panel_prepare() tpd:lcd power on

6,32652,1055991469,c7,-,caller=T640;[drm] sprd_panel_enable() lcd_name=lcd_huaying_st7123_boe_6p517_mipi_hd_4lane    发 initial  code

6,32653,1055991470,c7,-,caller=T640;[drm] This panel ic is not icnl9911c

6,23423901,258169104751,c0,-,caller=T21153;gpio_keys_gpio_report_event:zte powerkey released!

6,23423961,258169190383,c1,-,caller=T1220;[drm][             dpu_run] dpu run

6,23423965,258169195653,c1,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()

6,23423966,258169195662,c1,-,caller=T1220;[drm] sprd_dsi_connector_best_encoder()

6,23423979,258169201346,c1,-,caller=T664;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 34ms

6,23423991,258169223960,c3,-,caller=T388;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 90

S11   cat  /dev/kmsg    切帧率流程

6,65066356,241339120521,c2,-,caller=T835;[drm] sprd_dpu_enable_vblank()

6,65066358,241339154596,c0,-,caller=T633;[drm] vrr going, flush current esd work and cancel ongoing work

6,65066359,241339154624,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()

6,65066360,241339154629,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()

6,65066361,241339154642,c0,-,caller=T633;[drm] sprd_dpu_mode_valid() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0

6,65066362,241339154646,c0,-,caller=T633;[drm] sprd_dsi_encoder_atomic_check()

6,65066363,241339154664,c0,-,caller=T633;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,65066364,241339154673,c0,-,caller=T633;[drm] sprd_dpu_disable_vblank()

6,65066365,241339154704,c0,-,caller=T633;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0

6,65066366,241339154710,c0,-,caller=T633;[drm][         dpu_modeset] begin switch to 720 x 1600

6,65066367,241339154716,c0,-,caller=T633;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 90 128000 720 756 760 796 1600 1760 1764 1796 0x40 0x0

6,65066368,241339154722,c0,-,caller=T633;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)

6,65066369,241339154723,c0,-,caller=T633;[drm] skip dsi resume

6,65066370,241339154795,c2,-,caller=T835;[drm] sprd_dpu_enable_vblank()

6,65066371,241339177230,c2,-,caller=T362;[drm][  dpu_wait_stop_done] dpu is idle now

6,65066372,241339177236,c2,-,caller=T362;[drm][            dpu_stop] dpu stop

6,65066373,241339177686,c2,-,caller=T362;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 90

6,65066374,241339177693,c2,-,caller=T362;[drm] vrr finished, schedule esd work

6,65066382,241339754298,c0,-,caller=T633;[drm] vrr going, flush current esd work and cancel ongoing work

6,65066383,241339754333,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()

6,65066384,241339754346,c0,-,caller=T633;[drm] sprd_dsi_connector_best_encoder()

6,65066385,241339754368,c0,-,caller=T633;[drm] sprd_dpu_mode_valid() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,65066386,241339754377,c0,-,caller=T633;[drm] sprd_dsi_encoder_atomic_check()

6,65066387,241339754405,c0,-,caller=T633;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,65066388,241339754418,c0,-,caller=T633;[drm] sprd_dpu_disable_vblank()

6,65066389,241339754489,c0,-,caller=T633;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,65066390,241339754500,c0,-,caller=T633;[drm][         dpu_modeset] begin switch to 720 x 1600

6,65066391,241339754515,c0,-,caller=T633;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,65066392,241339754527,c0,-,caller=T633;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)

6,65066393,241339754531,c0,-,caller=T633;[drm] skip dsi resume

6,65066394,241339754657,c1,-,caller=T835;[drm] sprd_dpu_enable_vblank()

6,65066396,241339780439,c1,-,caller=T362;[drm][  dpu_wait_stop_done] dpu is idle now

6,65066397,241339780447,c1,-,caller=T362;[drm][            dpu_stop] dpu stop

6,65066398,241339781186,c1,-,caller=T362;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 60

6,65066399,241339781197,c1,-,caller=T362;[drm] vrr finished, schedule esd work

S11   cat  /dev/kmsg    休眠打印

6,113727,1113232372,c1,-,caller=T204;gpio_keys_gpio_report_event:zte powerkey pressed!

6,113729,1113416207,c1,-,caller=T204;gpio_keys_gpio_report_event:zte powerkey released!

6,430206,8568900393,c3,-,caller=T9897;[drm] sprd_dsi_connector_best_encoder()

6,430207,8568900397,c3,-,caller=T9897;[drm] sprd_dsi_connector_best_encoder()

6,430208,8568900403,c3,-,caller=T9897;[drm] sprd_dsi_encoder_atomic_check()

6,430210,8568902470,c2,-,caller=T9897;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,430211,8568918937,c2,-,caller=T9897;[drm][  dpu_wait_stop_done] dpu is idle now

6,430212,8568918944,c2,-,caller=T9897;[drm][            dpu_stop] dpu stop

6,430213,8568918958,c2,-,caller=T9897;[drm] sprd_dpu_disable_vblank()

6,430214,8568919385,c2,-,caller=T9897;[drm] sprd_panel_disable() cmds_len=68          发  sleep  in   command

6,430217,8568919405,c2,-,caller=T9897;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend powe off

6,430219,8568919458,c2,-,caller=T9897;[drm][sprd_pwm_backlight_update] last_backlevel == level,no set 0 => 0

6,430227,8569084170,c0,-,caller=T9897;[drm] sprd_panel_unprepare()

6,30169,845388106,c2,-,caller=T840;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1   avee  置0     avdd   置0    reset  按照dtsi   sprd,reset-off-sequence  中置 1

6,430228,8569124483,c4,-,caller=T9897;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off

6,430230,8569124571,c4,-,caller=T9897;[drm] sprd_dpu_atomic_disable()

6,430280,8569344941,c0,-,caller=T761;[drm][  dpu_enhance_backup] enhance module disable backup: 0x1c0

插拔  usb  打印关键词   usb_ch   500  是插线,0 是拔线

android.log  里与休眠唤醒关键字

Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to

Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to|WindowManager

logcat |grep  -E  'Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to'

adb shell  "logcat |grep  -E  'Powerkey down|Powerkey up|setting power mode|Waking up from Asleep|sprd_backlight|Going to sleep due to'"

P720F03    android log  的屏幕唤醒流程:

Line 351656: S0528FD  07-11 19:05:39.584  1594  1795 D WindowManager: Receive Input KeyEvent of Powerkey down   windows  manager  收到按键按下

Line 351683: S052918  07-11 19:05:39.587  1594  1795 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_POWER_BUTTON, details=android.policy:POWER)...                  唤醒

Line 351823: M05296D  07-11 19:05:39.602   700   700 D SurfaceFlinger: Setting power mode 2 on display 0       设置亮屏

Line 353435: S052FA6  07-11 19:05:39.770  1594  1795 D WindowManager: Receive Input KeyEvent of Powerkey up      windows  manager  收到按键松开

Line 353691: M0530A6  07-11 19:05:39.899   700   700 D SurfaceFlinger: Finished setting power mode 2 on display 0               设置亮屏完成 ; 对应 kernel  里的上电和初始化

Line 353714: M0530BD  07-11 19:05:39.905   668   668 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=73     写亮度节点,亮屏

P720S11    android log  的屏幕唤醒流程:

03-03 09:03:28.044    13    13 I gpio_keys_gpio_report_event: zte powerkey pressed!

03-03 09:03:28.054  1553  1729 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_POWER_BUTTON, details=android.policy:POWER)...           因电源键唤醒

03-03 09:46:10.104  1554  5773 I PowerManagerService: Waking up from Asleep (uid=1000, reason=WAKE_REASON_GESTURE, details=com.zte.zgesture:RaiseWake)...         因抬手亮屏唤醒

03-03 09:03:28.071   696   696 D SurfaceFlinger: Setting power mode 2 on displ

03-03 09:03:28.246    13    13 I gpio_keys_gpio_report_event: zte powerkey released!

03-03 09:03:28.306   696   696 D SurfaceFlinger: Finished setting power mode 2 on display 0

03-03 09:03:28.318   654   654 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=150

P720F03    android log  的屏幕休眠流程:

Line 353965: S05318D  07-11 19:05:49.583  1594  1703 I PowerManagerService: Going to sleep due to timeout (uid 1000)...

Line 354094: M05320E  07-11 19:05:49.701   668   668 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=0

Line 354180: M05323D  07-11 19:05:49.710   700   700 D SurfaceFlinger: Setting power mode 0 on display 0

Line 354653: M053416  07-11 19:05:50.023   700   700 D SurfaceFlinger: Finished setting power mode 0 on display 0

P720S11      android log  的屏幕休眠流程:

03-03 09:07:52.669    13    13 I gpio_keys_gpio_report_event: zte powerkey pressed!

03-03 09:07:52.872    13    13 I gpio_keys_gpio_report_event: zte powerkey released!

03-03 09:48:14.008  1554  1554 I PowerManagerService: Going to sleep due to power_button (uid 1000)...   power键休眠

03-03 09:46:20.751  1554  1646 I PowerManagerService: Going to sleep due to timeout (uid 1000)...             超时导致休眠

03-03 09:46:20.756   659   659 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=0          关背光

03-03 09:46:20.786   751   751 D SurfaceFlinger: Setting power mode 0 on display 0        设置灭屏

03-03 09:46:20.995   751   751 D SurfaceFlinger: Finished setting power mode 0 on display 0       设置灭屏完成

几个项目的亮度条最中间的背光亮度

   项目                                           logcat                                          dev

P720S11_T                               73/255=0.286                         70->280/255->1023 =0.274

P963F94_T                               22/255=0.086                        369/4095=0.09

Z5302O_T                                23/255=0.09                          22/255=0.086

P963F80_R                              129/255=0.50                        88/255=0.34

P963F23_S GO                         22/255=0.098                       22/255=0.098

S11  转换亮度的  log

中间亮度,在把  overlay  中数组改成线性背光之前:

pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n",  __func__, bl->min_level, bl_preset, bl_convert, level);

6,39079,1049625133,c1,-,caller=T657;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 125 min_level:11   

下发   67 ,在   overlay  中数组第  67 个数字是   125   ,67/255=0.262      125/1024=0.122

中间亮度,在把  overlay  中数组改成线性背光之后:

pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n",  __func__, bl->min_level, bl_preset, bl_convert, level);

6,39079,1049625133,c1,-,caller=T657;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 268 min_level:11   

下发   67 ,在   overlay  中数组第  67 个数字是   268 ,  67/255=0.262       268/1024=0.261

(在logcat  中打印 :

08-22 00:58:22.693   657   657 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=67

08-22 02:01:32.014   657   657 I [drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:67 => 268 min_level:11

如果打开  CONFIG_ZTE_LCD_BACKLIGHT_LEVEL_CURVE   宏控,则中间还会再转换一次亮度:   level   ->   convert   ->   level  ,不过此宏控删掉很久了

pr_info("%s: brightness min:%u old: %u => zte:%u => level:%u\n", __func__, bl->min_level, bl_preset, bl_convert, level);

6,134755,1223094972,c3,-,caller=T671;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: 222,brightness min:11 old: 67 => zte:31 => level:124

67 是下发的亮度,   在    comm.c  里的数组第   67 个数字找到    convert  = 31  ,在 overlay   里的数组第  31  个数字找到  level = 124       ,67/255=0.262      31/255=0.121      124/1024=0.121

(在  logcat   中打印:

08-28 14:19:34.079   671   671 D LIGHTS  : func:write_int, path=/sys/class/backlight/sprd_backlight/brightness, value=67

08-28 14:21:23.215   671   671 I [drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: 222,brightness min:11 old: 67 => zte:31 => level:124

提  cq  的联系人:   yang.chaofeng@zte.com.cn,yang.yanpeng@zte.com.cn,wang.jianping3@zte.com.cn,dong.yuanjie@zte.com.cn,qu.tao5@zte.com.cn,

P720S16  华映屏闪屏,且log  出现  "Warning: (vsync + vbp) < 32,   underflow risk!\n"   和  dpu  underflow  打印 ,  cq    SPCSS01196644

adb shell "cat /sys/class/devfreq/scene-frequency/sprd-governor/ddrinfo_freq_table"        查看可用  lcdon   频率

http://10.67.16.29:8080/c/device/sprd/mpool/+/1085969   去掉  tp  驱动

notepad++   搜索框不见了,  F7  后按  ALT +  space     或者双击下边栏

在  0-android_system.log

07-14 14:28:24.055  1605  2907 D RefreshRate: setDesiredConfig fps : 90, who : touch, isUnlockCompleted : true, testing : false   // 框架设置刷新率成功

07-14 14:28:24.100  1605  1771 D RefreshRate: onUEvent status : 90   // 驱动上报切换后的刷新率值

adb  shell  "dumpsys SurfaceFlinger |grep refresh"     查看有哪些刷新率可选

esd  恢复流程

6,97320,525878530,c3,-,caller=T878;[drm] sprd_dpu_enable_vblank()

6,97367,531164654,c0,-,caller=C0;[drm] sprd_dpu_disable_vblank()

6,97387,531958399,c7,-,caller=T6806;[drm][        dwrite_store] [SPRD_LCD]dtype = 0x05,write cmd = 0x10,length = 0x02

3,97390,533148955,c0,-,caller=T486;[drm:sprd_panel_te_check [sprd_drm]] *ERROR* TE esd timeout.

6,97391,533148982,c0,-,caller=T486;[drm] ====== esd recovery start ========

6,97392,533148989,c0,-,caller=T486;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,97393,533153579,c0,-,caller=T486;[drm][  dpu_wait_stop_done] dpu is idle now

6,97394,533153581,c0,-,caller=T486;[drm][            dpu_stop] dpu stop

6,97395,533153944,c0,-,caller=T486;[drm] sprd_panel_disable() cmds_len=68

6,97398,533153956,c0,-,caller=T486;[drm][lcd_tpd_notifier_callback] [SPRD_LCD]lcd_tpd_notifier_callback:lcd suspend powe off

6,97400,533153966,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:96 => 0 min_level:11

6,97408,533320661,c0,-,caller=T486;[drm] sprd_panel_unprepare()

6,97409,533320677,c0,-,caller=T486;[drm] sprd_panel_unprepare() set lcd reset_gpio to 1

6,97422,533360743,c0,-,caller=T486;[drm] sprd_panel_unprepare() tpd: suspend don' need power on, lcd power off

6,97424,533360789,c0,-,caller=T486;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)

6,97425,533360824,c0,-,caller=T486;[drm][       sprd_dsi_init] escape clock divider = 5

6,97426,533360959,c0,-,caller=T486;[drm][      sprd_dphy_init] lanes : 4

6,97427,533360961,c0,-,caller=T486;[drm][      sprd_dphy_init] freq : 768000

6,97428,533361934,c0,-,caller=T486;[drm] sprd_panel_prepare()

6,97429,533361936,c0,-,caller=T486;[drm] sprd_panel_prepare() tpd:lcd power on

6,97437,533437929,c0,-,caller=T486;[drm] sprd_panel_enable() lcd_name=lcd_icnl9911c2_easyquick_hkc_6p517_mipi_hd_chipone_4lane

6,97438,533437933,c0,-,caller=T486;[drm] icnl9911c_f6=0x2e

6,97447,533608508,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:96 => 385 min_level:11

6,97448,533608514,c0,-,caller=T486;[drm][sprd_pwm_backlight_update] [SPRD_LCD]sprd_pwm_backlight_update delay 34ms

6,97453,533652796,c0,-,caller=T486;[drm][             dpu_run] dpu run

6,97454,533652838,c0,-,caller=T486;[drm] ======= esd recovery end =========

6,97455,533652840,c0,-,caller=T486;[drm] esd_count is 1

6,450081,10126834475,c1,-,caller=T891;[drm] vrr going, flush current esd work and cancel ongoing work

6,450082,10126834506,c1,-,caller=T891;[drm] sprd_dsi_connector_best_encoder()

6,450083,10126834511,c1,-,caller=T891;[drm] sprd_dsi_connector_best_encoder()

6,450084,10126834526,c1,-,caller=T891;[drm] sprd_dpu_mode_valid() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,450085,10126834531,c1,-,caller=T891;[drm] sprd_dsi_encoder_atomic_check()

6,450086,10126834553,c1,-,caller=T891;[drm] sprd_dsi_encoder_disable(last_dpms=0, dpms=0)

6,450087,10126834561,c1,-,caller=T891;[drm] sprd_dpu_disable_vblank()

6,450088,10126834608,c1,-,caller=T891;[drm] sprd_dpu_mode_set_nofb() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,450089,10126834616,c1,-,caller=T891;[drm][         dpu_modeset] begin switch to 720 x 1600

6,450090,10126834629,c1,-,caller=T891;[drm] sprd_dsi_encoder_mode_set() mode: "720x1600": 60 128000 720 756 760 796 1600 2622 2626 2658 0x48 0x0

6,450091,10126834637,c1,-,caller=T891;[drm] sprd_dsi_encoder_enable(last_dpms=0, dpms=0)

6,450092,10126834640,c1,-,caller=T891;[drm] skip dsi resume

6,450093,10126835544,c1,-,caller=T878;[drm] sprd_dpu_enable_vblank()

6,450095,10126874776,c3,-,caller=T388;[drm][  dpu_wait_stop_done] dpu is idle now

6,450096,10126874786,c3,-,caller=T388;[drm][            dpu_stop] dpu stop

6,450097,10126875872,c3,-,caller=T388;[drm][zte_panel_fps_send_uevent] [SPRD_LCD]FPS: send fps 60

6,450098,10126875880,c3,-,caller=T388;[drm] vrr finished, schedule esd work

S11  格科屏检测  id   的流程:

[00002872] [c1] cpu num 1

[00002873] [c0] creating secondary task

[00002876] [c1] entering scheduler on cpu 1

[00002879] [c0] arch_context_switch: cpu 0, old 0xb5722018 (bootstrap2, pri 16, flags 0x27), new 0xb5729318 (sprd_preload, pri 24, flags 0x27)

[00002890] [c1] arch_context_switch: cpu 1, old 0xb5197790 (idle 1, pri 0, flags 0x11), new 0xb5726418 (secondarybootstrap2, pri 16, flags 0x27)

[00002902] [c0] [lk core0] enter sprd_preload

[00002905] [c1] arch_context_switch: cpu 1, old 0xb5726418 (secondarybootstrap2, pri 16, flags 0x27), new 0xb572b718 (sprd_lcd, pri 24, flags 0x27)

[00002917] [c1] [lk core1] enter sprd_lcd

[00002920] [c1] lcd start init time:2920ms

[00002923] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0xfffe OPT_ID=0x9f name=lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus

[00002936] [c1] [sprdfb][sprd_panel_probe] zte_lcd_detect sprd_t v1.0.0 ,there has no read panel id

[00002959] [c1] [sprdfb][mipi_dsi_init] escape clk div = 5

[00002964] [c1] [sprdfb][sprd_dsi_resume] dsi init OK

[00002967] [c1] [sprdfb][mipi_dphy_configure] lanes : 4

[00002971] [c1] [sprdfb][mipi_dphy_configure] freq : 768000

[00002977] [c1] [sprdfb][sprd_dphy_resume] dphy init OK

[00002981] [c1] [sprdfb][icnl9911c2_power] icnl9911c2_power on

[00003160] [c1] [sprdfb][icnl9911c2_readid] icnl9911c2 V2 read id:0x4a,0x0,0x0,0x0

[00003166] [c1] [sprdfb][icnl9911c2_power] icnl9911c2_power off V2

[00003201] [c1] [sprdfb][sprd_dphy_suspend] dphy uninit OK

[00003206] [c1] [sprdfb][sprd_dsi_suspend] dsi uninit OK

[00003211] [c1] [sprdfb][sprd_panel_probe] attach panel 0x9f failed, try next...

[00003217] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0x4a OPT_ID=0xa3 name=lcd_chipone_icnl9911c2_easyquick_mipi_hdplus

[00003229] [c1] [sprdfb][sprd_panel_probe] zte sprd_panel_probe begin zte_lcd_detect_id = 0x4a OPT_ID=0x4a name=lcd_gc7202_skyworth_galaxycore_mipi_hdplus

[00003258] [c1] [sprdfb][mipi_dsi_init] escape clk div = 7

[00003262] [c1] [sprdfb][sprd_dsi_resume] dsi init OK

[00003266] [c1] [sprdfb][mipi_dphy_configure] lanes : 4

[00003270] [c1] [sprdfb][mipi_dphy_configure] freq : 1012480

[00003275] [c1] [sprdfb][sprd_dphy_resume] dphy init OK

[00003279] [c0] load boot.img succeed!!

[00003282] [c1] [sprdfb][gc7202_power] gc7202_power on

[00003461] [c1] [sprdfb][sprd_panel_probe] attach panel 0x4a success twice

[00003466] [c1] i2c6, freq=100000

[00003469] [c1] i2c6, freq=100000

[00003472] [c1] i2c6, freq=100000

[00003475] [c1] [sprdfb][zte_set_vsp_vsn_power] zte_set_vsp_vsn_power to 6V sucess

[00003481] [c1] [sprdfb][gc7202_init] gc7202_init start

[00003627] [c1] [sprdfb][sprd_panel_probe] panel_init info->is_icnl9911c=0 ,supported_panel[i].lcd_id=74

[00003635] [c1] [sprdfb][calc_dpi_clk_src] calc DPI_CLK_SRC failed, use default

[00003641] [c1] [sprdfb][dispc_clk_init] DPU_CORE_CLK = 614000000

[00003646] [c1] [sprdfb][dispc_clk_init] DPI_CLK_SRC = 256000000

[00003651] [c1] [sprdfb][dispc_clk_init] DPU_CORE_CLK = 614000000, DPI_CLK_DIV = 8

[00003657] [c1] [sprdfb][dpu_run] dpu run

[00003660] [c1] [sprdfb][sprd_dispc_resume] dispc init OK

[00003664] [c1] [sprdfb][logo_mem_init] splashimage addr is 0x0x9d000000, fb size is 0x9e4000

[00003672] [c1] logo memory init success.

[00003674] [c1] splash_get_bpix:  ZTE_LCD_DISPLAY_SPLASH defined bpix = 8

[00003680] [c1] [sprdlk][lcd_init] [LCD] Using LCD frambuffer at 0xb0000000

[00003686] [c1] [sprdlk][lcd_clear] [LCD] setting up console...

[00003690] [c1] lcd_console: have 90/100 col/rws on scr 720x1600 (0 deg rotated)

[00003861] [c0] load vendor_boot.img succeed!!

[00003864] [c1] Found Data: name=zte_variantflag; head=this-is-cfg-head; str=UNI_CN; signature=cfg-signature-is-here

[00003873] [c0] sprd_preload consume 974ms

[00003876] [c1] getcfgbyname cfgname=zte_variantflag, c=this-is-cfg-head

unlock   的方法 (解  bl  锁)为了push  东西到手机

1、adb reboot bootloader

2、fastboot flashing unlock_bootloader  C:\Users\10335101\Downloads\adb1039_fastboot_unlock_newkey\signature_file    此时无adb 口,直接用此命令即可

3、按音量下键,显示成功后

4、fastboot reboot

5、adb push D:\MYFILE\OLD\apk\fps_mode_test.sh       system/bin/    

6、nohup fps_mode_test.sh &

7、adb   push   失败可以  adb  root  再  adb   remount  重启后需要重新  adb   root  和  adb   remount

如果要看  TA   分支的代码,可以拉下来。  先  repo   init  (不加 --depth=1)  ,随后  repo   sync   (不加-c)  ,再 git   branch   查看有哪些分支名,再  git    checkout   分支名  

切换分支

跳过开机向导命令

adb shell settings put secure user_setup_complete 1

adb shell settings put global device_provisioned 1

adb reboot

打开刷新率

adb  shell service call SurfaceFlinger 1034 i32 1

aio   自测用例 取代码命令:

拉代码命令:

git clone "http://10335101@10.67.16.29:8080/a/platform/tools/testcase"   -b tradefed   && (cd "testcase" && mkdir -p .git/hooks && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg http://10335101@10.67.16.29:8080/tools/hooks/commit-msg; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)

(从网页里找        http://10.67.16.29:8080/admin/repos/platform/tools/testcase    windows  系统建议从网页带  http  的命令拉)

推送

git push origin HEAD:refs/for/tradefed

参考资料:

1、这是其他同事写的 py的测试用例,可以先参考下。py的用例编写比较简单。

http://10.67.16.29:8080/plugins/gitiles/platform/tools/testcase/+/refs/heads/tradefed/P_testcase/testcases/

2、这里是配置文件,用例编写完如果需要上线测试,需要加上配置文件。

http://10.67.16.29:8080/plugins/gitiles/platform/tools/testcase/+/refs/heads/tradefed/P_testcase/config

3、代码库修改记录查询

http://10.67.16.29:8080/q/project:platform%252Ftools%252Ftestcase

4、每日构建 AIO 项目

https://ct.zd.zte.com.cn/view=Dailybuild&view_type=all

5、云真机

http://ct.zd.zte.com.cn/pandora

取 CQ 中的patch 文档   主机名  ftp.unisoc.com    用户名  zte_sh    密码  3hTzs3tk  再  通用设置里  改为  HTTP/1.1  代理主机  proxysh.zte.com.cn  代理端口 80  

time ./build.sh P720S11_T  -S  -I -v userdebug  -m vendor_dlkmimage  -j 40  可编译sprd-drm.ko

生成的ko在目录      Z:\sprd\P720S11_T1\out\target\product\ums9620_2h10\vendor_dlkm\lib\modules\sprd-drm.ko   大小1.13M

adb push   D:\MYFILE\sprd-drm.ko       ./vendor_dlkm/lib/modules/sprd-drm.ko  

push到手机

adb shell "cat /dev/kmsg | grep   -E 'esd|fps'"           查看帧率和esd的打印

adb shell "cat   /sys/class/display/panel0/esd_check_enable"     查看  esd   打开与否

P720S11是平台侧输出pwm波控制背光,生效的是 xref: /SPRD_T_5G_V1-P720S11_T/bsp/modules/kernel5.4/display/dispc/sprd_bl.c    log关键字

last_backlevel == level,     no set200 => 657       189      .update_status = sprd_pwm_backlight_update,    

6,274710,934998704,c2,-,caller=T670;[drm][sprd_pwm_backlight_update] sprd_pwm_backlight_update: brightness level:88 => 353 min_level:11

P932F22是IC侧输出pwm波控制背光,生效的是   xref: /SPRD_S_GO-P932F22_S/bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/sprd_dsi_panel.c   log关键字 last_backlevel == level, so no set     

     1284   .update_status = sprd_oled_set_brightness,

6,65234,182203472,c1,-,caller=T756;[drm] sprd_oled_set_brightness level:979 --> convert_level:979 oled->cmds_total:1 bl_register_len:12

&panel {

sprd,backlight = <&pwm_backlight>;

reset-gpio = <&ap_gpio 11 GPIO_ACTIVE_HIGH>;

};

&dpu {

sprd,logo-memory = <&logo_reserved>;

sprd,backlight = <&pwm_backlight>;

/* if we need use fastcall for widevine, open the following config */

// sprd,widevine-use-fastcall;

};

F22 IC侧背光

&dpu {

  sprd,logo-memory = <&logo_reserved>;

   };

背光控制:

平台侧提供PWM:

   |  7731E  CPU   | __________输出pwm波_________|上贴电阻,表示CPU和BL芯片连通了| _________ |BL芯片,(背光芯片)| ______________A=20V ,K=0V ,电压加在二极管两端,产生背光   ---|>-|>---(二极管)                                                                                                                                    。

                                                                                                                                                     |  

                                                                                                                                                   屏,此处屏与BL芯片断开,没有连背光芯片                                                                                                                                 

IC侧提供PWM:

   |  7731E  CPU   | __________通过mipi信号,mipi协议,将控制亮度的51寄存器写值,比如写入FF,调到最亮 _________|屏的IC,比如7701s,连接BL芯片| _________ |BL芯片,(背光芯片)| __________| 输出pwm波  | ___________A=20V ,K=0V ,电压加在二极管两端,产生背光   ---|>-|>---(二极管)                                                                                                     。

                                                                                                                                                                                                                                                                                                                                                         |

                                                                                                                                                                                                                                                                                                                                                     CPU,此处CPU与BL芯片断开,没有连背光芯片                     

 image.png

 ap写  IC  的 51  (IC 的亮度寄存器)和53  (开关)

当51  寄存器存  FF  表示调到最亮,00  表示调到最暗  ,能控制占空比

当53 寄存器存 24 表示打开pwm     一下子亮,直接亮    ;   当53 寄存器存  2C 表示打开  dimming  功能

ENP    对应dtsi中的 CONFIG_LCM_GPIO_AVDDEN

ENN    对应dtsi中的 CONFIG_LCM_GPIO_AVEEEN

                                        ___________          通过mipi_dsi给51寄存器写值来调节占空比,占空比影响电压电流,从而影响功率,亮度跟着变    

                                   ___|___           |               表明AP侧提供背光

                                   |_____|--二极管                        /

                                        |                                       /

         ____ 贴上电阻____PWM______N/A(表示断开)____________

         |                                                                                       |

         |                                                                              ______|________

 |AP芯片|(CPU,UMS9620是CPU型号) ----------->|显示IC()        |

   |                                                                                  |         LCD     |            电压1.8V,默认正负5V,在dtsi中bias_config里写入14就是在调节电压到6V

   |                                                                                  |______________|

   |                  _______                     ______                                 |

   |____________|PMIC|______1.8v___|LDO|______________________|

                                                                                       ______________

 |AP芯片|(CPU,UMS9620是CPU型号) ----------->|显示IC()        |

   |                                                                              /   |         LCD     |            1.8V,正负5V

   |                                                                            /     |______________|

   |                  _______                     ______    发送PWM波         |

   |____________|PMIC|______1.8v___|LDO|______________________|

  

PMIC是power manager  IC,电源管理

LDO相当于开关,打开关闭                                                                           

4路mipi的话,差分电路,4*2=8,再加上2路时钟信号,总共10条线路

软件dtsi文件中的lcd_id和硬件lcd  id是不一样的,dtsi中的lcd_id是通过烧录寄存器,软件通过排线读取lcd上的ic里的寄存器来确认

硬件lcd  id是靠硬件搭出来的电路状态来确认

LCM BIAS DRIVER 是lcd的供电驱动

LCM BACKLITHT DRIVER  是lcd的背光驱动

亮屏时序 : 先ui显示,再打开背光   防止异常显示

灭屏时序: 先关背光,再停图  防止异常显示

                                                                                       _____________

 AP芯片(quantum,mtk,sprd)刷图       ------------>|显示IC()         |

                                                                                 /   |          LCD     |

                                                                               /     |______________|

                                                                  发送PWM波  

                                                                                 

reset时序:

在kernel里     sprd,reset-on-sequence = <1 50>, <0 50>, <1 120>;

在lk里   在    .c   的     power函数里      sprd_gpio_request(CONFIG_LCM_GPIO_RSTN);

sprd_gpio_direction_output(CONFIG_LCM_GPIO_RSTN, 1);

没下成功初始化,打印异常log

dsi_wait_tx_cmd_fifo_empty|dsi_wait_tx_payload_fifo_empty   

单个的dtsi   编译成dtb  编进 bootimage

dtbo是dtb的overlay ,改了overlay    编进dtboimage  

拉最新的代码

git   status    

git   log

git   diff   > patch.patch

git   reset  --hard   节点

repo   sync   -c    bsp/kernel/kernel5.4    或者  git   pull   

S11 为了看版本号,进工程模式的方法:

进工程模式     *#*#983#*#*

一级解锁     *983*673636#

进真正工程模式      *987*0#     可以看到版本号

*983*#1024#   变形金刚标志位

*983*0#   各项测试界面

手机开root方法   为了cat   /dev/kmsg   ,user  版本无法cat   问题

adb shell getprop |findstr signature  查看下载软件的密钥,下载对应的apk

在  *#*983#*#*  再   *983*1024#   找到右上角扫码鉴权

*#*#983#*#*

同时手机安装软件    adb   install   "C:\Users\10335101\Downloads\SecureEmode-S-signed.apk"    用网站对应的apk

*#983*1024#      安装完apk 后才会显示扫码界面

安装成功后在网站上扫码         https://zd.zte.com.cn/secureemode/

P720S09开log方法:*#*#83781#*#* ,DEBUG&LOG里的YLOG如果是灰色的YLog表示没开

vysor  连接错误和用adb  install装软件失败,可用   adb shell vendorcfg -s -nzte.anti_usb_install -r0  ,解决不能安装软件问题,之后再重启生效

查看S11   创维屏  initial  code  是否生效     亮屏下执行,灭屏执行会死机

adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"

adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite"            前两行是解锁,用的initial  code最前两行

adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite"                     切page

adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread"                      F4寄存器,读取  3个寄存器

adb shell "cat /sys/lcd_sys/reg_debug/dread"                                      查看读取结果

pause

C:\Users\10335101\Desktop>adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"

C:\Users\10335101\Desktop>adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite"

C:\Users\10335101\Desktop>adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite"

C:\Users\10335101\Desktop>adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread"       F4寄存器,读取  3个寄存器

C:\Users\10335101\Desktop>adb shell "cat /sys/lcd_sys/reg_debug/dread"

read back:

rbuf[00]=01 rbuf[01]=00 rbuf[02]=00

如果更改了   sleep  in   code

可通过   cat  /dev/kmsg   |  grep  drm   查看   cmds_len   的长度,有几个数据

6,59868,114303704,c2,-,caller=T881;[drm] sprd_panel_disable() cmds_len=151

也可通过   cat   /proc/driver/lcd_id   查看时间戳

932F22_NEEA_S    查看变形标记      *#*#983#*#*   再  *983*1024#    就可见到   Transform  Variants    里面变型标记   DGT_SS

因为在   staple/ums9620-2h10-overlay.dts    里  include   dtsi   所以单编 dtbo

1 #include "zte_lcd_skyworth_gc7202_6p517_mipi_hdplus.dtsi"

 image.png

上面是mipi,下面是reset,应该reset需要比mipi晚下电70ms,上图同时下电,有问题,旁边箭头图例是自己设置的变量

正确的:

image.png

上面是mipi,下面是reset,reset需要比mipi晚下电70ms,符合要求

time ./build.sh P720S11_T  -S  -I -v userdebug  -m vendor_dlkmimage  -j 40  可编译sprd-drm.ko     大小1.13M

生成的ko在目录      Z:\sprd\P720S11_T1\out\target\product\ums9620_2h10\vendor_dlkm\lib\modules

adb push   D:\MYFILE\sprd-drm.ko       ./vendor_dlkm/lib/modules/sprd-drm.ko  push到手机

 lk consume time:3655ms, lcd init consume:1508ms, backlight on time:4636ms

 sprd_lcd consume  在uboot里可查看lcd耗时

lcd耗时  从enter sprd_lcd  到  logo memory init success.

新串口线,如果手机连电脑,不需要串口线的接地线连接手机。如果手机没连电脑,只需串口线的RX接手机TX

通过板级查询哪些项目在用此板级     可在/SPRD_S-P618F08_S/vendor/zte/feature/projects/  搜索  lettuce

lettuce (full), "/SPRD_S-P618F08_S/vendor/zte/feature/projects/" (path) in projects: SPRD_S-P618F08_S - OpenGrok search results

 getprop | grep brightness     查看prop

如果有故障,是否必现?还是一次性

1、在0-android.log中搜索   Going to sleep due  关键字可查看   休眠原因

Waking up from Asleep    唤醒原因   ,   相关的可搜索的关键字  SurfaceFlinger  ,也 可通过命令    logcat |grep SurfaceFlinger  查看

SurfaceFlinger: Setting power mode 2   表示亮屏       

SurfaceFlinger: Setting power mode 0   表示灭屏

 logcat |grep  -E  "SurfaceFlinger: Setting power mode|Going to sleep due|Waking up from Asleep"

可通过命令    logcat |grep "SurfaceFlinger: Setting power mode"     查看打印

比如    01-05 06:00:45.620   693   693 D SurfaceFlinger: Setting power mode 0 on display 0

P720S11_T中找brightness  节点   cat   ./sys/devices/platform/backlight/backlight/sprd_backlight/brightness  通过find  -name   "brightness"找到的路径

 关背光和写亮度节点,推荐:    adb   shell   "echo   0  >   sys/class/backlight/sprd_backlight/brightness"

因为andorid.log  里就是再写此节点:

P963F94:/ # cat sys/class/backlight/     sprd_backlight                 /brightness

0

其中  sprd_backlight  是软链接

P963F94:/sys/class/backlight # ls -l sprd_backlight

lrwxrwxrwx 1 root root 0 2023-09-16 12:13 sprd_backlight -> ../../devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight

实际上操作的    ./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight/      brightness  节点

P963F94 机器  find   -name  brightness  结果:

./sys/devices/platform/soc/soc:ap-ahb/20300000.sdio/leds/mmc1::/brightness

./sys/devices/platform/soc/soc:ap-ahb/20600000.sdio/leds/mmc0::/brightness

./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:green/brightness

./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:red/brightness

./sys/devices/platform/soc/soc:aon/41800000.spi/spi_master/spi4/spi4.0/41800000.spi:pmic@0:led-controller@180/leds/sc27xx:blue/brightness

./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/sprd_backlight/brightness     实际操作的节点

P963F94 关背光方法二:

2|P963F94:/ # cat sys/class/display/     panel0      /sprd_backlight/brightness

0

此时  panel0  是软链接

ls -l panel0

lrwxrwxrwx 1 root root 0 2023-09-16 11:39          panel0 -> ../../devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0

实际上也是操作的    ./sys/devices/platform/soc/soc:mm/63100000.dsi/63100000.dsi.0/display/panel0/       sprd_backlight/brightness

P720S11关背光方法二:

 adb   shell     "echo    0  >   ./sys/devices/platform/backlight/backlight/sprd_backlight/brightness"

因为 P720S11机器  find   -name  brightness  结果:

./sys/devices/platform/backlight/backlight/sprd_backlight/brightness    这是实际操作的节点

./sys/devices/platform/soc/soc:ap-ahb/22200000.sdio/leds/mmc0::/brightness

./sys/devices/platform/soc/soc:ap-ahb/22220000.sdio/leds/mmc1::/brightness

./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:blue/brightness

./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:red/brightness

./sys/devices/platform/soc/soc:aon/64400000.spi/spi_master/spi4/spi4.0/sc27xx-bltc/leds/sc27xx:green/brightness

此时推荐的方法:   adb   shell   "echo   0  >   sys/class/backlight/sprd_backlight/brightness"   中的    sys/class/backlight/sprd_backlight  是软链接

P720S11:/ # ls -l  sys/class/backlight/sprd_backlight

lrwxrwxrwx 1 root root 0 2023-08-31 09:22 sys/class/backlight/sprd_backlight -> ../../devices/platform/backlight/backlight/sprd_backlight

S11  设置光感亮度命令

adb shell dumpsys sensorservice set_lux N

adb shell dumpsys sensorservice set_lux 5000

adb shell "echo 255 > /sys/class/backlight/sprd_backlight/brightness"

查看亮度  cat  /sys/class/display/panel0/sprd_backlight/brightness

adb shell "cat   /sys/class/backlight/sprd_backlight/brightness"

在bsp/out/androids/s9863a1h10_go_32_2g/obj/kernel/drivers/gpu/drm/sprd里有sprd-drm.ko,把这个ko可以push到手机分区

2022.11.14

今日笔记:

kernel中的ums9620-2h10-overlay.dts  里的 sprd,max-brightness-level = <1023>; 是因为有10比特,2^10

下面的brightness-levels  也相应地乘以对应系数转换

关pq:

 enhance_test   enable  read  查看pq

如何找一个项目对应 json  ,在rdc里补充信息里找

P932F22-Tigo-危地马拉-项目差异-GUI-0010 Bootup logo   在rdc  补充信息     

json:P932F22_AR_RV_S.json

变形标志位:TIGO_GT

存放正式版本的地址  \\10.95.242.18\version\version_blade\P932F22\GEN_MX_P932F22V1.0.0B08

存放构建地址             \\10.95.242.28\version_jarvis\S\SPRD\SC9832E\P932F22\dailybuild

查看kernel宏是否生效    vim bsp/out/androidt/ums9620_2h10_native/obj/kernel/.config    在此文件里找找

在S11 等T  基线上的kernel代码不在  bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/sprd_dsi_panel.c  等文件里,因为

通过ls  bsp/out/androidt/ums9620_2h10_native/obj/kernel/drivers/gpu/drm/sp   都tab自动补全不出来文件所在目录表明都没有编译到。而在bsp/modules/kernel5.4/display/dispc/sprd_dsi_panel.c     里

image.png

pinmap

image.png

想把RST拉高拉低,先在电路原理图上查看RST是哪个GPIO,例如GPIO11,再通过GPIO11在硬件配置表(excel表)里查看实际名称,例如   LCM0_RSTN   ,最后在pinmap.c ,例如 bsp/bootloader/lk/target/ums9620_2h10/zte_staple_pinmap.c    中搜索  LCM0_RSTN 找到该改的位置,如下图。注意,两行记录才表示一个pin

{REG_PIN_LCM0_RSTN,                     BITS_PIN_AF(3)},

{REG_MISC_PIN_LCM0_RSTN,                BITS_PIN_DS(1)|BIT_PIN_NULL|BIT_PIN_WPD|BIT_PIN_SLP_AP|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE},//LCM_RSTN

lcd 解析dtsi的函数调用过程

sprd_panel_probe  --> sprd_panel_parse_dt  --> sprd_panel_parse_lcddtb  (解析  sprd,dsi-color-format  和 sprd,initial-command  等) -->

 of_get_property  -->  of_find_property(查找结点)  --> __of_find_property  --> of_prop_cmp(比较,一旦名字对应则找到返回)

hbp/hfp/hsync vbp/vfp/vsync Video 屏的 Hporch/Vporch 参数。如果是 CMD 屏,这些参数必须是 0。

LCD 屏幕需要支持通过只修改 vfront-porch 参数来进行 60 Hz/90 Hz 刷新率动态切换,保证平台停止 送数 50 ms 内无显示异常。

sprd,sleep-in-command LCD 休眠指令。 sprd,sleep-out-command LCD 唤醒指令。

sprd,reset-on-sequence LCD 上电时,reset 引脚的操作时序。 <1 5>, <0 5>, <1 20>:表示先保持高电平 5 ms,再保持低电平 5 ms,然后 保持高电平 20 ms。

sprd,phy-bit-clock High-Speed 模式下数据传输时,clock lane 的传输速率,即 PHY frequency,单位为 kbit/s。

mipi_clock=pixel_clock *div  ,几分频

P720S11_T   同兴达  icnl9911c2   设置的   mipi   频率          sprd,phy-bit-clock = <768000>;     /* kHz */     768000   kHz   即   768 MHz

P720S11_T   同兴达  icnl9911c2   设置的   pixel  clk  频率   clock-frequency = <128000000>;   /* Hz */     128000000   Hz   即   128  MHz

P720S11_T   同兴达  icnl9911c2   设置的    分频                  sprd,dpi-clk-div = <6>;          设置的  6  分频    刚好对应    128  x    6  = 768

mipi  频率是sprd,phy-bit-clock = <552000>;        单位  kbps

pixel  clock是clock-frequency = <38400000>      单位  Hz

.dtsi中的     sprd,phy-bit-clock = <453000>; /* kbps */    对应   cat /sys/class/display/dphy0/freq   出现的453000  ,叫做mipi频率,mipi clock   453  Mbps

.dtsi中的      clock-frequency = <34000000>;                    对应   cat /sys/class/display/panel0/pixel_clock   出现的32000000  ,叫做  pixel_clock      Hz

cat   /sys/class/display/dphy0/freq   显示453000    查看mipi频率

echo  xxx  >  /sys/class/display/dphy0/freq  设置mipi频率

mipi clk (M)   =   (SPRDFB_DPI_CLOCK_SRC * dividor   )  * 3 * 8/0.9/    .lan_number     /1000000

其中的  dividor  =  if (need_clock/2    >  SPRDFB_DPI_CLOCK_SRC - dividor*need_clock    ,  int(

SPRDFB_DPI_CLOCK_SRC/    Dpi_need_clk   )    ,    int( SPRDFB_DPI_CLOCK_SRC/    Dpi_need_clk   )  +1 )

[SPRD_9620]dpiclk_dsiclk_calc   根据porch信息计算mipi频率和clock_frequency

P720S11_T  里的频率   计算方法(h+hfp+hbp+hsync)*(w+vfp+vbp+vsync)*60=.pixel_clk    

.pixel_clk X 6  =.phy_freq  .dtsi实际填的  .phy_freq  单位是KHZ,所以.dtsi填入的值等于 .pixel_clk X 6/1000     6是6分频,1000是因为  kbps

win+shift +print Screen 暗色主题

win + ctrl +c  颜色滤镜

下版本命令:

qcom平台使用 adb reboot edl

sprd平台使用 adb reboot autodloader

mtk平台开着下载工具,adb reboot即可

(1、打开PC功能,配置好下载选项后,选择 文件导出download.xml

2、在cmd窗口运行flash_tool -i download.xml

3、在另外一个窗口让手机重启)

注意终端软件部和终端软件工程部两个空间页面的区别

2023,2,9

正式版本在18服务器,每日构建在28服务器   \\10.95.242.18\version\version_blade\P932F22\GEN_MX_P932F22V1.0.0B08

如果merge   conflict  网页上rebase再修改,可以先修改patch  1

S11 的initcode开关在        /SPRD_T-P720S07_T/bsp/modules/kernel5.4/display/dispc/zte_lcd_reg_debug.c   中

单独编译pic_ref下boot logo的内容命令     ./build.sh  P932F22_S  -m splashimg -S -I  2>&1 | tee -a test3.log   -I是跳过一些内容,加速编译   

注意是哪个项目   P932F22_NEEA_GEN_S  就    ./build.sh  P932F22_NEEA_GEN_S  

开机logo生成的img文件在Boot Logo分区里面。具体名称比如,P963F22里的Boot Logo:

在GAIA 网站里的LOGO配的是   LOGO_BIN_NAME  :unisoc_HD_720_1280_24bit.bmp

在S11中lk里的函数宏定义           位置:bsp/bootloader/lk/project/zte_staple.mk

GLOBAL_DEFINES += ZTE_LCD_DISPLAY_SPLASH     <---宏定义

ZTE_LCD_DISPLAY_DEFAULT_BPP=8

ZTE_LCD_PANEL_DETECT

ZTE_LCD_SUPPORT_PANEL_OFF

 ZTE_LCD_SUPPORT_TE_PRECHECK

 ZTE_LCD_SUPPORT_TE_PIN_DSI0

 ZTE_LCD_TE_GPIO=12

CONFIG_LCM_GPIO_AVDDEN=189

 CONFIG_LCM_GPIO_AVEEEN=190 \

2023,1,17

排查lcd不亮的流程:

1、背光亮么?P720F03是平台背光

2、屏幕和lcd_name匹配么,若不匹配,是否是lcd_id有问题,可写死,提前return  0试试

3、看lk 的log有明显异常么,找硬件量电,1.8V, 正负5V是否正常,电有异常具体是哪个电有异常

pinmap是设GPIO的,查硬件原理图和硬件配置表可看到

2023,1,16

chage    -l     dongyuanjie   查看用户上回改密码时间  ;     dmesg    -Tx    查看内核信息         

2023,1,11

1、查看一个项目最小亮度  可找到kernel下的overlay  例如

bsp/kernel5.4/kernel5.4/arch/arm64/boot/dts/sprd/coconut/ums9620-2h10-overlay.dts

有时候uart send  error可能是版本和手机型号不符合

vysor  连接错误和用adb  install装软件失败,可用   adb shell vendorcfg -s -nzte.anti_usb_install -r0  ,解决不能安装软件问题,之后再重启生效

2023,1,9

1、P720S09 Sensor FOTA升级压力测试      D:\MYFILE\update-OTA>python fota_test.py 324225940012

展锐平台     userdebug   打开ylog     *#*#83781#*#*   

2、忘记拉的是不是TINY分支,可通过在项目目录下   cat   .repo/mainfest.xml   查看

3、vendor/zte/feature/projects/   里面显示哪些项目同一个库

2023,1,3

1. enhance_test enable read  命令可查看enhance打开关闭情况

 logcat |grep enhance    查看enhance相关日志

编译机配置环境变量命令     source    ./build.sh      P720S11_T      再    mninja    模块名    2>&1 | tee mninja.log  

生成后的动态库位置在     out/target/product/ums9620_2h10/vendor/lib64/hw/enhance.unisoc.so

另一个编译命令    ./build.sh   P720S11_T       -S    -I     -m     enhance.unisoc

手机端先   adb   root    再   adb   remount    若提示先     adb disable-verity    (关闭分区检测功能)       则照做,

remount   成功后用    adb push D:\MYFILE\enhance.unisoc.so /vendor/lib64/hw/enhance.unisoc.so

在手机端查看  enhance   相关动态库的位置   先  cd    vendor    再   find -name *enhance*    出现    ./lib64/hw/enhance.unisoc.so

关闭enhance   的函数位置在  vendor/sprd/modules/enhance/2.0/Core/DpuEnhanceCore.cpp   

2022,12,16

1.grep "lcd_g40396_truly_mipi_fhd" * -nR    查找与屏幕名相关的文档,定位可能涉及的需同时修改的文档  

2、在  bsp/kernel/kernel5.4/drivers/video/backlight/backlight.c  中使用宏控

在    bsp/kernel/kernel5.4/drivers/gpu/drm/sprd/Kconfig    中配置宏

        config ZTE_LCD_WRITE_MAX_BRIGHTNESS

bool "zte add for support ZTE_LCD_WRITE_MAX_BRIGHTNESS"

default n

在    vendor/zte/kernelconfig/sprd/configs/pitaya_diff_config    中   ADD宏控

ADD:CONFIG_ZTE_LCD_WRITE_MAX_BRIGHTNESS

lcd 解析dtsi的函数调用过程

sprd_panel_probe  --> sprd_panel_parse_dt  --> sprd_panel_parse_lcddtb  (解析  sprd,dsi-color-format  和 sprd,initial-command  等) -->

 of_get_property  -->  of_find_property(查找结点)  --> __of_find_property  --> of_prop_cmp(比较,一旦名字对应则找到返回)

mtk串口波特率选   921600

mtk下版本的Download-Agent      C:\Users\10335101\Downloads\SP_Flash_Tool_exe_Windows_v5.2044.00.000\DA_PL_2044.bin

Scatter-loading File  选   什么scatter.txt

2022,12,14

1、学硬件原理图,整理连接情况

GPIO 189 / LCM_BIAS_ENP(P5) -->  GPIO 189 / LCM_BIAS_ENP(P43)  --> 输出 OUTP  LCM_AVDD (p43)

-->  LCM_AVDD(p42)

LCD_TP_VIO (P42) --> LCD_TP_VIO (P43) 1.8V  -->  LCD_TP_VIO (P55)  芯板板连接器

GPIO9  LCM_ID  (P4)  --> GPIIO 9 /LCM_ID (P42)

2022.12.8

git   diff   drivers/video/backlight/backlight.c     >   modify.patch

git   checkout    drivers/video/backlight/backlight.c   

git   diff   drivers/video/backlight/backlight.c   

vi     modify.patch

patch  -p1  <  modify.patch

查看backlight.c  是否生效ls    out/androids/s9863a1h10_go_32b_2g/obj/kernel/drivers/video/backlight/backlight.o

查看日志等级   cat     proc/sys/kernel/printk

cat    /sys/class/display/dispc0/actual_fps  查看刷新率

2022.12.5

在P932F22_S中  

sudo    kill   -STOP      进程号1     进程号2      暂停进程

sudo    kill   -CONT      进程号1     进程号2    恢复执行

sudo    renice    -n   -20    -u    用户名     设置优先级

hdparm -Tt /dev/sda4     测磁盘速度

taskset -c 1 ./dgram_servr&     指定的进程运行在指定的cpu上,程序运行在1号核上

2022.12,3

P932F22:/sys/lcd_sys/reg_debug # echo 3400 > dwrite     给34寄存器写入00,把显示弄坏,看是否有esd重启

P932F22:/sys/lcd_sys/reg_debug # echo 1000 > dwrite     给10寄存器写入00

P932F22:/sys/lcd_sys/reg_debug # echo 51ff > dwrite       51寄存器是调亮度的,设置最大亮度ff

esd_check_en    1是打开,0是关闭

esd_check_mode   0是reg寄存器检查,1是te信号检查

P720S11_T  icnl9911c  关 TE  的方法: 注释  35  和  C2  寄存器  ;  华映屏,是在    35  后下 34

29   0A   00   02   35   00

29   0A   00   01   34   多下一个 34

2022,11,20

非第一次全编译可加上  -S   -I  如   ./build.sh P720S11_T  -S  -I

保存时间戳的编译命令     ./build.sh P720S11_T  -m  bootloader  -S  -I  2>&1 | tee >(awk '{print "["strftime("%Y%m%d %T",systime())"]"$0}' > build_log.txt)

提CQ版本号可从路径  https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/vendor/sprd/release/IDH/Doc/Version_T.txt  查看

2022.11.29

查看pixel_clock   cat /sys/class/display/panel0/pixel_clock

查看porch      cat    /sys/class/display/panel0/hporch

查看mipi  频率     cat   /sys/class/display/dphy0/freq

2022.11.28

董远杰-11月总结汇报.pptx

2022.11.18

1、  解决P932F22 PV版本插USB无法进五色界面

今日笔记:

pv版本无法五色界面问题:

源码地址:https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/bsp/bootloader/u-boot15/common/lcd.c?r=241e9f9c&mo=21931&fi=889#889

函数名:   void zte_lcd_precheck_mode(void)

注释的位置:https://souing.zx.zte.com.cn/xref/SPRD_S_GO-P932F22_S/bsp/bootloader/u-boot15/include/configs/zte_rosemary_diff.h?r=dff49a17#24

当时串口log反复打印:

ztelcd _ precheck _ mode : This is PV lcd check mode

 zte _1cd_ detect _ te V2.0.0 start _ time =278873 end _ time =283896 te _ count =0

 zte _ lcd _ precheck _ mode : This is PV lcd check mode

 zte _ lcd _ detect _ te V2.0.0 start _ time =283909 end _ time =288932 te _ count =0

分析源码:  

while (1) {

    printf("zte_lcd_precheck_mode: This is PV lcd check mode\n");

   #ifdef ZTE_LCD_SUPPORT_TE_PRECHECK     当时这个宏定义定义了,没注释

  set_rgb_color(0xffff);/*white*/                         显示白色界面

    if (zte_lcd_delay_get_te(5000) > 0)                 zte_lcd_delay_get_te(5000)根据日志,返回值为-1

     printf("zte_lcd_precheck_mode:will display red\n");

    else

    continue;                     执行这里,陷入循环中

}

int zte_lcd_delay_get_te(int delayms)  {

 printf("zte_lcd_detect_te V2.0.0 start_time=%d end_time=%d te_count= %d\n", start_time, end_time, te_count);      根据日志打印得知   te_count=0   

   if (te_count > (delayms / 1000) * TE_MIN_COUNT_PER_SECOND)

  return 1;

 else

return -1;    所以结果返回-1

  #else                       最后我们取消了宏控,执行下面这段代码

    set_rgb_color(0xffff);/*white*/                                显示白色

    #ifdef ZTE_LCD_CMD_TYPE_MODE  

   lcd_enable();

   #endif926   mdelay(5000);

   set_rgb_color(0xf800);/*red*/                        显示红色

}

修改后正常,log循环打印:

zte_lcd_precheck_mode: This is PV lcd check mode

zte_lcd_precheck_mode: This is PV lcd check mode

zte_lcd_precheck_mode: This is PV lcd check mode

2022.11.7

董远杰中期答辩_2022年.pptx

2022.11.5

今日笔记:

 vim bsp/kernel5.4/kernel5.4/drivers/gpu/drm/sprd/Kconfig

module里面加的宏在git diff  bsp/modules/kernel5.4/display/dispc/Kbuild

+#zte add for disable enhance func by board_name

+$(info zte lcd display ZTE_BOARD_NAME = ${ZTE_BOARD_NAME})

+ifeq ($(ZTE_BOARD_NAME),unicorn)

+$(info CONFIG_SPRD_DSI_SWITCH = ${CONFIG_SPRD_DSI_SWITCH})

+CONFIG_SPRD_DSI_SWITCH :=y

+$(info CONFIG_SPRD_DSI_SWITCH = ${CONFIG_SPRD_DSI_SWITCH})

+endif

 查看kernel宏是否生效    vim bsp/out/androidt/ums9620_2h10_native/obj/kernel/.config    在此文件里找找

lk里的屏幕.c生成后的位置在      ./bsp/out/androidt/ums9620_2h10_native/obj/lk/build-ums9620_2h10/platform/sprd_shared/driver/video/sprd/lcd/zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.o

2022.11.3

今日笔记:

1、验证kernel里面dtsi是否生效的方法

在里面加一行   zte,lcd-version-v000

再cmd里adb   里   adb shell    "ls    /sys/firmware/devicetree/base/lcds"    可以看见兼容了几家屏幕

再cmd里adb   里   adb shell    "ls    /sys/firmware/devicetree/base/lcds/lcd_chipone_icnl9911c2_tongxingda_mipi_hdplus"    可以看见  zte,lcd-version-v000

2.  sprd定义的宏位置  bsp/out/androidr/umns9620_2h10_native/obj/kernel

2022.11.2

今日笔记:

1、不重复上传单据   git   --amend  再git  commit

git   commit   -m  "xx"

防止冲突方法,  git   pull  --rebase 后,如果冲突了,本地一解,再上传

防止修改文件属性命令  git   config  --replace  core.filemode   false

允许修改文件属性命令  git   config  --replace  core.filemode   true

切换分支,拉取最新代码,再比对上传:

 cd vendor/zte/kernelconfig/

 git branch -a |grep release

 git checkout -t zte/t-default-tiny-ccs

2022.11.1

今日笔记:

 P720S07_T查看是否编译,是否生成.o节点  

 ls bsp/out/androidt/ums9620_2h10_native/obj/lk/build-ums9620_2h10/platform/sprd_shared/driver/video/sprd/lcd/

2022.10.31

董远杰-10月总结汇报.pptx

今日笔记:

高通下载版本:三键齐按    或  adb reboot edl

判断是否编译执行了修改?   #error "cuole"如果运行到,停下报错   #warning "cuole"如果运行到,会打印出来

查看log定位问题可以搜索显示架构drm等关键字

2022.10.28

p720s07_t的lcd 驱动调试

参观产线

2022.10.27

1、  P720S07_T  的lcd驱动调试(进行中)

今日笔记:

T基线因为有overlay,所以可以单独编译dtbo,还可以单独编译bootloader   ./build.sh   P720S09_R  -m  dtboimage   -S

P720S07_T的lcd驱动,回顾具体做了什么:

1.    . c位置在\\10.95.240.190\dongyuanjie\sprd\P720S07_T\bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd下

除了对着类似的.c改动以外还修改了

2.   git diff    project/zte_unicorn.mk        位置:bsp/bootloader/lk/project/zte_unicorn.mk

+#lcd

+LCD_UNICORN_TONGXINGDA_ICNL9911C2 := 1            加宏控,宏打开

+CONFIG_SPRD_DSI_SWITCH := 1

+

+CONFIG_LCM_GPIO_AVDDEN :=62

+CONFIG_LCM_GPIO_AVEEEN :=61

+GLOBAL_DEFINES += \

+CONFIG_LCM_GPIO_AVDDEN=62 \

+CONFIG_LCM_GPIO_AVEEEN=61 \

+CONFIG_SPRD_DSI_SWITCH=1

+

+#iovdd-gpio = <&ap_gpio 148 GPIO_ACTIVE_HIGH>;

+

GLOBAL_DEFINES +=  CONFIG_LCM_GPIO_AVDDEN=62

 CONFIG_LCM_GPIO_AVEEEN=61

 CONFIG_SPRD_DSI_SWITCH=1

在S11中lk里的函数宏定义

GLOBAL_DEFINES += ZTE_LCD_DISPLAY_SPLASH     <---宏定义

ZTE_LCD_DISPLAY_DEFAULT_BPP=8

ZTE_LCD_PANEL_DETECT

ZTE_LCD_SUPPORT_PANEL_OFF

 ZTE_LCD_SUPPORT_TE_PRECHECK

 ZTE_LCD_SUPPORT_TE_PIN_DSI0

 ZTE_LCD_TE_GPIO=12

CONFIG_LCM_GPIO_AVDDEN=189

 CONFIG_LCM_GPIO_AVEEEN=190 \

3.    git diff  platform/sprd_shared/driver/video/sprd/rules.mk          加config_xxx宏

+ifeq ($(LCD_UNICORN_TONGXINGDA_ICNL9911C2),1)

+GLOBAL_DEFINES += CONFIG_LCD_UNICORN_TONGXINGDA_ICNL9911C2

+MODULE_SRCS += \

+    $(LOCAL_DIR)/lcd/zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.c

+endif

+

.c在\\10.95.240.190\dongyuanjie\sprd\P720S07_T\bsp\bootloader\lk\platform\sprd_shared\driver\video\sprd\lcd下

4.   git diff   platform/sprd_shared/driver/video/sprd/lcd/panel_cfg.h             用config_xxx,加 panel  driver

 extern struct panel_driver g40396_truly_driver;

+extern struct panel_driver icnl9911c2_tongxingda_driver;

#ifdef CONFIG_LCD_UNICORN_TONGXINGDA_ICNL9911C2

+       {

+               .lcd_id = 0xc3,

+               .drv = &icnl9911c2_tongxingda_driver,

+       },

+#endif

5   .c里包含了一个结构体

struct panel_driver icnl9911c2_tongxingda_driver = {

.info = &icnl9911c2_info,

.ops = &icnl9911c2_ops,

};

6.   git  diff    arch/arm64/boot/dts/sprd/unicorn/ums9620-2h10-overlay.dts              include 一下  kernel的dtsi

+#include "zte_lcd_tongxingda_icnl9911c2_6p517_mipi_hdplus.dtsi"

-                               sprd,max-brightness-level = <880>;

+                               sprd,max-brightness-level = <1023>;

brightness-levels = <  //亮度等级被修改了

-                                                         0   3   4   5   6   7

+                               /*                        0   3   4   5   6   7

                                          8   9  10  11  12  13  14  15  16  17

                                        766 772 778 784 790 796 802 808 814 820

-                                       826 832 838 844 850 856 862 868 874 880

+                                       826 832 838 844 850 856 862 868 874 880  */

+  0   5   5   5   6   8

+  9  10  11  12  13  15  16  17  18  19

+ 20  22  23  24  25  26  27  29  30  31

-       avdd-gpio = <&ap_gpio 192 GPIO_ACTIVE_HIGH>;

-       avee-gpio = <&ap_gpio 191 GPIO_ACTIVE_HIGH>;

+       avdd-gpio = <&ap_gpio 62 GPIO_ACTIVE_HIGH>;

+       avee-gpio = <&ap_gpio 61 GPIO_ACTIVE_HIGH>;

-&lcd_g40396_truly_mipi_fhd {

-       sprd,sr-width = <720>;

-       sprd,sr-height = <1600>;

-};

7.  在  vendor/zte/kernelconfig/sprd/configs/unicorn_diff_config    中

+#lcd

+ADD:CONFIG_SPRD_DSI_SWITCH

这里unicorn是板级名,新项目注意查看确认板级

8. 检查pinmap  avdd  avee  的GPIO  是否配置正确

9.检查   sprd/configs/okra_diff_config  是否配置正确

10. 检查 projects/P963F10_T.json  logo是否配置正确

11、检查 module/others/bsp/mfeature/kernel/kernel5.4/msoc/sharkl3/ko/zte_okra.mk  是否加载  ±6v  的ko

可以参考  http://10.67.16.29:8080/q/topic:%22P963F10_T+add+easyquick+aixiesheng+lcd+driver%22  节点

2022.10.26

1、  P720S07_T  的lcd驱动调试(进行中)

今日笔记:

 ls bsp/out/androidt/ums9620_2h10_native/obj/kernel/arch/arm64/boot/dts/sprd/unicorn/    

不看网站查板级驱动名

 回到项目目录,比如 P932F22_S     再repo sync -c bsp/kernel/kernel4.14/   拉取一小段最新代码

如果本地改过遇到报错,则  git log .   查看修改的序列号

 git reset --hard b76885ad6180f64eca49e73e661ddb5cc127d580   同步到最新的序列号

 git rm  platform/sprd    删去git里不需要再显示的已删去文件的命令    

 grep "lcd_g40396_truly_mipi_fhd" * -nR    查找与屏幕名相关的文档,定位可能涉及的需同时修改的文档                                                  

2022.10.25

1.  观摩学习师傅定位产线拿来的4台闪屏黑屏手机问题

2.跟师傅讨论交流lcd函数调用流程,准备月总结

查看闪频分析故障命令      cat /dev/kmsg |grep drm   看看有没有什么error

单独编译dtbo      ./build.sh P720S09_R -m dtboimage -S

想生成initcode节点       在  bsp/kernel/kernel5.4/drivers/gpu/drm/sprd 的    zte_lcd_reg_debug.c  上面加定义 LCD_INITCODE_DEBUG  的宏控

查看  initcode     cat sys/lcd_sys/reg_debug/initcode      最稳妥的找    zte_lcd_reg_debug.c  的方法是在 souing 上找

 adb shell   ls    /sys/lcd_sys/reg_debug   后会出现 如下节点

dread

dwrite

mipiclk

reserved

或者         dread  dwrite  esdcode  gread  gwrite  initcode  mipiclk  reserved

可通过 :

adb shell "echo FF55AA66 > /sys/lcd_sys/reg_debug/dwrite"

adb shell "echo FE55AA66 > /sys/lcd_sys/reg_debug/dwrite"           

adb shell "echo FF22 > /sys/lcd_sys/reg_debug/dwrite"      

adb shell "echo F403 > /sys/lcd_sys/reg_debug/dread"      F4寄存器,读取  3个寄存器

adb shell "cat /sys/lcd_sys/reg_debug/dread"   

来读取操作寄存器

查看lcd节点命令,查看lcd信息 ,查看lcd的使用的驱动程序  cat /proc/driver/lcd_id

cd /sys/class/display/    再ls   屏幕输出:   dispc0  dispc1  dphy0  dsi0  panel0    分别是2个展示控制和dphy

adb shell "ls    /sys/class/display/panel0/"   下有很多节点 :

device

esd_check_enable

esd_check_mode

esd_check_period

esd_check_register

esd_check_value

hporch

lane_num

name

of_node

panel_fps

pixel_clock

power

resolution

resume

screen_size

sprd_backlight

subsystem

suspend

uevent

vporch

waiting_for_supplier

adb shell   ls   /sys/class/display/    屏幕输出:  dispc0  dphy0  dsi  panel0

adb shell  cat      /sys/class/display/panel0/esd_check_enable    屏幕输出:1     表明esd检测已打开

adb shell   cat  /sys/class/display/panel0/esd_check_mode     屏幕输出: 0      0对应dtsi中的esd检测从寄存器里读取,1 为检测  TE  信号

adb shell  "echo  0 >     /sys/class/display/panel0/esd_check_enable"      关闭  esd  check

adb shell   "echo   1000 >  /sys/lcd_sys/reg_debug/dwrite"        可以通过这个模拟静电黑屏,看屏幕是否恢复。向10写入00数据,观察到屏幕熄灭后又亮了,因为这是在故意搞乱,esd检测到后使得芯片重启,恢复显示

adb shell  cat      /sys/class/display/panel0/esd_check_mode      屏幕输出: 0      0对应dtsi中的esd检测从寄存器里读取

adb shell  cat /sys/class/display/panel0/esd_check_register     屏幕输出:0x0a       代表esd检测的寄存器是10号

adb shell  cat /sys/class/display/panel0/esd_check_value         屏幕输出: 0x9c    

adb  shell  "echo    3400  >  /sys/lcd_sys/reg_debug/dwrite"

2022.10.24

1.  查看刷新率  cat    /sys/class/display/dispc0/actual_fps      显示60.4

2.  给手机安装软件.apk     adb  install  拖拉电脑的apk到窗口

对加载开机logo函数的学习.docx

2022.10.20

1、云CI验证K98_R AP侧代码修改

今日笔记:

对加载开机logo函数的学习,我通过函数找出了调用流程 zte_display_splash_screen_prepare  调用-> zte_read_logo-from_splash ->

common_raw_read(char* path_name ,4096,logo_info_offset,logo_info_arr)   在common_raw_read(part_name,size ,offset,buf)中通过

memcpy(buf,offset,size),将数据写入buf,即就是logo_info_arr里面,而logo_info_arr[4096]刚好对应之前的前4096字节里存放的是

boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容

2022.10.19

观摩学习师傅解决k98的背光比屏幕后关闭故障

发现git能拉代码,但无法上传单据,找同事改git配置解决

今日笔记:

如果电脑连接的有两个手机可以adb选择一个进入   adb devices

显示  

324226320141    device

327325630084    device

选择一个进入   adb -s 327325630084 shell

高通平台进入下载模式adb reboot edl,ports 口才会出来,或者高通的三键齐按

单独编译高通的bootimg命令    ./build.sh K98_R -m out/target/product/bengal/boot.img -S

编辑宏控文件   vim vendor/zte/kernelconfig/qcom/configs/boards/chestnut_diff_config

里面加入一个宏  ADD:CONFIG_ZTE_LCD_CLOSE_DIMMING

编辑kconfig文件   vim kernel/msm-4.19/drivers/gpu/drm/Kconfig

设置配置  

 config ZTE_LCD_CLOSE_DIMMING

     bool "add for close lcd ic dimming function"

     default n

如果光有上面的的kconfig,而没有上面的ADD宏,那么在编译后.config里CONFIG_ZTE_LCD_CLOSE_DIMMING会显示not set

编译后查看宏配置是否生效  vim out/target/product/bengal/obj/KERNEL_OBJ/.config

CONFIG_ZTE_LCD_CLOSE_DIMMING=y  已生效

运用宏来改.c逻辑,修改.c  vim kernel/msm-4.19/techpack/display/msm/dsi/dsi_panel.c

#ifdef CONFIG_ZTE_LCD_CLOSE_DIMMING

    if (bl_lvl == 0) {

        int error_ret;

        const char CMD53 = 0x24;

        error_ret = mipi_dsi_dcs_write(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, &CMD53, 1);

        /*if (error_ret < 0)

        return error;*/

        pr_info("MSM_LCD Sends 53 cmds,error_ret=%d\n", error_ret);

    }

#endif

2022.10.18

1、K98项目拉代码,编译版本、借机器,和装高通的下载工具

2、学lcd图片加载相关的函数和内容

2022.10.17

改sh脚本,修复bootlogo重复载入boot_logo.bmp问题,并上传单据

写bat脚本,实现比较两个cat结点值是否相等(进行中)

单独编译pic_ref下的内容命令     ./build.sh  P932F22_S  -m splashimg -S -I  2>&1 | tee -a test3.log   -I是跳过一些内容,加速编译

进入校准模式   高通 adb reboot ftmmode

展锐 adb reboot cftreboot     (AT+ZREBOOTCALI)    会出现一个  com   口

MTK adb reboot meta

image.png

2022.12.12

查看有哪些可用的    dpu_core_clk   ,需要先确认在哪一个   global_dispc.c .c   里找

 ls   bsp/out/androidr/sp7731e_1h10_native/obj/u-boot15/drivers/video/sprd/    查看是哪一个?  例如 pike2/global_dispc.c

SPRD_DIAG  (COM 16)   是校准模式的com口

P732F21_R和P963F60_R是一个souing代码库

DPI_CLK_SRC   数组里

2022.10.13

1、P963F91的二供屏st7701点亮

2、P932F22的开机logo有白点,我认为是用画图打开另存为256色位图时不小心点上的,下回多检查避免这类低级问题,logo重新改过后上传了

今日笔记:

开机logo生成的img文件在Boot Logo分区里面。具体名称比如,P963F22里的Boot Logo:

在GAIA 网站里的LOGO配的是   LOGO_BIN_NAME  :unisoc_HD_720_1280_24bit.bmp

最后在下载工具里的Boot Logo是   D:\MYFILE\ResearchDownload_R25.21.0802\Bin\ImageFiles\_DownloadFiles1995C_19B8E805_0\unisoc_HD_720_1280_24bit.bmp

刚好对应,如果更换logo后想单独编译一下,用命令   ./build.sh P932F22_S  -m splashimg -S  

lcd学习指南总结:

lcd有两种工作模式,video mode和command mode,video mode模式需要持续刷新显示器,不需要帧缓冲器;command mode有帧缓冲器不需要定期刷新,定时器会从帧缓冲器取数据显示在屏幕上。video mode虽节省了帧缓冲器,但是定期高速发送DSI视频报文消耗了大量能量,command mode在显示器中集成全帧长帧缓冲器需要成本

中间具体改dtsi的我总结过;后面波形图的内容不大看得懂

2022.10.12

1、p932f22验证二供屏正常,上传单据

2 p963f91二供屏st7701驱动加好了,但是现在只是uboot生效了,kernel似乎没编进去还没有生效

今日笔记:

快速在项目目录里找到板级驱动   ls bsp/out/androids/s9863a1h10_go_32b_2g/obj/kernel/arch/arm/boot/dts/pitaya/   (多次tab补齐)

以P932F22_S为例,含义是   ls bsp/out/androids/sp9832e_1h10_go2g/obj/kernel/arch/arm/boot/dts/rosemary/   sp9832刚好对应P932F22_S,

后面就是kernel里面修改dtsi的路径

刚下载编译好,下载版本到手机,改动代码前看看初始的代码有没有问题

如果屏幕不亮,在有口的条件下,cat  /proc/driver/lcd_id  看是否加载了正确的驱动程序    也可   cat   /proc/cmdline   查看lcd_name是否符合预期

如果怀疑uboot没有编译进来,可以先单独编译uboot,刚好也花不了太多时间

2022.10.11

1、P932F22二供屏点亮

2、遇到一些initial-comand不符合展锐格式的改成了展锐格式,和屏幕不亮的一些解决方法

3.接下来的计划:具体的学习一下开机logo图片是怎么样,转化成bin文件加载到内存和最后输出到屏幕的  ,我在程序里面找一下相应的函数

下面是今天的笔记:

开机logo流程:boot logo会先转换成boot.bin,boot.bin里前4096字节里存放的是boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容

不要用\\注释,不要用printk函数,用print_info函数

屏幕还是没亮采取的策略:  不是平台侧控制背光,是IC控制输出pw信号控制背光,找创维lcd ic 厂的FAE要输出30k的pw波的指令,厂商发来如下指令:

39 01 00 00 00 00 06 FF 77 01 00 00 10

39 01 00 00 00 00 02 BB 00

39 01 00 00 00 00 02 CD 00

39 01 00 00 00 00 02 CA 11

39 01 00 00 00 00 02 BC 01

39 01 00 00 00 00 02 51 00

39 01 00 00 00 00 02 53 0C

39 01 00 00 00 00 02 55 00

39 01 00 00 00 00 02 5E 03

这些指令,不符合展锐的风格,我把它们转换成符合展锐风格的格式,如下:

39 01 00 06 FF 77 01 00 00 10

39 01 00 02 BB 00

39 01 00 02 CD 00

39 01 00 02 CA 11

39 01 00 02 BC 01

39 00 00 06 FF 77 01 00 00 00

39 00 00 02 51 ff/*zuiliang,yuanlaishi 00*/       51后面的数据原来是00,为了让它以最大的亮度显示,我将这里改成了ff

39 00 00 02 53 0C

39 00 00 02 55 00

39 00 00 02 5e 03/*yishang 4 hang*/               我把它们放在最后一个指令29的前面

05 20 00 01 29   这是initial-command最后一条指令29

还是没亮   --->  找硬件测PW波形,发现没PW波信号  ---->  找厂商要自测模式,发来自测模式如下:

WriteComm (0xFF);

WriteData (0x77);

WriteData (0x01);

WriteData (0x00);

WriteData (0x00);

WriteData (0x12);//bank2

WriteComm (0xD1);

WriteData (0x81);

WriteComm (0xD2);

//WriteData (0x05);//黑色白边框

//WriteData (0x06);//棋盘格

WriteData (0x08);//彩条

WriteComm (0x29);//display on   最后29对应initial-command的最后一条指令   05 20 00 01 29  打开显示

我把它们按照展锐的格式加在initial-command的倒数第二个指令:

39 00 00 06 FF 77 01 00 00 12

39 00 00 02 D1 81

39 00 00 02 D2 08

屏还没亮,找硬件部把背光强制拉高,看看结果  --->   强制拉高后屏亮了,接下来用电池也能亮屏,只是注意主板拆下来后,

要按电源开机或下版本,一定要把主板往中壳按下去,这样电源按钮才能短接,电源键才能用

最后为了速度快一些,我把 sleep-in-command 中的 05 78 00 01 28 中的延时120ms改成了32ms ,修改后的指令是   05 20 00 01 28

直接通过adb指令改porch :

 cd /sys/class/display/panel0/

ls     在ls后可以看到hporch   和  vporch

cat hporch     屏幕显示: hfp=20 hbp=20 hsync=8

echo 42 42 8 > hporch

echo 48 48 8 > vporch

input keyevent 26  相当于按下power键

2022.10.10

9月总结

月总结.docx

内核启动时u-boot传入参数:       cat /proc/cmdline    

在修改dtsi文件的initial-command中,一般含有文件名比如  zte_lcd_lcetron_st7701_hsd_4p95_480p.dtsi   中的initial-command  里有   39 00 00 06 FF 77 01 00 00 00

这样含有文件名7701的指令,意义是切换7701的page寄存器,通常在initial-command最后一个切换page寄存器指令是切换到寄存器编号为0的指令,比如

在前面可能是     39 00 00 06 FF 77 01 00 00 13    在initial-command快要结束的时候切成  39 00 00 06 FF 77 01 00 00 00 ,以便后面的其它诸如sleep-in-command执行

2022.10.9

39                        00                         00 03                         7A 13 1A    是展锐平台initial-command格式

1     1           2

MIPI_CMD_TYPE         delay_time         register_count           register_value(把值13,1A写给寄存器7A)

在初始化参数的39,15,05等是MIPI命令,随后一个字节是延时时间,其后两个字节 00 03表示后面有三个寄存器值

例如  05 78 00 01 11 //delay 120ms   第二个字节是十六进制78表示延时120ms

在mtk平台写法变成     39 00 00 08 69 14 22 14 22 44 22 08  = 0x69, 07, 14 22 14 22 44 22 08  把69寄存器写在前面,后面还剩7个寄存器和值

在兼容第二家屏前,先通过下载版本到手机来看看之前程序有没有问题,无误后再下一步,有误则重新拉取程序编译和修改

在有口的情况下展讯平台下版本可以直接通过   reboot autodloader (adb shell下)    adb reboot autodloader   (cmd下)

2022.10.8:

一个驱动测试,包括驱动代码、dts修改、编译控制修改等

在\\10.95.240.190\dongyuanjie\sprd\P720S09\bsp\kernel\kernel4.14\arch\arm64\boot\dts\sprd\snail\     touchscreen_snail.dtsi  改写   test.dtsi    

/ {

zte_test:zte_test {

compatible = "zte_test";

  };

};

在\\10.95.240.190\dongyuanjie\sprd\P720S09\vendor\zte\kernelconfig\sprd\configs\snail_diff_config   (因为板级驱动 ZTE_BOARD_NAME 就是snail)    中加入

ADD:CONFIG_A

最后按照之前的方式把它上传之后,很快在网页里点击三个点把它设置为work in progress,这样其它人就不会加1

今天发现展锐平台的log用一个批处理文件抓完后打开看乱码,需要运行一个.py的python脚本双击解析出新文档才能看,安装python脚本的时候要注意勾选加入环境变量,这样之后双击.py的analyzer.py脚本才有新的解析后的不乱码的文档生成

2022.9.30

1 修改P932F22的bootlogo和重新拉取代码,修改bootlogo地址: \\10.95.240.190\dongyuanjie\sprd\P932F22\vendor\zte\resourceimg\pic_res\boot_logo\V11_2021new\1014_480

2  单独重新拉取一个小manifest的代码: 回到项目目录,比如 P932F22_S     再repo sync -c vendor/zte/resourceimg

3 commit代码的另一个方法,git commit

输入文字

(空行)

@type RQ

F3

回车

CTRL+X  退出

apush   (提交)

2022.9.13

1、参加二轮培训,学习了《认识终端启航第一课》和《终端战略及产品知识》、《职业发展规划》学到了要善于觉察

和对制定的目标要有行动力,要有独立的思考和行动,成就自我,再成就公司。

2022.9.9

1、单独编辑bootimage,得到的文件路径是P720S07/out/target/product/ums9620_2h10

2、在bsp/kernel/kernel14.14/drivers/gpu/drm/sprd/zte_lcd_common.c中加入proc节点的代码

2022.9.8

1、单独编译的命令        ./build.sh P720S07_R  -m bootimage -S

2、查看手机日志     cat /dev/kmsg

3、编译了我的Proc节点,ls能查看到,但是read和write有问题导致cat和echo节点后手机死机,接下来我要仿照着源码改程序。

2022.9..7  

一、在师傅指导下,在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\gpu\drm\sprd\zte_lcd_common.c    中加了一个很简单的proc节点,源码是

#define FILE_NAME              "my_test_procfs"

 static ssize_t test_proc_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)

{

printk(KERN_INFO  "hello");

 return 0;

}  

static const struct file_operations test_ops =

 { .owner = THIS_MODULE,

 .read = test_proc_read,

};

在一定会执行的代码下加入

 proc_create(FILE_NAME, 0664, NULL, &test_ops);

image.png

image.png

image.png

二、同事指导的在proc下产生一个节点需要执行的步骤:

1、在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\vendor\zte\kernelconfig\sprd\configs下的unicorn_diff_config下输入

ADD:CONFIG_A

2、在\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\vendor\common\下创建自己文件夹c,c里再存放makefile和kconfig以及自己的a.c

2.1、makefile内容如下:

#drivers/test/Makefile

#

#Makefile for the test

#

#ccflags-y += -I$(srctree)/drivers/vendor/common/touchscreen_v2/test/

ccflags-y += -I$(srctree)/drivers/vendor/common/c

obj-$(CONFIG_A) += a.o

2.2、kconfig内容如下:

config A

bool "A support"

default n

help

  Say Y here to enable debug test.

  If unsure, say N.

3、父目录\\10.95.240.190\dongyuanjie\sprd\P720S07.1\bsp\kernel\kernel4.14\drivers\vendor\common\下

makefile内容:

#

obj-$(CONFIG_A)  += c/

kconfig内容:

#

source "drivers/vendor/common/c/Konfig"

最后单独编译命令 ./build.sh P720S07_R -S -m bootimage    得到的image路径为 P720S07/out/target/product/ums9620_2h10

存在的问题:

再看源码时函数调用比较复杂,像是上回的dtsi文件里的reset-on-sequence都没有一路追踪到®ister

2022.9.5

在同事指导下修改P720S07的γ参数,再编译版本,下载版本到手机,成功上传一次代码

用到的命令是:

git status .

git add xxx.dtsi

git commit   然后CTRL+X先退出,在是否保存输入Y确认保存,再回车,即可本地提交成功

git  log  查看本地提交情况

cat .git/refs/remotes/m/release-zte  查看上传分支

屏幕显示:ref: refs/remotes/zte/r-sprd-5g-v1

git push zte HEAD:refs/for/r-sprd-5g-v1

接着网页设置boot和kernel下的文件同一topic关联起来,再点击reply给自己加1

2022.9.1

使用P720S07的熊猫屏修改后的配置文件重新编译程序,下载了版本,配置文件在uboot和kernel中都有,所以一次改两处,路径是P720S07/bsp/bootloader/boot/soic

学了linux中的信号,通过signal函数来注册信号处理函数,signal函数中的两个参数分别为信号的宏和发生此信号的回调函数signal_handler,回调函数是由内核调用,不是由程序员调用,程序员只注册信号处理函数,以下是以前写的利用信号实现父进程回收子进程。sigaction函数注册信号SIGCHLD的信号处理函数(此处用sigaction,因为sigaction无论UNIX还是 Linux都可以用,更通用。虽然signal函数更简单些。)

2022.8.31

1.  学了poll轮询函数和select函数,联系到之前的Linux网络编程里写高并发服务器的时候用到过,当时是说poll函数监控发生变化的文件描述符,可以取代多进程和多线程版本的服务器,相比少了进程切换的开销,以下是之前使用poll函数写高并发服务器server.c的程序:

2022.8.30

P932F22开机logo已经好了,是把sprd.main.c中的文件里一个字符串后面_a取消了就好了,今天熟悉了当出现屏幕相关问题,可以抓log看看哪里出了问题,再结合一个搜索代码的网站,定位代码出错位置再修改

P932F22的开机logo位置是  \\10.95.240.190\dongyuanjie\sprd\P932F22\vendor\zte\resourceimg\pic_res\boot_logo\V11_2021new\1014_480  ,了解了sprd平台开机logo要设置成8bit,画图工具打开,另存为256位即可

修改两个dtsi里的内容,在uboot里改lcd_id 烧录id,一次改两个位置,然后改porch,在kernel只需改porch

需要修改两个dtsi位置为  

\\10.95.240.190\dongyuanjie\sprd\P932F22\bsp\bootloader\u-boot15\arch\arm\dts\rosemary          

         \\10.95.240.190\dongyuanjie\sprd\P932F22\bsp\kernel\kernel5.4\arch\arm\boot\dts\rosemary

在分别include一下:在kernel里的arch/arm/boot/dts/rosemary/zte_lcd.dtsi和uboot里的arch/arm/dts/rosemary/sp9832e_1h10_32b.dts里面分别include一下就好

 单独编译   ./build.sh P720S07_R -S -m bootimage   单独编译uboot    ./build.sh P720S07_R -S -m bootloader   编译后的结果是u-boot-sign.bin

2022.8.29

今天学习了加载开机启动logo的内容,首先根据物料信息更改JSON上面的分辨率等相关配置,然后git上传

阅读了.sh和.py两个脚本,Python脚本里面有个读取bmp文本的函数,boot logo的bmp图片会先转换成boot.bin存在内存中,

boot.bin里前4096字节里存放的是boot logo 和charge logo的分辨率大小等信息,后面的字节存放实际图片内容,最后再由其它地方的程序加载显示在屏幕上。

2022.8.26

参与了P932F22项目,现在屏幕亮了,在这个过程中,学习了改程序的套路和提交命令,熟练了下载版本等操作

看完了mtk关于LCD的源码,觉得和之前的设备驱动结构有些类似,还需要再看看书本,了解LCD相关的内容,看看LCD驱动编程通常需要实现哪些函数

2022.8.25

学习了看与LCD相关的电路图,这样一旦程序出问题,我们还可以拿万用表来测量一些电压,锁定问题,了解了pwm调光,我们的pwm调光来源有两个,一是显示IC,而是CPU芯片,ap侧

学习了已经兼容了第一家屏的基础上,如何改代码兼容第二家屏,通常来说,如果能兼容第一家屏的话,说明了供电没有问题,这时候只需要复制第一家屏的uboot文件和kernel文件,换2个porch和ID就行了

第三就是找板级,方法是JSON系统——项目名——项目配置——board name。

修改好的新LCD驱动,单独编译后输出的内容在bsp/out/target目录下

2022.2.24

学习内容:

1. 下载了开源的mtk的源码,找到了LCD相关的程序在阅读

2. 最近这几天把Python基础看完了,因为之前见到同期入职的同事再拿Python写脚本,而且之前领导也问我会不会Python,问了两次,现在我把Python基础过完了,但是最后再做一个关于Python面向对象特性的项目飞机大战的时候,pygame一直装不上,可能是因为我为了运行流畅而装的Ubuntu14.04版本老的缘故,视频中老师一行安装代码能行,但是我用就会报错,下面是我看的mtk程序和写的Python代码

2022.8.18

学习内容:

看了书并发与同步控制的一章,发现很多函数原型和之前看的视频不一样,就拿之前看过的基于信号量实现的生产者消费者模型来说,下面以前的程序

视频教程都用的sem_wait和sem_post中间夹着临界区,而书本则是down和up

IMG_20220818_220641.jpg

而在man手册直接查不到down这个系统调用,不过感觉似乎表达的意思差不多

最后还是感觉以前看的视频更简单些,以前的视频介绍的是互斥锁,条件变量(条件变量不是锁,通常配合互斥锁一起使用),读写锁(读写锁是一把锁,读共享,写独占。写锁优先级更高。),信号量以及最后基于信号量实现的生产者消费者模型(允许一定程度的并发)。

2022.8.17

学习内容:

借到了展瑞的p720s09手机,拉取源码并编译

学会了adb 下cat  proc/driver/lcd_id看LCD的版本,再通过soud网站查询LCD的源码

看了一些竞态与并发相关的内容,了解了读写锁和自旋锁

明日计划:

学互斥锁与信号量

2022.8.16

学习内容:

1、《看懂原理图》一文看了一遍,起初这篇文章打不开,联系了作者还是打不开,即使作者开了权限也打不开,后来在it网站提交问题,十分钟后解决,说是原因是:服务器异常

2、完成三门线上考试

3、看了新加驱动后kconifg和makefile内容怎么改

明日计划:

学Linux设备驱动中的并发控制

存在问题:

不知道kconfig加在哪,以及写完kconfig后的后续操作和验证程序

2022.8.15

学习内容:

 下载 MTK 平台 版本工具,遇到无法下载问题。需要安装 MTK 平台的 Preloader 端口驱动 才能正常下载。联系一位同事发来驱动解决

明日计划:

学adb调试,打印分析log

2022.8.12

学习内容:

完成了字符驱动程序编写

明日计划:

找IT解决repo拉代码报错

等mtk手机申请处理完成,然后借手机

image.png

image.pngimage.png

image.pngimage.pngimage.pngimage.pngimage.png

2022.8.11

学习内容:

学习字符设备驱动开发内容

参考教材,已经写了一半的字符驱动程序了

明日计划:

写完整个字符驱动开发程序

存在问题:

repo命令报错,拉代码报错

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA 控制 LCD 1602调试笔记 初始化步骤: 1、0x38 设置为16*2显示,5*7点阵,8位数据接口 2、0x0C 说明 这里0c表示的是开显示,不显示光标,光标不显示,完整描述如下: 3、0x01 清屏幕 4、0x06 表示读或者写之后,地址指针加1,光标加1 5、0x80 位置寄存器定位于第一行的最左边 时序图: 在本例中采用50兆分频到1k的时钟,也就是E的保持时间是1ms,达到以上的时序要求。 在Altera的DEO上验证通过,显示效果如下: 完整代码如下: (本实例中,显示大写的LOVE!,第二行显示www.txsky.net) module lcm(LCD_ON, CLOCK_50, LCD_DATA, LCD_RW, LCD_RS, LCD_EN, LCD_BLON ); input CLOCK_50; output [7:0]LCD_DATA; output LCD_RW; output LCD_RS; output LCD_EN; output LCD_BLON; output LCD_ON; reg [7:0]LCD_DATA; reg LCD_RW ; reg LCD_RS; reg LCD_EN; reg clk_1k=1'b0; reg [20:0]counter=0; reg [10:0]counter1=0; assign LCD_BLON=1;//这里要么不设置数据类型,要么设置为wire assign LCD_ON=1;// 这里要么不设置数据类型,要么设置为wire always@(posedge CLOCK_50) if(counter==25000) begin clk_1k<=~clk_1k; counter<=0; end else counter<=counter+1; always@(posedge clk_1k)// //很巧妙的利用时钟来解决延时问题,特别是在时序电路的//时候 begin if(counter1<1023)//这里counter1没有给定它为0的条件,及counter1是一次性 counter1<=counter1+1;//执行的。当counter1超过1023这个值时counter1保持不变//这样下面要显示的数就会保持稳定。 casex (counter1) 400:begin LCD_DATA<=8'b00111000; //0x38 设置显示模式 LCD_RW<=1'b0; LCD_RS<=1'b0; end 401:LCD_EN<=1'b1; 410: //0x0c 开显示 关光标 begin LCD_DATA<=8'b00001100; LCD_RW<=1'b0; LCD_RS<=1'b0; end 411: LCD_EN<=1'b1; 420: begin //0x01 清屏幕 LCD_DATA<=8'b00000001; LCD_RW<=1'b0; LCD_RS<=1'b0; end 421: LCD_EN<=1'b1; 430: begin //0x06 读或者写后 自动加1 LCD_DATA<=8'b00000110; LCD_RW<=1'b0; LCD_RS<=1'b0; end 431: LCD_EN<=1'b1; 440:begin //0xc0 定位到第二行 LCD_DATA<=8'b11000000; LCD_RW<=1'b0; LCD_RS<=1'b0; end 441: begin LCD_EN<=1'b1; ack<=1;//这里是多余的, end 450: begin //write data W LCD_DATA<=8'h57; LCD_RW<=1'b0; LCD_RS<=1'b1; end 451: LCD_EN<=1'b1; 460: begin //write data W LCD_DATA<=8'h57; LCD_RW<=1'b0; LCD_RS<=1'b1; end 461: LCD_EN<=1'b1; 470: begin //write data W LCD_DATA<=8'h57; LCD_RW<=1'b0; LCD_RS<=1'b1; end 471: LCD_EN<=1'b1; 480: begin //write data . LCD_DATA<=8'h2E; LCD_RW<=1'b0; LCD_RS<=1'b1; end 481: LCD_EN<=1'b1; 490: begin //write data T LCD_DATA<=8'h54; LCD_RW<=1'b0; LCD_RS<=1'b1; end 491: LCD_EN<=1'b1; 500:begin //write data X LCD_DATA<=8'h58; LCD_RW<=1'b0; LCD_RS<=1'b1; end 501: LCD_EN<=1'b1; 510:begin //write data S LCD_DATA<=8'h53; LCD_RW<=1'b0; LCD_RS<=1'b1; end 511: LCD_EN<=1'b1; 520: begin //write data K LCD_DATA<=8'h4B; LCD_RW<=1'b0; LCD_RS<=1'b1; end 521: LCD_EN<=1'b1; 530: begin //write data Y LCD_DATA<=8'h59; LCD_RW<=1'b0; LCD_RS<=1'b1; end 531: LCD_EN<=1'b1; 540: begin //write data . LCD_DATA<=8'h2E; LCD_RW<=1'b0; LCD_RS<=1'b1; end 541: LCD_EN<=1'b1; 550: begin //write data N LCD_DATA<=8'h4E; LCD_RW<=1'b0; LCD_RS<=1'b1; end 551: LCD_EN<=1'b1; 560: begin //write data E LCD_DATA<=8'h45; LCD_RW<=1'b0; LCD_RS<=1'b1; end 561: LCD_EN<=1'b1; 570: begin //write data T LCD_DATA<=8'h54; LCD_RW<=1'b0; LCD_RS<=1'b1; end 571: LCD_EN<=1'b1; 580: begin //定位到第一行 LCD_DATA<=8'h80; LCD_RW<=1'b0; LCD_RS<=1'b0; end 581: LCD_EN<=1'b1; 590: begin //write data L LCD_DATA<=8'h4C; LCD_RW<=1'b0; LCD_RS<=1'b1; end 591: LCD_EN<=1'b1; 600: begin //write data O LCD_DATA<=8'h4F; LCD_RW<=1'b0; LCD_RS<=1'b1; end 601: LCD_EN<=1'b1; 610: begin //write data V LCD_DATA<=8'h56; LCD_RW<=1'b0; LCD_RS<=1'b1; end 611: LCD_EN<=1'b1; 620: begin //write data E LCD_DATA<=8'h45; LCD_RW<=1'b0; LCD_RS<=1'b1; end 621: LCD_EN<=1'b1; 630: begin //write data ! LCD_DATA<=8'h21; LCD_RW<=1'b0; LCD_RS<=1'b1; end 631: LCD_EN<=1'b1; default: LCD_EN<=1'b0; endcase end endmodule
第一阶段在PC机上学习熟悉Linux. 一.Red Hat Linux 9下的常用操作… ………………… 二.Minicom的使用….… 三.NFS的使用… … 四.应用程序编程实验…… 五.模块编程实验…… 六.简单的字符设备驱动实验…… 第二阶段在开发板上学习研究Linux. 一.MIZI Linux SDK for S3C2410开发环境及工具使用. 1.构造软件开发环境. 2.编译嵌入式Linux生成image…… 3.将嵌入式Linux的image下载到目标板… … 4. 嵌入式平台测试…… 一嵌入式Iinox取动开发 ……………… …… ……… 1.模块编程实验 …… 2. 点亮目标板的LED… … ……… 3.按键中断实验…… …… 4.定时器驱动及PWM输出 5.点亮目标板LCD.…… 6.安装触摸板. 三.构建完整的嵌入式Linux系统…………………… 1.桌面系统的启动…… 2.下载可读写的文件系统Yaffs… … 3.Yaffs文件系统移植…… 4.Yaffs作为根文件系统启动… 5.完整的嵌入式Linux系统…… 四.嵌入式WEB服务器…… 1. Boa移植… … 2.WEB应用开发……… 五.NFS的配置. 1.主机的NFS服务器配置… 2.目标机的NFS客户端配置……… 3.出现的问题…… 第三阶段在项目中应用Linux.… 一.进程间隔定时器…… 1.概念. 2.数据结构…… 3.操作函数 4.测试程序 二,虚拟地址 三.以太网控制器——CS8900A硬件调试, 1.调试步骤 2.出现过的问题 四.WiFi无线网络 1.在RedHat9上安装TL-WN210无线网卡驱动。 2.无线网络配置 3.RedHat9上使用WL-110无线网卡 4.无线网卡控制器PD6710硬件测试, 5.Linux下驱动程序及装载. 五,CPLD扩展外部设备 1.扩展I/0 2.扩展串口16C554. 六,PWM驱动蜂鸣器 1.驱动源码 2.驱动测试程序 3.出现过的问题 七.485网络驱动 1.硬件测试 2.Linux驱动程序 3.驱动测试程序 4.出现的问题 八.红外学习与发射 1.硬件测试程序 2.Linux驱动程序 3.驱动测试程序, 4.出现的问题 5.总结 九,网络编程, 1.常用函数 2.服务器程序 3.测试用客户程序 4.利用I0复用替代多进程的并发服务器…… 5.用无线网络测试上述程序 十.系统时间的实现. 十一。关于进程的体会 1.进程间不共享变量 2.进程通信——信号的使用 3.防止僵死进程。 第四阶段用户图形界面设计 一,QT应用编程 二. Qt/Embedded和QTOPIA.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值