【原创】CycloneV_HPS从QSPI Flash启动实现过程_Detective_ALong_新浪博客

处理器:CycloneV_HPS(Cortex-A9)
BootRom:25Q128A(micron 128M QSPI Flash)
软件:altera_SOC_EDS_13.1

1、生成preloader-mkpimage.bin:
在bsp-editor中将BootRom选为QSPI Flash,关闭看门狗。
通过quartus_hps将preloader-mkpimage.bin烧写到Flash的0地址,将应用程序烧写到0x60000,启动后串口打印出如下错误信息:
【原创】CycloneV_HPS从QSPI <wbr>Flash启动实现过程
观察后发现,CRC Result calculated值每次开机自检都有不同。

2、CRC错误分析:
错误发生在preloader将应用程序从flash搬运到DDR3后的校验,具体代码详见
uboot-socfpga\common\spl\spl.c
可能的原因:应用程序带有64bytes的信息头域,如果校验的地址范围有误,校验到了未定义的地址空间会发生上述错误。
测试:自己随便制作了一个大小为1byte的bin文件,加上64bytes头后下载到0x60000,启动未出现校验错误。
尝试将字节数扩大,发现当字节数为1040时,校验时对时错,由此现象推断出是硬件错误,很有可能发生在读QSPI的时序上。
在board_init代码中查找到设置QSPI时钟的段落,pll_config.h中将QSPI时钟对于系统时钟分频系数从3改为7。
CRC校验问题解决。

3、裸机程序二进制文件:
将EDS中example代码生成的bin文件烧写QSPI的0x60000地址,程序不能正常启动。
根据骏龙FAE Blues邮件指导,example代码没有start.s所以只能在调试状态下执行,无法实现preloader启动。
根据骏龙FAE harvey提供的裸机程序,实现了start.s、Makefile、u-boot-spl.lds文件,并实现了上电程序从QSPI启动串口。

遗留问题:若c代码中对于HPS2FPGA bridge进操作,脱机上电会出现错误,按下cold rst程序才会正常执行。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值