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/ttyHSL0u:object_r:console_device:s0

 

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

使以下项不生效

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

使以下项有效

 

?
1
2
3
4
5
6
7
8
9
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

使以下项有效

 

?
1
2
3
4
5
&blsp1_uart1 {
        status= "ok" ;
        pinctrl-names= "default" ;
        pinctrl- 0 = <&uart_console_sleep>;
};

 

3.V1.1主板

\

 

图2

UART2_TX-------GPIO_20

UART2_RX-------GPIO_21

\

 

图3

 

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

 

所做的修改如下

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

msm_clocks_msm8909[]增加:

 

?
1
2
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()函数下

 

?
1
2
3
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()

 

?
1
2
3
4
5
6
7
8
/* 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

 

改为

 

?
1
2
3
4
5
6
7
/* 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

确保下面有效

 

?
1
2
3
4
5
6
7
8
9
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,比较重要

 

?
1
2
3
4
5
/ {
        aliases{
               serial1= &blsp1_uart2; // should be no serial1, 0 for console
        };
};

 

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

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

 

?
1
2
3
4
5
6
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.</n></n>

 

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

 

?
1
2
3
4
5
6
7
8
9
10
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,否则启动失败信息如下:

 

?
1
2
3
4
5
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后,还有一些地方没有改好,如下:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值