msm8909+android5.1.1--打开调试(debug)串口

msm8909+android5.1.1--打开调试(debug)串口

 

1.     共同修改的地方

(1)  kernel\arch\arm\configs\msm8909-1gb-CB03_defconfig

使以下项有效

CONFIG_SERIAL_MSM_HSL=y

CONFIG_SERIAL_MSM_HSL_CONSOLE=y

 

增加以下项

CONFIG_DEBUG_LL=y

CONFIG_EARLY_PRINTK=y

 

(2)   Root/bootable/bootloader/lk/project/msms8909.mk

确保DEFINES += WITH_DEBUG_UART=1

 

2.     V1.0主板


图1

UART1_TX-------GPIO_4

UART1_RX-------GPIO_5

 

(3)  device\qcom\sepolicy\common\file_contexts----需要make –j4才生效

使以下项有效

/dev/ttyHSL0                                   u:object_r:console_device:s0

 

(4)  kernel\arch\arm\boot\dts\qcom\msm8909-cb03.dtsi

使以下项不生效

spi0 = &spi_0; /* SPI0 controller device*/

使以下项有效

      blsp1_uart1:serial@78af000 {
              compatible= "qcom,msm-lsuart-v14";
              reg= <0x78af000 0x200>;
              interrupts= <0 107 0>;
              status= "disabled";
              clocks= <&clock_gcc clk_gcc_blsp1_uart1_apps_clk>,
                      <&clock_gcc clk_gcc_blsp1_ahb_clk>;
              clock-names= "core_clk", "iface_clk";
       };

(5)  kernel\arch\arm\boot\dts\qcom\msm8909-qrd-cb03.dtsi

使以下项有效

&blsp1_uart1 {
       status= "ok";
       pinctrl-names= "default";
       pinctrl-0= <&uart_console_sleep>;
};

3.     V1.1主板


图2

UART2_TX-------GPIO_20

UART2_RX-------GPIO_21

msm8909+android5.1.1--打开调试(debug)串口_第1张图片

图3

 

UART_VDD_EN------I2C扩展IC XRA1201的P6引脚。

 

所做的修改如下

(1)  \bootable\bootloader\lk\platform\msm8909\ msm8909-clock.c

msm_clocks_msm8909[]增加:

CLK_LOOKUP("uart2_iface_clk",gcc_blsp1_ahb_clk.c),
CLK_LOOKUP("uart2_core_clk",  gcc_blsp1_uart2_apps_clk.c),
 

(2)  bootable\bootloader\lk\target\msm8909\init.c

target_early_init()函数下

uart_dm_init(1, 0, BLSP1_UART0_BASE);
改为
uart_dm_init(2,0, BLSP_UART1_BASE);

(3)  \bootable\bootloader\lk\platform\msm8909\gpio.c

target_early_init()--->uart_dm_init(id)--->gpio_config_uart_dm()

/* configure rx gpio */
       gpio_tlmm_config(5,2, GPIO_INPUT, GPIO_NO_PULL,
                            GPIO_8MA,GPIO_DISABLE);
 
       /*configure tx gpio */
       gpio_tlmm_config(4,2, GPIO_OUTPUT, GPIO_NO_PULL,
                            GPIO_8MA,GPIO_DISABLE);
       #endif

改为

/* configure rx gpio */
       gpio_tlmm_config(21, 3, GPIO_INPUT, GPIO_NO_PULL,
                            GPIO_8MA,GPIO_DISABLE);
 
       /*configure tx gpio */
       gpio_tlmm_config(20, 3, GPIO_OUTPUT, GPIO_NO_PULL,
                            GPIO_8MA,GPIO_DISABLE);

(4)  \kernel\arch\arm\mach-msm\include\mach\msm_iomap-8909.h

#define MSM_DEBUG_UART_PHYS      0x78AF000改为0x78B0000

 

(5)  device\qcom\sepolicy\common\file_contexts

增加:

/dev/ttyHSL1                         u:object_r:console_device:s0

如果有/dev/ttyHSL0  u:object_r:console_device:s0也不影响。

 

(6)  kernel\arch\arm\boot\dts\qcom\msm8909-cb03.dtsi

确保下面有效

blsp1_uart2: serial@78b0000 {
              compatible= "qcom,msm-lsuart-v14";
              reg= <0x78b0000 0x200>;
              interrupts= <0 108 0>;
              status= "disabled";
              clocks= <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
                      <&clock_gcc clk_gcc_blsp1_ahb_clk>;
              clock-names= "core_clk", "iface_clk";
       };

同时注释掉blsp1_uart1,因为BLSP1是作为SPI。

 

(7)  \kernel\drivers\misc\msmgpio_ctrl.c

msmgpio_ctrl_probe()增加

gpio_direction_output(pdata->uart1_vcc,1);//确保3.3V供电

 

这里就算是改为gpio_direction_output(pdata->uart1_vcc,0);也可输出调试信息,这里可能是其他地方有电过来。

 

(8)  msm8909-qrd-skue-cb03.dtsi,比较重要

/ {
       aliases{
              serial1= &blsp1_uart2;// should be no serial1, 0 for console
       };
};

