点击打开链接

解决问题的过程中,好文章推荐,都保存在火狐wilson_sq@qq.com记录中~~~~~~~~

grep -r "earlyprintk" kernel

kernel/Documentation/driver-model/platform.txt:should use early_platform_init("earlyprintk", &platform_driver).
./arch/sh/configs/sh2007_defconfig:CONFIG_CMDLINE="console=ttySC1,115200 ip=dhcp root=/dev/nfs rw nfsroot=/nfs/rootfs,rsize=1024,wsize=1024 earlyprintk=sh-sci.1"
./arch/sh/configs/rsk7203_defconfig:CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=serial ignore_loglevel"
./arch/sh/configs/migor_defconfig:CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 earlyprintk=serial ip=on root=/dev/nfs ip=dhcp"
./arch/sh/configs/sdk7786_defconfig:CONFIG_CMDLINE="console=ttySC1,115200 earlyprintk=sh-sci.1,115200 root=/dev/sda1 nmi_debug=state,debounce rootdelay=5 pmb=iomap ignore_loglevel"
./arch/sh/configs/rsk7201_defconfig:CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=serial ignore_loglevel"
./arch/sh/configs/shx3_defconfig:CONFIG_CMDLINE="console=ttySC0,115200 earlyprintk=bios ignore_loglevel"

