安卓11(AndroidR)展锐 sc9863a驱动调试笔记1

5 篇文章 1 订阅
3 篇文章 0 订阅

1.先来看下新代码包的所使用的文件所在:

Source和lunch 58之后(58. s9863a1h10_go_32b_2g-userdebug-native),配置了一些环境变量:

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=11

TARGET_PRODUCT=s9863a1h10_go_32b_2g

TARGET_BUILD_VARIANT=userdebug

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv7-a-neon

TARGET_CPU_VARIANT=generic

HOST_ARCH=x86_64

HOST_2ND_ARCH=x86

HOST_OS=linux

HOST_OS_EXTRA=Linux-3.19.0-25-generic-x86_64-Ubuntu-14.04.3-LTS

HOST_CROSS_OS=windows

HOST_CROSS_ARCH=x86

HOST_CROSS_2ND_ARCH=x86_64

HOST_BUILD_TYPE=release

BUILD_ID=RP1A.201005.001

OUT_DIR=out

PRODUCT_SOONG_NAMESPACES=device/generic/goldfish device/generic/goldfish-opengl

使用的jdk在lunch之后就已配置好,java -version输出如下:

openjdk version "11.0.4" 2019-07-16

OpenJDK Runtime Environment Android_PDK (build 11.0.4+0-5935077)

OpenJDK 64-Bit Server VM Android_PDK (build 11.0.4+0-5935077, mixed mode)

这里不需要编译电脑专门配置jdk版本,代码内部就带这样一个jdk的了。

刚拿到一个代码包,Lunch之后,你所用的哪些配置文件,基本就确定下来了,这需要根据编译log来确定,因为现在的目录分得更细,

Chipram配置文件:

bsp\bootloader\chipram\include\configs\sp9863a_1h10_32b.h

Lunch之后,bsp的productname就确定下来了,看编译的log有如下输出:

s9863a1h10_go_32b_2g-userdebug-androidr

BSP_PRODUCT_NAME  :  s9863a1h10_go_32b_2g

BSP_BUILD_VARIANT :  userdebug

BSP_PRODUCT_PATH  :  /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_2g

看到没有,BSP_PRODUCT_PATH指出bsp目录下面具体的配置文件及目录所在:

另外,在编译log中可以查看具体source的目录 :