这里确保为采用的串口,下面给出相关介绍

\kernel\Documentation\devicetree\bindings\tty\serial\msm_serial.txt

Aliases:
An alias may optionally be used to bind theserial device to a tty device
(ttyHSLx) with a given line number. Aliasesare of the form serial<n> where <n>
is an integer representing the line numberto use. On systems with multiple
serial devices present it is recommendedthat an alias be defined for each such
device.

(9)  msm8909-pinctrl-cb03.dtsi和msm8909-pinctrl.dtsi

pmx-uartconsole {
                     qcom,pins= <&gp 4>, <&gp 5>;
                     qcom,num-grp-pins= <2>;
                     qcom,pin-func= <2>;
                     label= "uart-console";
                     uart_console_sleep:uart-console {
                            drive-strength= <2>;
                            bias-pull-down;
                     };
              };

把这两个文件下的qcom,pins =<&gp 4>, <&gp 5>;改为qcom,pins = <&gp 20>, <&gp 21>;

 

(10) \device\qcom\msm8909\ BoardConfig.mk

BOARD_KERNEL_CMDLINE :=console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcomuser_debug=31 msm_rtb.filter=0x3F ehci-hcd.park=3androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 earlyprintk

上面的ttyHSL0统一改为ttyHSL1,同时去掉最后面的earlyprintk,否则启动失败信息如下:

Android Bootloader - UART_DM Initialized!!!
[70] Not able to search the panel:
[80] Logo config doesn't match with fbconfig. Fall back default logo
[520] Channel alloc freed
Uncompressing Linux... done, booting thekernel.

一开机可能就卡在这里,或是多次自动反复重启后停止这里,输出的都是这些信息。只要加上earlyprintk,就有这问题。

 

(11) kernel\arch\arm\boot\dts\qcom\msm8909-cb03.dtsi

 

4.     V1.0主板和V1.1主板可显示调试信息的差异

 

V1.0主板可以输出更早启动阶段的调试信息,应该是由UART1改为UART2后,还有一些地方没有改好,如下:

Format: Log Type - Time(microsec) - Message- Optional Info
Log Type: B - Since Boot(Power OnReset),  D - Delta,  S - Statistic
S -QC_IMAGE_VERSION_STRING=BOOT.BF.3.1.2.C2-00014
S - IMAGE_VARIANT_STRING=DAASANAZA
S - OEM_IMAGE_VERSION_STRING=BU3-gongyong5
S - Boot Config, 0x000000e1
B -     1566 - PBL, Start
B -     4542 - bootable_media_detect_entry, Start
B -    74039 - bootable_media_detect_success, Start
B -    74043 - elf_loader_entry, Start
B -    75610 - auth_hash_seg_entry, Start
B -    75871 - auth_hash_seg_exit, Start
B -    90062 - elf_segs_hash_verify_entry, Start
B -   148922 - PBL, End
B -   170342 - SBL1, Start
B -   231739 - boot_flash_init, Start
D -       30 - boot_flash_init, Delta
B -   238662 - boot_config_data_table_init, Start
D -     5642 - boot_config_data_table_init, Delta - (0 Bytes)
B -   249276 - CDT version:3,Platform ID:11,Major ID:1,Minor ID:0,Subtype:12
B -   257054 - pm_device_init, Start
B -   260378 - pm_device_init, TEST - MSM8909 detected
B -   266051 - pm_device_init, INFO - PM8909 is selected
B -   280783 - PM_SET_VAL:Skip
D -    22112 - pm_device_init, Delta
B -   282186 - sbl1_ddr_set_params, Start
B -   284565 - cpr_init, Start
D -        0 - cpr_init, Delta
B -   290207 - Pre_DDR_clock_init, Start
D -      183 - Pre_DDR_clock_init, Delta
D -        0 - sbl1_ddr_set_params, Delta
B -   303139 - pm_driver_init, Start
B -   309941 - --> Charge init
B -     3939 - battery voltage
B -   313448 - boot up
B -       10 - Current status
D -    10614 - pm_driver_init, Delta
B -   325557 - clock_init, Start
D -      152 - clock_init, Delta
B -   325923 - Image Load, Start
D -    22814 - QSEE Image Loaded, Delta - (460120 Bytes)
B -   348767 - Image Load, Start
D -      549 - SEC Image Loaded, Delta - (2048 Bytes)
B -   357063 - sbl1_efs_handle_cookies, Start
D -      762 - sbl1_efs_handle_cookies, Delta
B -   363773 - Image Load, Start
D -    14731 - RPM Image Loaded, Delta - (154076 Bytes)
B -   378535 - Image Load, Start
D -    19551 - APPSBL Image Loaded, Delta - (466512 Bytes)
B -   398147 - QSEE Execution, Start
D -      335 - QSEE Execution, Delta
B -   403881 - SBL1, End
D -   235826 - SBL1, Delta
S - Throughput, 33000 KB/s  (1082756 Bytes,  32538 us)
S - DDR Frequency, 400 MHz

你可能感兴趣的:(msm8909+android5.1.1--打开调试(debug)串口)