页次: 1
周末花了点时间尝试走了一遍板子的开发流程,目前移植的U-Boot已经能用了,但是NAND和网络暂时还不可用。NAND的主要问题是SPL下的驱动不完善(看来没人在Zynq上用NAND启动233),网络的主要问题是还没搞定EMIO的初始化(不过应该加载.bit文件后就能用了?不确定驱动对百兆网络支持如何)。后面要是解决了这些bug就把U-Boot发上来
这里记录一下中间遇到的一些问题。
入门的话,我觉得EBAZ4205 ZYNQ 7Z010 裸机程序NAND固化 JTAG调试方法这篇说得最好,按照他的做法一次就能过了。唯一想吐槽的是NAND,我从Winbond官网找到了对应的datasheet,结果一通设置之后竟然读不出NAND的信息。。反而是博客里面看起来不靠谱的这个设置是可用的,不知道是什么原因。
在熟悉了开发的流程之后,如果之后不需要从SDK生成和编译代码(比如说编译U-Boot),那么比较建议使用XSCT,这是Vivado自带的命令行下的工具,比SDK好用多了。执行的流程大概是这样的:
connect # 连接到开发板 target 2 # 指定调试目标为2,即双核中的#0核 # 初始化Zynq,如果需要初始化外设(例如SDRAM)则需要执行,如果只是要加载到OCM则可以不用执行 source xxx/ps7_init.tcl # 加载tcl文件,一般位于项目目录的yyy.sdk/zzz_wrapper/文件夹中 ps7_init # 执行初始化流程,可能需要一点时间 # 加载elf文件,由于elf文件自带执行地址,因此不需要指定载入地址,且会自动设置pc到开始位置 dow xxx.elf # 也可以加载普通文件(包括二进制文件),但是需要指定载入地址,且需要加上-data dow -data xxx.yyy addr1 rwr pc addr2 # 设置pc到开始位置 # 加载bitstream fpga -file xxx.bit # 加载bitstream,一般位于项目目录的yyy.sdk/zzz_wrapper/文件夹中 # 开始执行 con
以上方法试验过,可以启动U-Boot的SPL和本体(本体可以初始化后直接丢到SDRAM执行,挺方便的),但是自己编译的lwip Echo Server似乎用不了(理论上需要分别加载bitstream和elf),可以启动但提示初始化失败,不知道是什么原因。
另外顺便吐槽一下Create Boot Image功能,在指定elf文件的时候一切正常,但在指定bin文件的时候并不会计算大小,而是直接置零,按照定义置零表示XIP,因此在SD卡上就不能正常启动了 。还有就是建议使用最新的Vivado和Zynq TRM,否则对于Boot Header的定义会有出入。。
大神搞定了吗?我自己移植的uboot,不管是用的petalinux还是源码移植,网络都是不可用的,在设备树里找到了phyaddr并修改为0,但网络仍然不通,硬件bit文件是通过SDK生成镜像时一并添加进去生成了BOOT.BIN文件。还有在menuconfig里配置了saveenv选项,但是在uboot下使用此领命提示无此命令。
页次: 1