基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

基于FPGA的日志及参数文件存储设计

功能需求

  • 支持设备运行日志记录(设备至少使用10年);
  • 支持上位机读/写/擦除 Flash;
  • 支持本地信息查询;
  • 支持多台设备参数管理

系统设计

  • Flash型号:W25Q256JVEIQ
  • 总线:SPI
  • 时钟速率:25MHz

日志功能

  • 上电默认不开启日志功能(防止上一次运行日志被擦除)
  • 单条日志长度为256字节,每分钟记录一次
  • 使用两个 32KB 空间进行存储,每存满一个 32KB,擦除另一个 32KB 继续记录(双缓存设计可以保证在擦除过程断电,也有日志可查)
  • 日志内容:回复帧信息(包含运行时间)
  • 寿命计算(按照10年寿命来设计):
    • 擦除一次记录日志条数:64K(B)/256(B) = 256(条)
    • 若频率为 1分钟,则擦除一次可以记录 256 分钟
    • 连续擦除10万次可记录时长:100000*256(分钟)/60(分钟)/24(小时)/365(天) = 48.7 (年)

上位机参数存储

上位机读取 flash 模块状态,当模块为空闲状态时可进行 flash 的读/写/擦除操作。

本地参数查询

上位机下发信息查询帧,设备发送信息回复帧。

多台设备参数管理

设备通过信息查询帧自动进行设备ID分配,上位机可指定其中一台或者广播方式进行参数管理。

在这里插入图片描述

系统框图

在这里插入图片描述

通信协议定义

见协议文档。

Flash芯片

引脚定义

在这里插入图片描述

Flash相关指令

Read Manufacturer / Device ID (90h)
在这里插入图片描述


在这里插入图片描述
Write Enable (06h)

每次进行页编程、擦除、写状态寄存器都要先执行该指令。

在这里插入图片描述
Sector Erase (20h)

1 Sector = 4KB

在这里插入图片描述
32KB Block Erase (52h)
在这里插入图片描述
64KB Block Erase (D8h)
在这里插入图片描述
Page Program (02h)

1 Page = 256B

在这里插入图片描述
Read Data (03h)

Read Status Register
在这里插入图片描述
Write Status Register
在这里插入图片描述

状态寄存器定义

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

AC参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试结果

日志功能

在这里插入图片描述

上位机读/写/擦除 Flash

在这里插入图片描述

本地信息查询及多台设备参数管理

在这里插入图片描述

调试心得

该芯片每次指令操作开始都要拉低片选信号,单条指令完成后需拉高片选信号,否则 Flash无法正常工作。

Read more

手把手教你完成libwebkit2gtk-4.1-0安装配置(Ubuntu 22.04)

从零搞定 libwebkit2gtk-4.1-0 安装:Ubuntu 22.04 下的实战避坑指南 你有没有遇到过这样的场景?写好了一个基于 GTK 4 的本地 Web 应用,信心满满地在 Ubuntu 22.04 上运行,结果终端弹出一行红色错误: error while loading shared libraries: libwebkit2gtk-4.1.so.0: cannot open shared object file 别急——这不是你的代码出了问题,而是系统里少了关键运行时库: libwebkit2gtk-4.1-0 。 这个库是现代 Linux 桌面开发中“嵌入网页”的核心技术组件。它让你能在原生应用里无缝展示 HTML 内容,比如 Markdown

前端拖拽排序实现详解:从原理到实践 - 附完整代码

前端拖拽排序实现详解:从原理到实践 - 附完整代码

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 👍《Spring Security》专栏中我们将逐步深入Spring Security的各个

前端 + agent 开发学习路线

背景:团队启动Agent项目,从零开始学习工程化AI开发 感谢ai老师写的学习指南。存档! 引言:从困惑到清晰 最近团队要启动Agent项目,我第一次接触这个概念时,只停留在“接入大模型API+优化Prompt”的浅层理解。经过大量学习和实践探索,我才发现工程化Agent开发是系统化的架构设计,而不仅仅是API调用。 这篇文章记录我从前端视角出发,探索Agent工程化开发的学习路径和实践经验。如果你也是前端/全栈开发者,想要在AI时代找到自己的定位,这篇指南应该能帮到你。 一、认知重塑:什么是工程化Agent? 1.1 我的错误认知 vs 现实 我原来的理解: Agent = 大模型API + Prompt优化 实际上的工程化Agent: Agent = 系统架构 + 可控执行 + 安全审查 + 领域适配 + 可观测性 1.2 Agent的分层架构(医疗场景示例) 你的主战场 任务分解器 工具路由器 记忆管理器 状态监控器

BK7258 x LiveKit WebRTC :从 0 到 1 的端侧适配

BK7258 x LiveKit WebRTC :从 0 到 1 的端侧适配

> 面向对象:做 AI 硬件、语音对讲、智能终端的开发者 > 关键词:BK7258、LiveKit、WebRTC、实时语音、MCP、设备控制 一、为什么是 LiveKit? 在实时语音 AI 场景里,很多团队一开始只关注“音频能不能传”,但真正落地会遇到更多问题:连接稳定性、会话管理、设备控制、Agent 协同、扩展能力等。 LiveKit 的价值就在于:它不仅是传输层,更是一个面向实时 AI Agent 的平台能力层,统一了房间、参与者、媒体轨道和数据通道能力。 官方定位可以概括为:构建 voice / video / physical AI agents 的平台。   二、BK7258