行 33: [32m #### start build chipram #### [0m

行 7669: [32m #### start build busybox #### [0m

行 9232: [32m #### start build perf #### [0m

行 9297: [32m #### start build bootloader #### [0m

行 35570: [32m #### start build teecfg #### [0m

行 35616: [32m #### start build modules #### [0m

行 35628: [32m #### start build kernel #### [0m

行 35629: [32m #### start build config #### [0m

行 35659: [32m #### start build headers #### [0m

行 35710: [32m #### start build config #### [0m

行 35740: [32m #### start build dtb #### [0m

行 36464: [32m #### start build config #### [0m

行 36494: [32m #### start build dtboimage #### [0m

定义uboot的dtb和deconfig文件在如下目录了(通过编译log看出),比如chipram和uboot的配置文件所用的配置文件如下:

[32m #### start build chipram #### [0m

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/chipram.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/chipram.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_2g/common.cfg

[32m #### start build bootloader #### [0m

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/uboot.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/uboot.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_2g/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_2g/uboot.cfg

Kernel的部分应当是编译log早先出来的部分:

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/common/kernel.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/common.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/kernel.cfg

source /home/chendy/sc6763a/bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_2g/common.cfg

上面的source顺序,可以看出后面souce出来的文件内容,如果与前面是相同的,则后面文件的优待级比较高。如果没有重复,则会使用上述几个目录中的配置。通过查看bootloader部分source的部分,打开uboot.cfg文件来看,dtb的文件指定,是在如下目录指定的

bsp\device\sharkl3\androidr\s9863a1h10_go_32b\s9863a1h10_go_32b_base\uboot.cfg,其内容如下:

export BSP_UBOOT_TOOLCHAIN=$BSP_ROOT_DIR/toolchain/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-

export BSP_UBOOT_DEFCONFIG="sp9863a_1h10_32b"

export BSP_UBOOT_TARGET_DTB="sp9863a_1h10_32b"

export BSP_PRODUCT_USE_DYNAMIC_PARTITIONS="true"

则uboot层的指定的BSP_UBOOT_TARGET_DTB就是dts文件名:bsp/bootloader/u-boot15/arch/arm/dts/sp9863a_1h10_32b.dts

BSP_UBOOT_DEFCONFIG就是所使用的defconfig文件名:bsp\bootloader\u-boot15\configs\sp9863a_1h10_32b_defconfig

Kernel部分的宏指定

bsp\device\sharkl3\androidr\s9863a1h10_go_32b\s9863a1h10_go_32b_2g\common.cfg:

export BSP_DTB="sp9863a"

export BSP_DTBO="sp9863a-1h10_go_32b-overlay"

指定了使用的dts为:bsp/kernel/kernel4.14/arch/arm/boot/dts/sp9863a-1h10_go_32b-overlay.dts

在bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/kernel.cfg

指定了如下宏:

BSP_KERNEL_VERSION="kernel4.14"

export BSP_BOARD_NAME="s9863a1h10_go_32b"

在bsp/device/sharkl3/androidr/s9863a1h10_go_32b/s9863a1h10_go_32b_base/common.cfg配置了如下信息:

#DEFCONFIG

export BSP_KERNEL_DEFCONFIG="sprd_sharkl3_defconfig" 这句话指定了defconfig的具体名字,即是如下文件

bsp/kernel/kernel4.14/arch/arm/configs/sprd_sharkl3_defconfig

2.屏驱动调试,要同时调试uboot和kernel部分的屏驱动:

uboot部分涉及到:

打开bsp/bootloader/u-boot15/arch/arm/dts/sp9863a_1h10_32b.dts这个文件来看,这里指定了所使用的屏:

#include "sc9863a.dtsi"
#include "sharkl3.dtsi"
#include "sc2721.dtsi"
#include "lcd/lcd_nt35596_boe_mipi_fhd.dtsi"
#include "lcd/lcd_nt35532_truly_mipi_fhd.dtsi"
#include "lcd/lcd_nt35695_truly_mipi_fhd.dtsi"
#include "lcd/lcd_dummy_mipi.dtsi"

在这里屏的配置里有控制gpio口的设置:

	lcd-panel {
		compatible = "sprd,generic-mipi-panel";
		sprd,lcd-avdd-gpio = <4>;
		sprd,lcd-avee-gpio = <5>;
		sprd,lcd-reset-gpio = <50>;
	};

而bsp\bootloader\u-boot15\drivers\video\sprd\sprd_panel.c和sprd_panel.h文件则实现的是屏的平台层的驱动,不再是屏驱动是否加载的数组了

uboot 层Defconfig文件目录有所更改,在

bsp/bootloader/u-boot15/configs/sp9863a_1h10_32b_defconfig

屏kernel部分涉及到:

对应kernel中的dts对屏的配置方面,是bsp/kernel/kernel4.14/arch/arm/boot/dts/sp9863a-1h10_go_32b-overlay.dts

&panel {
	sprd,backlight = <&pwm_backlight>;
	sprd,surface-width = <720>;
	sprd,surface-height = <1280>;
	avdd-gpio = <&ap_gpio 4 GPIO_ACTIVE_HIGH>;
	avee-gpio = <&ap_gpio 5 GPIO_ACTIVE_HIGH>;
	reset-gpio = <&ap_gpio 50 GPIO_ACTIVE_HIGH>;
};

启动初始是靠ID的不同来识别屏的

屏ID识别部分:如下是识别不正确的情况:

[sprdfb][of_parse_panel] panel: lcd_ili9881d_zhongzhengwei_mipi_hd720

fdtdec_get_int_array: sprd,reset-on-sequence

get_prop_check_min_len: sprd,reset-on-sequence

fdtdec_get_int_array: sprd,reset-off-sequence

get_prop_check_min_len: sprd,reset-off-sequence

fdtdec_get_int_array: sprd,lcd-id-value-len

get_prop_check_min_len: sprd,lcd-id-value-len

[sprdfb][of_parse_panel] Can't get sprd,lcd-id-tokernel

[sprdfb][of_parse_panel] Can't get sprd,lcd-id-tokernel

[sprdfb][dsi_power_domain] dsi power on

[sprdfb][dsi_glb_enable] dsi global enable

[sprdfb][mipi_dsi_init] escape clk div = 4

[sprdfb][sprd_dsi_resume] dsi init OK

[sprdfb][mipi_dphy_configure] lanes : 3

[sprdfb][mipi_dphy_configure] freq : 614000

[sprdfb][sprd_dphy_resume] dphy init OK

GPIO_0 data mask hasn't been opened!

[sprdfb][panel_readid] read hw pin value = 0 gpio_lcdid = 0

[sprdfb][panel_readid] read hw pin lcd_pin_id_mode:0 lcd_pin_id_value:0

[sprdfb][panel_readid] Download Read Id Cmd

[sprdfb][panel_readid] reg items:2, cmd:0xf1, val_en:1 >> R:0x81, D:0x81;

[sprdfb][panel_readid] reg items:2, cmd:0xf2, val_en:1 >> R:0x04, D:0x0d;

[sprdfb][panel_readid] Error: Read ID register data error: [0]=0x04, [1]=0x04, [2]=0x00, [3]=0x00

如下是识别正常的ID ,并打印该屏相关的信息:

[sprdfb][of_parse_panel] panel: lcd_ili9881d_zhongzhengwei_mipi_hd720

fdtdec_get_int_array: sprd,reset-on-sequence

get_prop_check_min_len: sprd,reset-on-sequence

fdtdec_get_int_array: sprd,reset-off-sequence

get_prop_check_min_len: sprd,reset-off-sequence

fdtdec_get_int_array: sprd,lcd-id-value-len

get_prop_check_min_len: sprd,lcd-id-value-len

[sprdfb][of_parse_panel] Can't get sprd,lcd-id-tokernel

[sprdfb][of_parse_panel] Can't get sprd,lcd-id-tokernel

[sprdfb][dsi_power_domain] dsi power on

[sprdfb][dsi_glb_enable] dsi global enable

[sprdfb][mipi_dsi_init] escape clk div = 4

[sprdfb][sprd_dsi_resume] dsi init OK

[sprdfb][mipi_dphy_configure] lanes : 3

[sprdfb][mipi_dphy_configure] freq : 614000

[sprdfb][sprd_dphy_resume] dphy init OK

GPIO_0 data mask hasn't been opened!

[sprdfb][panel_readid] read hw pin value = 0 gpio_lcdid = 0

[sprdfb][panel_readid] read hw pin lcd_pin_id_mode:0 lcd_pin_id_value:0

[sprdfb][panel_readid] Download Read Id Cmd

[sprdfb][panel_readid] reg items:2, cmd:0xf1, val_en:1 >> R:0x81, D:0x81;

[sprdfb][panel_readid] reg items:2, cmd:0xf2, val_en:1 >> R:0x04, D:0x0d;

[sprdfb][panel_readid] Error: Read ID register data error: [0]=0x04, [1]=0x04, [2]=0x00, [3]=0x00

如下是识别正常的ID ,并打印该屏相关的信息:

[sprdfb][panel_readid] read hw pin value = 0 gpio_lcdid = 0

[sprdfb][panel_readid] read hw pin lcd_pin_id_mode:0 lcd_pin_id_value:0

[sprdfb][panel_readid] Download Read Id Cmd

[sprdfb][panel_readid] reg items:2, cmd:0xf1, val_en:1 >> R:0x81, D:0x81;

[sprdfb][panel_readid] reg items:2, cmd:0xf2, val_en:1 >> R:0x04, D:0x04;

[sprdfb][panel_readid] LCD Read Id Success!!!

[sprdfb][sprd_panel_probe] attach panel 0x988104 success

[sprdfb][dump_panel_info] ----Success attached lcd name:lcd_ili9881p_dahong_mipi_hd720, id: 0x988104-----

[sprdfb][dump_panel_info] lcd: type:2, bpp:24, width:720, height:1280

[sprdfb][dump_panel_info] lcd: gpio_reset: 50

[sprdfb][dump_panel_info] gpio_avdd: 4,  gpio_avee: 5

[sprdfb][dump_panel_info] ========sprd,reset-on-sequence ========

[sprdfb][dump_panel_info] lcd: index:0, level: 1, delay: 5

[sprdfb][dump_panel_info] lcd: index:1, level: 0, delay: 5

[sprdfb][dump_panel_info] lcd: index:2, level: 1, delay: 20

[sprdfb][dump_panel_info] ========sprd,reset-off-sequence ========

[sprdfb][dump_panel_info] lcd: index:0, level: 0, delay: 20

[sprdfb][dump_panel_info] ---------------------------------------

[sprdfb][panel_init] Download Panel Init Data Success!

修改了内核的dts文件,编译时在根目录下面启动make dtboimage 后,下载如下文件即更新到修改:

out\target\product\s9863a1h10_go_32b\dtbo.img

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值