打开CMDLINE中的 ” earlyprink “ 参数
解决问题的过程中,好文章推荐,都保存在火狐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 “ 参数的更多相关文章
- GBK 编码时 url 中带中文参数的问题
项目中遇到的 GBK 编码问题,记录如下. 将代码精简为: <!DOCTYPE HTML> <html> <meta charset="gb2312" ...
- struts2:JSP页面及Action中获取HTTP参数(parameter)的几种方式
本文演示了JSP中获取HTTP参数的几种方式,还有action中获取HTTP参数的几种方式. 1. 创建JSP页面(testParam.jsp) <%@ page language=" ...
- 用WIN7系统IIS的提示:数据库连接出错,请检查Conn.asp文件中的数据库参数设置
我用科讯的从4.0开始,去年开始很少用科讯做新站了,今天拿来做一下,结果悲剧了,数据库路径老是不对,百度一番又一番的,,最后终于给度娘解决了.分享出来给遇到同样的问题的人. 用WIN7系统IIS的注意 ...
- Apache中 RewriteRule 规则参数介绍
Apache中 RewriteRule 规则参数介绍 摘要: Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求.它支持每个完整规则可以拥有不限数量 ...
- Android 网页打开app(或者打开指定页面)并且接收参数
网页打开app 现实描述场景: 1.短信通知中通知内容,比如信息中一个咨询详情,流程步骤,信息中的地址打开的是一个网页,网页打开就指定app或者app中的指定页面 html代码 <html> ...
- C#开发Unity游戏教程之Unity中方法的参数
C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...
- htaccess文件中RewriteRule 规则参数介绍
.htaccess 文件 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d Rew ...
- 在ArcGIS Desktop中进行三参数或七参数精确投影转换
转自 在ArcGIS Desktop中进行三参数或七参数精确投影转换 ArcGIS中定义的投影转换方法,在对数据的空间信息要求较高的工程中往往不能适用,有比较明显的偏差.在项目的前期数据准备工 ...
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
随机推荐
- 洛谷 P3258 [JLOI2014]松鼠的新家(树链剖分)
题目描述松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在”树“上. 松鼠想邀请小熊维尼前来 ...
- C#多线程Thread.Join()的详解
class TestThread { private static void FirstThreadFun() { ; i < ; i++) { Console.WriteLine(Thread ...
- openfire3.10.0 在mac10.10.3,jdk1.8中,安装后无法打开的解决方案
先展示一下错误 解决方案很简单,卸载jdk,openfire之后,重新安装就行 步骤如下: (1)卸载jdk1.8 终端依次执行下面的命令 sudo rm -fr /Library/Internet\ ...
- 认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法
(一)认识JQuery JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法 JQuery的主旨:以更少的代码,实现更多的功能 (二)JQue ...
- hdu 5480(前缀和)
题意:如果一个点,则这点的横竖皆被占领,询问矩阵是否全被占领. 思路:将被占领的x,y标记为1,用x表示1 - i的和 如果x轴的差为 x2 - x1 + 1则表示全被占领,y轴同理 #include ...
- [BZOJ]3527 力(ZJOI2014)
第一次背出FFT模板,在此mark一道裸题. Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i ...
- poj 2886 线段树+反素数
Who Gets the Most Candies? Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 12744 Acc ...
- uva 10118(DP)
UVA 10118 题意: 有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果, 如果篮子里有两个相同的糖果,那么就可以把这两个(一对)糖果放进自己 ...
- Mysql参数汇总
凡是需要耐心. 参数为静态参数则黄色字体标记. 参数为全局变量则粗体标记. 参数为全局.会话变量则不标记. auto_increment_increment auto_increment_offset ...
- Mysql--执行计划 Explain
0 介绍 0.1 是什么 使用 Explain 关键字可以模拟优化器执行 Sql 查询语句,从而知道 Mysql 是如何处理 Sql 的. 0.2 用法 Explain + Sql语句 0.3 执行计 ...