FPGA开发过程中经常需要用到远程系统更新(RSU)功能,通过网络将镜像文件下载到FLASH中,无需回收产品,就能修复产品错误和增强产品功能。本文介绍了intel官方提供的远程下载例程,使用tcl脚本通过system console实现远程下载的过程。
远程更新流程
- 生成初始化RSU镜像
- 生成应用程序镜像
- 切换镜像
- 远程烧写镜像
远程系统更新组件
intel s10器件远程更新组件如下图所示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1x4G5cl6-1680662022685)(./pic/sys.png)]](https://i-blog.csdnimg.cn/blog_migrate/7163ba1e628cbc5fce7fb1ea114a3891.png)
包括一下三部分:
- JTAG to Avalon Master Bridge
- Mailbox Client Intel FPGA IP
- SDM
生成镜像
生成初始化RSU镜像
File->Programming File Generator,选择map和rpd文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iamx0w6Q-1680662022686)(./pic/1.png)]](https://i-blog.csdnimg.cn/blog_migrate/f956a0e6b2e68f8ff8b318487608dfc7.png)
添加两个sof文件,一个是出厂sof文件,一个是应用程序sof文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLhUpxZI-1680662022687)(./pic/2.png)]](https://i-blog.csdnimg.cn/blog_migrate/26ee8434c967f1ddabcf7156f035f6d8.png)
FACTORY_IMAGE通过出厂sof文件生成,P1通过应用程序sof文件生成,当P1出问题时,上电启动后会自动导入FACTORY_IMAGE。通过quartus最多可添加7个应用程序镜像,通过远程烧写功能,可添加508个镜像。通过指令可以切换不同镜像。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YIlC0AQ-1680662022687)(./pic/3.png)]](https://i-blog.csdnimg.cn/blog_migrate/7a983c687281d5e636dd1d23c3d072f9.png)
生成三个文件,map文件存储各个部分首地址,在切换镜像和远程烧写镜像时要使用。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUrU1EoK-1680662022688)(./pic/4.png)]](https://i-blog.csdnimg.cn/blog_migrate/c0fafe48a3897a403914b0f8e588f52a.png)
map文件
BLOCK START ADDRESS END ADDRESS
BOOT_INFO 0x00000000 0x0010FFFF
FACTORY_IMAGE 0x00110000 0x0045FFFF (0x0041CFFF)
SPT0 0x00460000 0x00467FFF
SPT1 0x00468000 0x0046FFFF
CPB0 0x00470000 0x00477FFF
CPB1 0x00478000 0x0047FFFF
P1 0x00480000 0x006F0FFF
生成应用镜像
生成应用程序镜像时,只选择rpd文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vTXd0gBV-1680662022688)(./pic/5.png)]](https://i-blog.csdnimg.cn/blog_migrate/db9dfcbb6d4135e09c2c4eb376793fbc.png)
添加sof文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tu1ln1K1-1680662022689)(./pic/6.png)]](https://i-blog.csdnimg.cn/blog_migrate/4cb5b55deca06cf41072d6bacc228024.png)
配置镜像
打开system sconsole
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RiCIEieD-1680662022689)(./pic/console.png)]](https://i-blog.csdnimg.cn/blog_migrate/4708bf60fc3314cdc4982308a0bad70f.png)
TCL控制台
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-81IJGrOx-1680662022690)(./pic/tcl.png)]](https://i-blog.csdnimg.cn/blog_migrate/7b566a29b6904e593f24850206b9ec19.png)
运行TCL命令
在tcl控制台中运行
source rsu1.tcl
使用rsu_status命令验证当前镜像
rsu_status
当前镜像地址为0x00480000,运行P1,参照map文件。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBnkAsVn-1680662022690)(./pic/7.png)]](https://i-blog.csdnimg.cn/blog_migrate/36fa739366cc69133a0f10c3ccaf1613.png)
切换镜像
rsu_image_update 0x00480000
重新上电后,镜像又变回原来镜像。
添加应用镜像
烧写新镜像
往地址0x006F1000地址中添加文件output_file_jic.rpd,每次写1024个字节。0x006F1000在P1之后
program_flash app.rpd 0x006F1000 1024
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUdVz7Xt-1680662022690)(./pic/8.png)]](https://i-blog.csdnimg.cn/blog_migrate/e78a3b8978cf06ed210db18db88a71e0.png)
验证当前CPB0和CPB1
读CPB0中指向当前应用的地址,读地址0x00470020,该地址通过CPB0地址偏移20得到,参照map文件
qspi_read 0x00470020 1
读CPB0中指向添加应用的地址,读地址0x00470028,该地址通过CPB0地址偏移28得到,读取到0xffffffff后才可以写入新地址。
qspi_read 0x00470028 1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRdCp3rv-1680662022690)(./pic/9.png)]](https://i-blog.csdnimg.cn/blog_migrate/97a1e034714836204948def724d58620.png)
读CPB1中指向当前应用的地址
qspi_read 0x00478020 1
读CPB1中指向添加应用的地址
qspi_read 0x00478028 1

修改当前CPB0和CPB1
将烧写应用程序地址写入CPB0和CPB1
qspi_write_one_word 0x00470028 0x006F1000
qspi_write_one_word 0x00478028 0x006F1000
验证写入内容
写入正常。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nOWNtRZa-1680662022691)(./pic/11.png)]](https://i-blog.csdnimg.cn/blog_migrate/6ab8489018f85f80deea6782fd7a671d.png)
参考文档
Intel Stratix 10 配置用户指南 和mailbox ip手册。
本文详细介绍了在FPGA开发中如何使用IntelStratix10器件的远程系统更新功能,通过TCL脚本和SystemConsole进行初始化RSU镜像及应用程序镜像的生成、切换和远程烧写。过程包括生成初始化和应用镜像、使用rsu_status验证、通过qspi_read和qspi_write_one_word命令更新和验证CPB0和CPB1中的地址。
4126

被折叠的 条评论
为什么被折叠?