/************************************
全盘搜索earlyprintk查看其调用过程
***************************************/
全盘搜索earlyprintk查看其调用过程
①在kernel-parameters.txt中有如下描述,看我们的对应哪个,
earlyprintk=  [X86,SH,BLACKFIN,ARM] earlyprintk=vga
earlyprintk=xen
earlyprintk=serial[,ttySn[,baudrate]]
earlyprintk=serial[,0x...[,baudrate]]
earlyprintk=ttySn[,baudrate]
earlyprintk=dbgp[debugController#]
最终我们调用的是:earlyprintk=msm_hsl_uart,0x078b0000 。      0x078b0000是uart2的基地址

/************************************
      确定uart2的基地址:
***************************************/  
cd /android/kernel/arch/arm64/boot/dts
grep -r "uart" . |grep 8916
看到一下几行
./qcom/msm8916.dtsi:            pinctrl-0 = <&hsuart_sleep>;
./qcom/msm8916.dtsi:            pinctrl-1 = <&hsuart_active>;
./qcom/msm8916.dtsi:    blsp1_uart2: serial@78b0000 {
./qcom/msm8916.dtsi:            compatible = "qcom,msm-lsuart-v14";
./qcom/msm8916.dtsi:            clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
这里的blsp1_uart2: serial@78b0000   中的78b0000就是基地址
手册中也可以查到这个 基地址

如果启动过程中没有相关的打印显示,则应打开必要的打印:
#CONFIG_SERIAL_MSM_HS=y
#CONFIG_SERIAL_MSM_HSL=y
#CONFIG_SERIAL_MSM_HSL_CONSOLE=y

CONFIG_CMDLINE的位置:
①android/device/qcom/msm8916_64/BoardConfig.mk        /************/earlyprintk在这里设置后,./build.sh kernel后boot.img没有重新生成。。
②android/kernel/arch/arm/boot/dts/qcom/msm8939.dtsi 里搜索chosen{有bootargs的设置}
③android/bootable/bootloader/lk/app/aboot/aboot.c

内核中查看cmdlines
cat /proc/cmdlines

过程中遇到的问题:在改动①android/device/qcom/msm8916_64/BoardConfig.mk中的CMDLINE后,应该将生成目录中的/android/out目录重新删除,否则./build.sh kernel命令执行后不更新boot.img

打印的log中搜索earlyprink/earlycon/bootconsoles,看到有一下打印
在一下程序中找到:原因是只有CMDLINE+ earlyprintk,而没有给earlyprink赋值
if (!buf) {
pr_warning("No earlyprintk arguments passed.\n");
return 0;
}

kernel-parameters.txt中有如下描述
earlycon=  [KNL] Output early console device and options. uart[8250],io,<addr>[,options]
uart[8250],mmio,<addr>[,options]
uart[8250],mmio32,<addr>[,options] Start an early, polled-mode console on the 8250/16550
UART at the specified I/O port or MMIO address.
MMIO inter-register address stride is either 8-bit
(mmio) or 32-bit (mmio32).
The options are the same as for ttyS, above.
*********************earlycon******************
earlycon根据其他的config文件中的设置一下
//grep -r “earlycon”   *config
./drivers/tty/serial/8250/Kconfig:  "earlycon=uart8250,io,0x3f8,9600n8"
./drivers/tty/serial/8250/Kconfig:  "earlycon=uart8250,mmio,0xff5e0000,115200n8".

void __init parse_early_options(char *cmdline)
parse_args("early options", cmdline, NULL, 0, 0, 0, do_early_param);
parse_one(param, val, doing, params, num, min_level, max_level, unknown);
handle_unknown(param, val, doing);        doing="early options"

另一种启动方式:
fastboot -c   "earlyprintk=msm_hsl_uart,0x078b0000" boot   boot.img可以通过fastboot启动指定内核。虽然启动没成功,但是大概命令应该没错~~~有待改进。。

google里搜索No earlyprintk arguments passed
https://lists.linaro.org/pipermail/linaro-kernel/2013-May/004416.html这篇文章好像可已解决问题

正常串口的设置:    CMDLINE中的console=ttyHSL0,115200,n8 参数
platform_driver_register(&msm_hsl_platform_driver);
msm_hsl_platform_driver
msm_serial_hsl_probe
uart_add_one_port(&msm_hsl_uart_driver, port);
uport->cons = drv->cons;
uart_configure_port(drv, state, uport);
uart_configure_port(struct uart_driver *drv, struct uart_state *state,struct uart_port *port)
register_console(port->cons);

uart_add_one_port(&msm_hsl_uart_driver, port);
static struct uart_driver msm_hsl_uart_driver = {
.owner = THIS_MODULE,
.driver_name = "msm_serial_hsl",
.dev_name = "ttyHSL",
.nr = UART_NR,
.cons = msm_hsl_console,
};

static struct console msm_hsl_console = {
.name = "ttyHSL",
.write = msm_hsl_console_write,
.device = uart_console_device,
.setup = msm_hsl_console_setup,
.flags = CON_PRINTBUFFER,
.index = -1,
.data = &msm_hsl_uart_driver,
};

uart_console_write(port, s, count, msm_hsl_console_putchar);
msm_hsl_console_putchar(struct uart_port *port, int ch)
msm_hsl_write(port, ch, regmap[vid][UARTDM_TF]);

打开CMDLINE中的 ” earlyprink “ 参数的更多相关文章

  1. GBK 编码时 url 中带中文参数的问题

    项目中遇到的 GBK 编码问题,记录如下. 将代码精简为: <!DOCTYPE HTML> <html> <meta charset="gb2312" ...

  2. struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式

    本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...

  3. 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置

    我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...

  4. Apache中 RewriteRule 规则参数介绍

    Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...

  5. Android 网页打开app(或者打开指定页面)并且接收参数

    网页打开app 现实描述场景: 1.短信通知中通知内容,比如信息中一个咨询详情,流程步骤,信息中的地址打开的是一个网页,网页打开就指定app或者app中的指定页面 html代码 <html> ...

  6. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...

  7. htaccess文件中RewriteRule 规则参数介绍

    .htaccess 文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d Rew ...

  8. 在ArcGIS Desktop中进行三参数或七参数精确投影转换

    转自 在ArcGIS Desktop中进行三参数或七参数精确投影转换     ArcGIS中定义的投影转换方法,在对数据的空间信息要求较高的工程中往往不能适用,有比较明显的偏差.在项目的前期数据准备工 ...

  9. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

随机推荐

  1. 洛谷 P3258 [JLOI2014]松鼠的新家(树链剖分)

    题目描述松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在”树“上. 松鼠想邀请小熊维尼前来 ...

  2. C#多线程Thread.Join()的详解

    class TestThread { private static void FirstThreadFun() { ; i < ; i++) { Console.WriteLine(Thread ...

  3. openfire3.10.0 在mac10.10.3,jdk1.8中,安装后无法打开的解决方案

    先展示一下错误 解决方案很简单,卸载jdk,openfire之后,重新安装就行 步骤如下: (1)卸载jdk1.8 终端依次执行下面的命令 sudo rm -fr /Library/Internet\ ...

  4. 认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

    (一)认识JQuery  JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法    JQuery的主旨:以更少的代码,实现更多的功能 (二)JQue ...

  5. hdu 5480(前缀和)

    题意:如果一个点,则这点的横竖皆被占领,询问矩阵是否全被占领. 思路:将被占领的x,y标记为1,用x表示1 - i的和 如果x轴的差为 x2 - x1 + 1则表示全被占领,y轴同理 #include ...

  6. [BZOJ]3527 力(ZJOI2014)

    第一次背出FFT模板,在此mark一道裸题. Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i ...

  7. poj 2886 线段树+反素数

    Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12744   Acc ...

  8. uva 10118(DP)

    UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己 ...

  9. Mysql参数汇总

    凡是需要耐心. 参数为静态参数则黄色字体标记. 参数为全局变量则粗体标记. 参数为全局.会话变量则不标记. auto_increment_increment auto_increment_offset ...

  10. Mysql--执行计划 Explain

    0 介绍 0.1 是什么 使用 Explain 关键字可以模拟优化器执行 Sql 查询语句,从而知道 Mysql 是如何处理 Sql 的. 0.2 用法 Explain + Sql语句 0.3 执行计 ...