高云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

手机也能跑大模型?QNN框架实战:从零部署LLaMA-7B到Android的完整避坑指南

手机也能跑大模型?QNN框架实战:从零部署LLaMA-7B到Android的完整避坑指南 最近在跟几个做移动端AI应用的朋友聊天,大家普遍有个痛点:现在大模型这么火,但一提到在手机上本地运行,第一反应就是“不可能”——内存不够、算力太弱、延迟太高。这让我想起几年前做移动端图像识别,也是从“这玩意儿能在手机上跑?”的质疑开始的。现在,随着端侧推理框架的成熟,特别是像QNN(Qualcomm Neural Network SDK)这类专门为移动和边缘设备优化的工具链出现,让手机本地运行一个7B甚至13B参数的大语言模型,已经从“技术演示”变成了“工程可实现”的目标。 这篇文章,我想从一个移动端开发者的实际视角出发,抛开那些泛泛而谈的API介绍,聚焦于一个核心问题:如何把一个像LLaMA-7B这样的“大家伙”,真正塞进一部普通的Android手机里,并且让它能流畅地跟你对话? 这个过程远不止是调用几个接口那么简单,你会遇到模型裁剪、内存峰值管理、Vulkan加速适配、量化精度权衡等一系列具体而微的“坑”。我会结合自己最近一次将LLaMA-7B-INT8模型部署到小米13上的完整实战记录,

知网vs维普AIGC检测:同一篇论文结果差多少?

知网vs维普AIGC检测:同一篇论文结果差多少?

同一篇论文,知网检测15%,维普检测42%。 我当时看到结果直接懵了。差了快30个百分点,这到底该信哪个? 后来我把这篇论文又测了万方,结果是28%。三个平台,三个完全不同的数字。 这篇文章就来聊聊知网和维普AIGC检测到底差在哪,帮你搞清楚应该怎么选、怎么应对。 实测数据:同一篇论文差多少? 我拿我们实验室5篇论文做了测试,结果如下: 论文知网AI率维普AI率差值论文A15%42%+27%论文B8%31%+23%论文C22%38%+16%论文D35%52%+17%论文E12%29%+17% 平均下来,维普比知网高了约20个百分点。 这个差距不是个例。我在网上看到有同学反馈知网0%、维普46%的极端案例。也有反过来的情况,但总体上维普检测结果偏高的情况更常见。 为什么差这么多? 两个平台的检测算法完全不同。 知网的检测逻辑 知网用的是"知识增强AIGC检测技术",从语言模式和语义逻辑两条链路检测。 简单说,知网重点看的是你的逻辑惯性。

5分钟掌握Whisper语音转文字:零门槛终极使用手册

5分钟掌握Whisper语音转文字:零门槛终极使用手册 【免费下载链接】whisper-base.en 项目地址: https://ai.gitcode.com/hf_mirrors/openai/whisper-base.en 还在为语音内容整理而头疼吗?OpenAI Whisper语音识别工具让语音转文字变得前所未有的简单。这款免费高效的本地语音识别方案专为普通用户设计,无需任何编程基础即可快速上手,支持中文、英文等99种语言智能识别,彻底改变你的工作和学习方式。 🎙️ 为什么选择Whisper语音转文字? 极致简单:命令行操作,一键完成语音识别 完全免费:开源工具,没有任何使用费用 隐私安全:本地处理,数据不出设备 多语言支持:智能识别99种语言,自动翻译功能 🚀 三步快速上手指南 第一步:环境准备 确保电脑安装Python 3.8以上版本,这是运行Whisper的基础要求。Windows、Mac、Linux系统都能完美支持。 第二步:获取模型文件 通过以下命令获取完整的Whisper模型: git