UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor lim
Visitor
280 次查看
注册日期: ‎10-09-2018

ZC706启动linux时出现类似死机的情况

我使用petalinux2018.2,生成的镜像文件和启动文件等如图:image.jpg

用qemu尝试跑起来如图:petalinux_qemu_kernel.jpg

再使用sdk把fsbl.elf/system.bit/u-boot.elf生成了bin文件,最后把bin文件和image.ub文件放入SD卡中,把开发板设置成SD卡启动。结果如图所示:arm_linux_error.jpg

0 项奖励
7 条回复
Visitor lim
Visitor
265 次查看
注册日期: ‎10-09-2018

回复: ZC706启动linux时出现类似死机的情况

我再次使用官方的ZC706 BSP包就没有出现问题。应该是自己生成的硬件信息有问题。

0 项奖励
Xilinx Employee
Xilinx Employee
223 次查看
注册日期: ‎09-14-2018

回复: ZC706启动linux时出现类似死机的情况

可以贴上完整的打印信息,看下是停在了启动的哪个阶段

0 项奖励
Moderator
Moderator
198 次查看
注册日期: ‎05-23-2018

回复: ZC706启动linux时出现类似死机的情况

Hi, @lim

 

一般在这种情况下不是出现了死机,而是UART设置错误导致console不再打印信息。你的UART是怎么设置的呢?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Visitor lim
Visitor
175 次查看
注册日期: ‎10-09-2018

回复: ZC706启动linux时出现类似死机的情况

最后一张图就是完整的最后打印停下来的位置。

0 项奖励
Xilinx Employee
Xilinx Employee
168 次查看
注册日期: ‎09-14-2018

回复: ZC706启动linux时出现类似死机的情况

@lim

 

hi,建议检查下是不是默认console切换到另外一个串口了。

PS: 从这个截图很难看出在那个阶段了。是否linux已经启动还是在Uboot阶段?

 

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

0 项奖励
Visitor lim
Visitor
135 次查看
注册日期: ‎10-09-2018

回复: ZC706启动linux时出现类似死机的情况

    这个已经到了kernel启动阶段,打印了 Starting kernel ...

    因为我使用官网上的 zc706 bsp 包生成 petalinux project里的 image.ub 启动时是正常的。所有我选择仿照官网提供的例程zc706_bist工程,尝试找出问题,我也先试过了zc706_bist ,使用 vivado2018.2 生成 hw_platform_0 用于 petalinux2018.2 生成的image.ub 启动时也是正常的。

    因为 petalinux 是使用hdf文件生成工程的,所以我首先对比了hdf的文件,我发现官网的hdf文件比我自己工程的文件要大很多,右边的就是官网的:hdffile_compare.jpg

    我使用了SDK打开hdf文件进行比较,但是这种方式比较简略,只能比较使用了哪些资源和对应的bsp版本:

hdffileSDKcompare.jpg

    当我把这两个hdf文件在SDK中打开的弄成一样时,我导入petalinux生成image.ub试了一下,但是还是同样的效果,于是我又仔细比较了vivado中block设计的区别发现只有串口参考时钟有一个不一样的地方,我始终没办法配置成一样的,首先是我自己的配置截图:

    串口参数配置:

vivado2018.2uart1configure.jpg

    串口引脚相关配置:

vivado2018.2uart1select.jpg

    串口参考时钟选择(默认):

vivado2018.2uart1refclk.jpg

     然后是官网工程 zc706_bist 里面的配置:

     串口参数配置:

bsp2018.2uart1configure.jpg

    串口引脚配置:

bsp2018.2uart1select.jpg

    串口参考时钟配置:

bsp2018.2uart1refclk.jpg

     这一处的不一样,我个人觉得从理论上讲应该不会出问题,但是也找不出其他原因,于是我选择把 SDK 使用 hdf生成的所有文件都对比一次,这次对比让我了解更深入一点。我我发现主要是 ps7_init.h 和 ps7_init.tcl 两个文件能体现现象的不一样,其他的都是重复的。这是两个不一样的地方:

    ps7_init.h 使用 beyondcompare对比的情况:

hw_platform_compare_ps7init.h.jpg

    这里就是在 vivado block设计中自动配置不一样的地方。

    接下来是 ps7_init.tcl文件在beyondcompare中对比的情况:

hw_platform_compare_ps7_init.tcl.jpg

    其中三个段的内容是相通的,有差别的只有两个地方,这里是对内核寄存器配置的地方,所以我查了一下相应的配置差别,发现都是和合理的,其中首先是clock配置在 uart 参考时钟配置的不一样:

clock init compare.jpg

    这里的 0xF8000154 的配置如图:

hw_uartclkconfigure.jpg

    所以这里就是配置我在vivado中不一样的10分频和20分频不一样的地方。

    然后是 0xE0001018 的配置不一样(左边是我自己的工程,右边是zc706_bist的):

uart 1 bandrate config compare.jpg

    该地址的定义如下:

hw_uart1bandrateconfigure.jpg

    可以看出这里的波特率分频是两倍关系,我自己工程的是100MHz,官网zc706_bist的是50MHz,分频我就是其两倍,理论上是对的,也看不出什么问题。但是我已经对比了所有的文件也没找到问题,所以我只能把这里也改成一样的再试一次。我尝试去改vivado block中的uart参考时钟配置由100MHz改为50MHz。原先是默认的50MHz,我只能设置成手动模式去改,改成了50MHz,如图:

Override clock configure.jpg

    但是这里出现了一个我无法理解的现象,按理说我把这里的时钟配置改了,我的block中的uart1的波特率设置没有改变,还是115200,所以在 ps7_init.tcl 配置的波特率分频应该也是对应的减少才对,但是其波特率分频的配置却没有改变,而只是把 clock init 中的 uart 参考时钟变成了 50MHz 的20分频,如图:

override clock compare.jpg

    其中,三段相同,这里多出来的对看门狗的配置和默认配置是一样的,应该可以不管。

    不一样的是:

override clock uart bandrate configure.jpg

     uart1 波特率的配置还是两倍关系,应该就是会出错的,但是除了手动配置还能怎么修改呢?,这种情况是不是本身就存在问题,我想到一个歪主意,我把 block 里面的波特率设置成两倍即115200 X 2,从而使得这里的波特率强制配置一样,但是结果还是一样的现象,启动时串口打印还是会停在那里,,,

 

    在 petalinux 中我使用 qemu 仿真 kernel 时如图:

qemulinuxkernel.jpg

 

    是完全可以启动的,但是qemu无法调用 ps uart1 的硬件,所以我断定问题出在串口的时钟或是波特率得配置上,但是我把 hdf文件生成的所有文件弄成一样还是没有办法实现效果,大家能不能帮我看看,我是不是哪里想的不对或是搞错方向了?

 

    现在的问题主要还是两个:

    1.官网例程是怎么自动配置 uart 参考时钟为 50MHz的?

    2.在手动设置了 uart 参考时钟为50MHz后,为什么 ps7_init.tcl 里的波特率设置的寄存器配置没有变化,而只变化了参考时钟配置?

 

0 项奖励
Xilinx Employee
Xilinx Employee
124 次查看
注册日期: ‎09-14-2018

回复: ZC706启动linux时出现类似死机的情况

如果是串口波特率出了问题,照理不应该是没有输出,而是输出乱码

0 项奖励