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:[email protected] {
              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

图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: [email protected] {
              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
时间: 2024-12-15 07:12:48

msm8909+android5.1.1--打开调试(debug)串口的相关文章

MSM8909+Android5.1.1 SPI驱动开发(PSAM部分)

MSM8909+Android5.1.1SPI驱动开发(PSAM部分) 1.     PSAM部分的硬件设计 图1 CS   片选信号 SCK  时钟信号 MISO 主设备的数据输入.从设备的数据输出脚 MOSI 主设备的数据输出.从设备的数据输入脚 2.     PSAM部分软件设计 图2 (1)  PSAM应用 这部分只需要调用API函数即可. (2)  PSAM API API的主要工作就是给M0上电.设置SPI读写模式.设置SPI读写的每字节的位数.SPI的工作频率等. (3)  SPI

X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  开发环境:

Hive 打开调试模式

编程过程中发现错误,无法看到具体的错误信息,网上搜了下,按照下面的方法启动Hive Shell就可以打开调试(注意:此方法只对本次回话有效): hive --hiveconf hive.root.logger=DEBUG,console 如果需要对所有会话有效,则可以修改Hive的配置文件.不过不建议这么做,因为不是经常出错,要是放个屁都要显示下Log,太恶心了,直接影响心情,级联影响生产效率.

eclipse调试(debug)弹出错误

原创:http://www.cnblogs.com/lanhj/p/3874426.html 警告信息: Cannot connect to VM com.sun.jdi.connect.TransportTimeoutException 控制台错误信息: FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport

Linux入门第五天——shell脚本入门(下)基础语法之调试debug

一.如何debug 1.通过sh命令的参数: sh [-nvx] scripts.sh 选项与参数: -n :不要执行 script,仅查询语法的问题: -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上: -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数! 示例1:no news is good news [[email protected] tmp]# sh -n add1_100.sh [[email protected] tmp]# 示例2:

node.js 远程调试debug产线环境代码

一.背景: 产线机器出bug,不能重启服务,需要保留现场,问题不好排查,远程debug服务器端代码才是正解. 二.实现步骤 1. 登录远程机器执行如下命令,nodePid为node服务的pid kill -usr1 nodePid #此命令不会重启服务 2. 本地执行,映射远程服务端口到本地端口9229,后续chrome调试使用 ssh -L 9220:localhost:9229 username@40.xxx.xx.xxx 3. 本地机器,chrome打开 chrome://inspect/

vs2013中$(TargetPath)与Link.OutputFile不同,导致调试debug找不到exe

之前把VS2008项目升级为VS2013项目后,出现了VS2013调试debug找不到exe文件的现象,如:http://blog.sina.com.cn/s/blog_6c617ee301013xtz.html 原因是原工程的属性设置了输出目录在debug下,但是输出文件在bin下 有的方法说把两个目录统一下就好了,但是我就是想把exe单独放在bin下,可以按如下操作: 原本的TargetPath是错的,该目录下没有exe 改成下面这样就好了 另附参考网页: vs2012的debug设置问题

Cordova 3.x 基础(3) -- 调试Debug工具

Cordova 3.x 基础(3) -- 调试Debug工具 (1)Ripple Emulator 是基于Google Chrome的移动应用模拟器,已经捐赠给了ASF.Apache Ripple:http://ripple.incubator.apache.org/ Chrome Webstore安装地址: https://chrome.google.com/webstore/detail/geelfhphabnejjhdalkjhgipohgpdnoc 安装Ripple Emulator 引

代码调试之串口打印

以前习惯用jlink调试代码,最近发现jlink老是出现问题,丢固件.无法仿真等等,甚是苦恼,无奈用串口打印的方式来替代jlink调试: 串口调试需要使用到半主机模式,具体的调用代码如下: #pragma import(__use_no_semihosting) struct __FILE { int handle; }; FILE __stdout; void _sys_exit ( int x ) { x = x; } int fputc ( int ch, FILE *f ) { whil