OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8744|回复: 10

[ALTERA] 使用串口实现FPGA的远程更新(附教程)——基于新起点开发板

[复制链接]

9

主题

202

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
839
金钱
839
注册时间
2018-7-29
在线时间
128 小时
发表于 2020-7-10 16:49:23 | 显示全部楼层 |阅读模式
本帖最后由 SunML 于 2020-11-25 09:21 编辑

        在使用开发板做FPGA开发时,常见的方式是使用JTAG下载程序。但是在实际的项目中,产品交付后,很难再使用JTAG接口进行固件升级。原因有很多,如产品结构不方便拆卸,或者产品装配在不易到达的位置等。

此时需要使用FPGA的远程更新功能,使用产品自带的通讯接口(如串口,以太网接口等)传输待更新的固件,将固件写入EPCS等非易失性存储器,最后触发FPGA使用新的镜像文件进行重配置。

ALETRA Cyclone IV 系列FPGA中包含了一个 ”远程系统升级电路”,我们可以利用它实现FPGA的远程更新。这里以正点原子“开拓者/新起点”FPGA开发板为例,使用串口来演示FPGA的远程更新功能。

程序总共分成三个部分,如下:

        0_RSU_Factory:               
                远程更新过程中的出厂镜像,基于新起点开发板,出厂程序运行过程中开发板左侧两个LED会循环闪烁,作为指示灯。
                出厂镜像在执行重配置时,关闭了用户程序的Watchdog使能。

        1_application_image_project:        
                应用镜像工程,有3个指示灯,LED[2:0]同时快速闪烁,指示当前处于用户模式;(该镜像为原始应用镜像,直接和出厂程序一起固化到EPCS中)
                该模式下3个LED同时闪烁持续7秒后,触发重配置,跳转到出厂模式;
        
        2_RSU_Application:
                需要更新进去的应用镜像,实现了流水灯的功能。


其中最关键的模块为0_RSU_Factory,其顶层模块原理图如下所示:


远程更新的操作步骤如下:

                一、用 0_RSU_Factory 和 1_application_image_project 的 sof 文件导出一个JIC文件,烧录到EPCS中,其存储映射如下所示:

                        IMAGE                                BLOCK                START ADDRESS                END ADDRESS

                        0_RSU_Factory                         Page_0                0x00000000                0x0003FFFF (0x0001ED17)
                        1_application_image_project                 Page_1                0x00040000                0x001FFFFF (0x0005A317)


                二、开发板重新上电,则出厂程序会在上电后直接执行重配置。
                        重配置后的现象是:LED[2:0]同时快速闪烁,指示当前处于用户模式;

                三、3个LED同时闪烁持续7秒后,触发重配置,跳转到出厂模式。
                        跳转到出厂模式后的现象是:开发板左侧两个LED会循环闪烁,指示当前处于出厂模式;
               
                四、出厂模式下,通过串口助手将 2_RSU_Application 的镜像文件发送给开发板。
                        新的应用镜像接收完成后,会自动触发重配置,再次进入用户模式,开发板上显示四个LED的流水灯效果,表示远程更新成功;
               
                五、开发板再次重新上电,显示的是流水灯效果,证明新的应用镜像成功写入EPCS。





顶层模块原理图.png

Altera FPGA 远程更新(作者:大磊).pdf

1.74 MB, 下载次数: 106

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2015-1-10
在线时间
69 小时
发表于 2020-7-10 17:29:51 | 显示全部楼层
能远程升级倒是个很好的主意,mark一下,再赞一个
回复 支持 反对

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2020-7-10 17:51:49 | 显示全部楼层
更新的速度快吗?波特率115200,JIC 2MB左右,需要多久。
回复 支持 反对

使用道具 举报

9

主题

202

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
839
金钱
839
注册时间
2018-7-29
在线时间
128 小时
 楼主| 发表于 2020-7-10 18:06:08 | 显示全部楼层
QinQZ 发表于 2020-7-10 17:51
更新的速度快吗?波特率115200,JIC 2MB左右,需要多久。

串口通信波特率为9600,发送的镜像会首先缓存到FIFO中,然后从FIFO中读出,并通过ASMI IP核写入EPCS。

                设计应全力避免FIFO溢出,否则更新EPCS失败,一旦FIFO溢出,则最右侧LED会点亮。

                避免FIFO溢出可以通过增加FIFO的深度,或者降低串口通信的波特率来实现,但是波特率降低后文件下发的速度下降,更新时间增加。
回复 支持 反对

使用道具 举报

9

主题

202

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
839
金钱
839
注册时间
2018-7-29
在线时间
128 小时
 楼主| 发表于 2020-7-10 18:07:01 | 显示全部楼层
QinQZ 发表于 2020-7-10 17:51
更新的速度快吗?波特率115200,JIC 2MB左右,需要多久。

                但是由于转换得到的rpd文件的大小与EPCS大小一致,即有效数据后面跟着大量的0xFF,如果全部写入EPCS比较花时间;

                所以可以在文件结尾删除无意义的0xFF,只保留36个字节的0xFF,从而减小文件尺寸
回复 支持 反对

使用道具 举报

9

主题

202

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
839
金钱
839
注册时间
2018-7-29
在线时间
128 小时
 楼主| 发表于 2020-7-10 18:08:18 | 显示全部楼层
QinQZ 发表于 2020-7-10 17:51
更新的速度快吗?波特率115200,JIC 2MB左右,需要多久。

直接拿文件大小除以波特率就能算出来时间,流水灯的设计更新用了100s左右
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
发表于 2020-8-12 16:45:18 | 显示全部楼层
非常好,一直很看好正点原子
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
发表于 2020-8-12 16:47:22 | 显示全部楼层
可以提供源码吗,谢谢 QQ 290296465
回复 支持 反对

使用道具 举报

9

主题

202

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
839
金钱
839
注册时间
2018-7-29
在线时间
128 小时
 楼主| 发表于 2020-11-25 09:22:03 | 显示全部楼层
文档已上传
回复 支持 反对

使用道具 举报

6

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2017-8-9
在线时间
77 小时
发表于 2020-11-26 11:30:45 | 显示全部楼层
学习下。
回复 支持 反对

使用道具 举报

7

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2015-1-10
在线时间
69 小时
发表于 2021-7-16 10:27:06 | 显示全部楼层
楼主可不可以公开一下代码,学习一下,最近在做这一块,有点搞不定,先谢谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 20:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表