高云FPGA – 远程升级原理

目录
1.1 简介
1.2 高云fpga升级原理
1.3 比特流加载测试
1.4 多bit流启动功能实现远程升级
1.5 逻辑SPI读写flash

1.1 简介
在嵌入式设备远程维护的背景下,实现FPGA固件的安全、可靠升级成为关键需求。在近期项目中,我们成功实施了高云FPGA的远程升级方案。本文旨在梳理和分享其核心的升级原理,希望能为有类似需求的开发者提供一份实用的参考。
本文章主要介绍以下三方面内容,高云fpga升级原理,比特流加载测试,逻辑SPI读写flash。

1.2 高云fpga升级原理

在这里插入图片描述

上图是高云fpga升级流程示意图。
上图展示了高云FPGA的远程升级流程。该方案支持多比特流启动,系统可从两个用户比特流(Multiboot Bitstream 1 和 2)中选择一个运行。其核心优势在于安全冗余机制:当任一用户比特流加载或运行失败时,FPGA将自动回退至绝对可靠的“黄金比特流”,确保设备始终能恢复至可工作的基础状态。

1.3 比特流加载测试
根据高云fpga升级流程。我可以做一个最简单的测试,就是通过高云软件将Multoboot_Bitstream1下载到flash的0地址,将Golden Bitstream下载到flash的Golden_Address,这样fpga上电会运行Multoboot_Bitstream1。当我人为破坏掉Multoboot_Bitstream1(或者擦除掉Multoboot_Bitstream1),再次上电就会发现fpga会运行Golden Bitstream,通过这种方式可以验证高云fpga的bit流加载功能。例如我的Multoboot_Bitstream1是update_led。Golden Bitstream的bit流是golden_led, Golden_Address为0X800000。

在这里插入图片描述


在这里插入图片描述

Goden Bitstream这里有一个坑,在高云fpga中,Golden Address的位置是有默认值的,在下载程序的这个位置可以读到Golden Address的地址 。

点击Read可以读到当前Golden Address的默认地址,这个地址的每一位只能把0写成1, 不能由1变成0。因此这个地址只能改的比默认值更大。fpga出厂时把这个值设置到了0X800000,的位置,(这个地址刚好就是8M的flash), 因此使用8M的flash就将golden Bitstream下载到Golden_Address这个位置,我也是将8M flash换成16M的才测试成功。

在这里插入图片描述


1.4 多bit流启动功能实现远程升级
由于我使用的spi flash是8M, 无法使用golden Bitstream。这种情况下也可以使用高云fpga 的多bit流启动功能实现升级的功能。
根据高云fpga的升级原理,可以将Multoboot_Bitstream1作为稳定的bit流,在Multoboot_Bitstream1中启动Multoboot_Bitstream2。这种情况需要在Multoboot_Bitstream1中配置Multoboot_Bitstream2的加载地址。并且将Multoboot_Bitstream2下载到Multoboot_Bitstream1配置的地址的位置。
例如将Multoboot_Bitstream2的启动地址设置为0X400000。需要在Multoboot_Bitstream1的配置页面做如下配置后再次编译。

更改Multoboot_Bitstream1的地址配置后, 重新编译, 将Multoboot_Bitstream1下载至flash的0X000000地址(fpga上电默认从0X000000地址启动), 将将Multoboot_Bitstream2下载至0X400000。在Multoboot_Bitstream1中发送Reboot指令便可以跳转到Multoboot_Bitstream2。
那么什么是Reboot指令呢?
有2中方法
(1) 外部拉低Reconfig_n引脚。
(2) 通过jtag模拟master SPI时序发送重配置指令。

在这里插入图片描述


第二种模拟jtag方式有点复杂, 不过后来测试发现,Reconfig_n可以配置为输出,使用内部逻辑可以将 Reconfig_n拉低,这样做就简单多了。这样只需要在Multoboot_Bitstream1中拉低Reconfig_n就可以跳转到Multoboot_Bitstream2了。
但是使用这种方式做远程升级功能会有个问题,如果Multoboot_Bitstream2有问题的话fpga就会死机(如果没有golden_ Bitstream),不会自动跳转到Multoboot_Bitstream1。这样就需要在外部做开关或者由单片机控制选择是否Multoboot_Bitstream1启动后直接跳转到Multoboot_Bitstream2。

1.5 逻辑SPI读写flash
上一章验证了高云FPGA 的固件加载功能。这里介绍下高云fpga如何操作spi flash,在逻辑中调用flash的spi引脚,在Place & Route过程中会报如下错误。

在这里插入图片描述


这是因为程序复用了fpga芯片的专用功能引脚,需要在高云软件中配置复用这些引脚功能。fpga即可通过逻辑操作flash。

在这里插入图片描述


在这里插入图片描述


