当前位置:   article > 正文

zynq Starting kernel 挂起的问题_zynq petalinux 启动卡在 starting kenel

zynq petalinux 启动卡在 starting kenel

问题描述:

在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";
};
  • 1
  • 2
  • 3
  • 4

以上设置必须添加在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;
	};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2、在使用指令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10
  • 1

生成system-top.dta过程中发现dtb文件并不会被更新,原因未知,必须使用如下指令才能正确更新设备树文件:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb -j10 -B
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/172374
推荐阅读
相关标签
  

闽ICP备14008679号