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