此后,系统便可基于已建立的用户协议和SPI通信接口,对Flash中的比特流进行更新,从而实现固件升级。

Read more

AirSim无人机仿真环境完整部署实战教程

AirSim无人机仿真环境完整部署实战教程 【免费下载链接】AirSimmicrosoft/AirSim: 一个基于 Unreal Engine 的无人机仿真平台,支持多平台、多无人机仿真和虚拟现实,适合用于实现无人机仿真和应用。 项目地址: https://gitcode.com/gh_mirrors/ai/AirSim 想要快速掌握无人机仿真技术但被复杂的配置流程困扰?本文将以手把手的方式,带你轻松完成AirSim环境的完整搭建。无论你是Windows、Linux还是macOS用户,都能找到最适合的配置方案。 为什么选择AirSim作为仿真平台? AirSim作为微软开源的无人机仿真平台,基于Unreal Engine构建,提供了高保真的物理仿真环境。与传统仿真工具相比,它具有以下独特优势: 核心价值亮点: * 真实物理引擎:精确模拟空气动力学和传感器数据 * 跨平台支持:一套代码适配多种操作系统 * 丰富API接口:支持Python、C++等多种编程语言 * 灵活可扩展:支持自定义无人机模型和传感器配置 部署前的环境检查要点 在开始部署前,需要确保你的

FPGA实现任意角度图像旋转_(图像旋转原理部分)

1.摘要         书接上回,介绍完Cordic原理部分FPGA实现任意角度图像旋转_(Cordic算法原理部分),和代码FPGA实现任意角度图像旋转_(Cordic算法代码部分),得到了至关重要的正余弦数值就可以进行旋转公式的计算了。        旋转没什么太多原理,看了很多资料感觉是描述的非常复杂, 其实本质就是实现两个公式,非整那么多花里胡哨的。所以我就按照我当时的编写思路记录一下。 2.图像旋转代码设计思路         2.1 旋转后的图像尺寸                 在一副图像经过旋转后,原本像素的位置肯定会发生变化,图像总的面积虽然保持不变但是各别位置的尺寸会改变,这个应该很好理解。比如一副100x100像素的图像进行旋转,我们只需要获得它的最长距离也就是对角线的尺寸作为旋转后的图像的显示范围。这样无论怎样旋转都能完整显示图像。                 如下代码,Pixel_X和Pixel_Y为旋转后图像的尺寸。ROW和COL为原始图像尺寸,利用勾股定理求出对角线的值即可。 reg [12:0] row_size ; reg [

LeRobot深度解析:5大核心模块构建下一代机器人学习系统

LeRobot深度解析:5大核心模块构建下一代机器人学习系统 【免费下载链接】lerobot🤗 LeRobot: State-of-the-art Machine Learning for Real-World Robotics in Pytorch 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 为什么LeRobot正在重新定义机器人开发范式 传统的机器人开发面临三大困境:算法与硬件脱节、数据格式不统一、部署流程复杂。LeRobot通过统一的数据-策略-执行闭环,将机器人学习从实验室推向真实世界应用。 LeRobot框架的核心优势在于其模块化设计,让开发者能够像搭积木一样构建复杂的机器人系统。无论你是想要实现一个简单的抓取任务,还是构建一个多机器人协同的复杂系统,LeRobot都提供了标准化的解决方案。 LeRobot架构全景:从多模态输入到精准控制 LeRobot采用先进的VLA(视觉-语言-动作)架构,实现从自然语言指令到机器人动作的端到端映射。整个系统由五个核心模块组成,每个模块都经过精心设计,确保系统

【国内电子数据取证厂商龙信科技】大疆无人机如何导出日志并解析

【国内电子数据取证厂商龙信科技】大疆无人机如何导出日志并解析

一、前言 我们在提取无人机数据的时候,可能会遇到由于无人机自身没有存储介质从而导致无法对无人机进行镜像解析数据的情况,今天给大家讲解下如何通过无人机自带的功能界面导出日志并解析。 二、对于没有存储介质的无人机设备如何导出日志 2.1安装软件 一般来说,无人机官方都有配套的查看工具。我们以大疆无人机为例,首先我们需要在计算机上安装大疆厂商官方发布的软件DJl Assistant2 For Mavic工具。 2.2连接设备 将无人机设备用usb线连接至电脑 打开DJl Assistant2 For Mavic工具 2.3导出日志 设备连接上后可以看见日志导出模块,可以将日志全选或者根据需要的时间段进行选择,勾选上点击下载到本地即可。 导出之后,即是dat文件 将dat日志导入到龙信物联网取证系统 LX-A501-V1进行解析。 打开龙信物联网取证系统 LX-A501-V1软件——新建案件 选择正确的设备类型、品牌 提取方式选择文件——添加文件选择我们导出的日志 开始取证——等待解析完成即可 解析完成后即可查看数据,包含设备基本