赞
踩
在linux系统镜像启动时,系统卡在starting kernel …
经过查找相关资料,这个是由于内核的控制台设置错误引起的
提示:这里填写问题的分析:
例如:Handler 发送消息有两种方式,分别是 Handler.obtainMessage()和 Handler.sendMessage(),其中 obtainMessage 方式当数据量过大时,由于 MessageQuene 大小也有限,所以当 message 处理不及时时,会造成先传的数据被覆盖,进而导致数据丢失。
提示:这里填写该问题的具体解决方案:
例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。
1、在system-top.dts文件中,在有如下设置
chosen {
bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait";
stdout-path = "serial0:115200n8";
};
以上设置必须添加在dts文件中,其中ttyPS0不能更改,ttyPS0是内核启动过程中使用终端标示,由于我自己使用的是ps端的UART1,而UART1被系统自动设置别名为serial8,需要手动讲UART1的命令别名改为serial0。
aliases {
ethernet0 = &gem0;
i2c0 = &i2c0;
i2c1 = &i2c1;
serial8 = &axi_uart16550_0;
serial1 = &axi_uart16550_2;
serial2 = &axi_uart16550_3;
serial3 = &axi_uart16550_4;
serial4 = &axi_uart16550_5;
serial5 = &axi_uart16550_6;
serial6 = &axi_uart16550_7;
serial7 = &axi_uart16550_1;
serial0 = &uart1;
spi0 = &qspi;
};
2、在使用指令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10
生成system-top.dta过程中发现dtb文件并不会被更新,原因未知,必须使用如下指令才能正确更新设备树文件:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10 -B
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。