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
|