{
"docs": {
"riscv": {
"label": "// risc-v",
"heading": "RISC-V 仿真 (ESP32-C3)",
"lead": "ESP32-C3、XIAO ESP32-C3 和 C3 SuperMini 开发板运行在 RISC-V RV32IMC 架构上,主频 160 MHz。Velxio 通过与 Xtensa ESP32 系列相同的基于 QEMU 的后端来仿真它们,使用 libqemu-riscv32 和 esp32c3-picsimlab 机器目标。仓库中有一个独立的 TypeScript ISA 实现,用于单元测试 RV32IMC 指令解码,但它不是生产仿真路径。",
"boardsHeading": "支持的开发板",
"boardEsp32C3": "ESP32-C3 DevKit",
"boardXiaoC3": "Seeed XIAO ESP32-C3",
"boardC3Super": "ESP32-C3 SuperMini",
"altEsp32C3": "ESP32-C3 DevKit",
"altXiaoC3": "Seeed XIAO ESP32-C3",
"altC3Super": "ESP32-C3 SuperMini",
"thBoard": "开发板",
"thCpu": "CPU",
"thFlash": "闪存",
"thRam": "RAM",
"boardEsp32C3Name": "ESP32-C3",
"boardXiaoC3Name": "XIAO ESP32-C3",
"boardC3SuperName": "C3 SuperMini",
"cpuValue": "RV32IMC @ 160 MHz",
"flashValue": "4 MB",
"ramValue": "384 KB DRAM",
"memoryHeading": "内存映射",
"thRegion": "区域",
"thBaseAddr": "基地址",
"thSize": "大小",
"thDescription": "描述",
"regIrom": "IROM (闪存)",
"regIromDesc": "存储在闪存中的代码",
"regDrom": "DROM (闪存只读)",
"regDromDesc": "闪存中的只读数据",
"regDram": "DRAM",
"regDramDesc": "数据 RAM (栈 + 堆)",
"regIram": "IRAM",
"regIramDesc": "指令 RAM (从闪存复制)",
"regUart": "UART0",
"regUartDesc": "串口 0 (GPIO 20/21)",
"regGpio": "GPIO",
"regGpioDesc": "GPIO 输出/输入/使能",
"size4mb": "4 MB",
"size384kb": "384 KB",
"size1kb": "1 KB",
"size512b": "512 B",
"isaHeading": "ISA 支持",
"isaRv32i": "RV32I: 完整的基础整数指令集 (ALU、加载/存储、分支、JAL/JALR)",
"isaRv32m": "RV32M: 乘除法: MUL, MULH, MULHSU, MULHU, DIV, DIVU, REM, REMU",
"isaRv32c": "RV32C: 16 位压缩指令: C.LI, C.ADDI, C.LUI, C.J, C.JAL, C.BEQZ, C.BNEZ, C.MV, C.ADD, C.JR, C.JALR, C.LW, C.SW, C.LWSP, C.SWSP, C.SLLI, C.ADDI4SPN",
"compileFlowHeading": "编译流程",
"compileFlowLead": "当您为 ESP32-C3 开发板点击 编译并运行 时:",
"compileStep1": "后端使用 arduino-cli 和 esp32:esp32 核心编译您的草图。",
"compileStep2": "生成的二进制文件是一个 合并的 4 MB 闪存映像:引导加载程序位于 0x1000,分区表位于 0x8000,应用程序位于 0x10000。",
"compileStep3": "前端的 esp32ImageParser.ts 在偏移量 0x10000 处找到应用程序,读取 24 字节的 ESP32 映像头 (魔术字 0xE9),并提取所有段 (加载地址 + 数据)。",
"compileStep4": "每个段被写入 Esp32C3Simulator 的正确内存区域 (IROM、DROM、DRAM 或 IRAM)。",
"compileStep5": "CPU 从映像头中指定的入口点开始执行。",
"gpioHeading": "GPIO 寄存器",
"thRegister": "寄存器",
"thOffset": "偏移量",
"regOutDesc": "当前输出值",
"regW1tsDesc": "置位位 (写 1 置位)",
"regW1tcDesc": "清零位 (写 1 清零)",
"regEnableDesc": "输出使能",
"regInDesc": "输入引脚状态",
"uart0Heading": "UART0",
"uart0Body": "向 0x60000000 (UART0 FIFO) 写入一个字节会触发 onSerialData 回调,该回调将字符流式传输到串口监视器。从同一地址读取会从接收 FIFO 中弹出 (由 Serial.read() 使用)。UART 状态寄存器始终返回 0 (TX 就绪)。",
"sourceFilesHeading": "关键源文件",
"thFile": "文件",
"thRole": "角色",
"fileRiscVCoreDesc": "RV32IMC 解释器 (step, MMIO 钩子)",
"fileEsp32C3SimDesc": "ESP32-C3 外设、内存映射、生命周期",
"fileImageParserDesc": "解析合并的闪存映像,提取段",
"fullDetailsCallout": "完整详情: 仓库中的 docs/RISCV_EMULATION.md。"
},
"setup": {
"label": "// 项目状态",
"heading": "项目状态",
"lead": "Velxio 中当前实现的所有功能的全面概述。",
"avrHeading": "AVR 仿真 (avr8js)",
"thFeature": "功能",
"thStatus": "状态",
"statWorking": "工作中",
"featAtmega": "ATmega328p CPU @ 16 MHz",
"featTimers": "Timer0, Timer1, Timer2",
"featUsart": "USART (串口)",
"featAdc": "ADC (analogRead)",
"featGpio": "完整 GPIO (PORTB / PORTC / PORTD)",
"feat60fps": "~60 FPS 循环 (267k 周期/帧)",
"featSpeed": "速度控制 (0.1x - 10x)",
"featPwm": "PWM 监控 (6 通道)",
"featInjection": "外部引脚注入 (输入)",
"compSysHeading": "组件系统 (48+)",
"featAst": "通过 AST 自动发现",
"statAstDetected": "检测到 48 个组件",
"featPicker": "带搜索的 ComponentPickerModal",
"featCategories": "9 个类别,带筛选器",
"featDynRender": "通用 DynamicComponent 渲染器",
"featDnd": "画布上的拖放",
"featRotation": "旋转 (90 度增量)",
"featPropsDialog": "属性对话框 (单击)",
"featPinOverlay": "引脚覆盖层 (可点击的青色圆点)",
"partsHeading": "交互式部件 (16 个已仿真)",
"thPart": "部件",
"thType": "类型",
"partLed": "LED",
"partRgb": "RGB LED",
"partLedBar": "LED 条形图 (10 个 LED)",
"part7Seg": "7 段数码管",
"partPushButton": "按钮",
"partPushButton6": "6mm 按钮",
"partSlide": "滑动开关",
"partDipSwitch": "8 位 DIP 开关",
"partPot": "电位器",
"partSlidePot": "滑动电位器",
"partPhoto": "光敏电阻",
"partJoystick": "模拟摇杆",
"partServo": "舵机",
"partBuzzer": "蜂鸣器",
"partLcd1602": "LCD 1602",
"partLcd2004": "LCD 2004",
"typeOutput": "输出",
"typeOutputDigPwm": "输出 (数字 + PWM)",
"typeInput": "输入",
"typeInputAdc": "输入 (ADC)",
"typeInputAdcDigital": "输入 (ADC + 数字)",
"typeInputOutput": "输入/输出",
"typeOutputAudio": "输出 (Web Audio)",
"typeOutputHd44780": "输出 (完整 HD44780)",
"wireHeading": "导线系统",
"featPinClick": "通过点击创建引脚到引脚连接",
"featPreview": "实时预览 (绿色虚线)",
"featOrtho": "正交布线 (无对角线)",
"featSegEdit": "线段编辑 (垂直拖动)",
"feat8Colors": "8 种颜色,按信号类型区分",
"featAutoUpdate": "移动组件时自动更新",
"featSnap": "网格吸附 (20 像素)",
"featSelDel": "导线选择和删除",
"examplesHeading": "示例项目 (8 个)",
"thExample": "示例",
"thDifficulty": "难度",
"exBlink": "闪烁 LED",
"exTraffic": "交通灯",
"exButton": "按钮控制",
"exFade": "LED 渐亮 (PWM)",
"exSerial": "串口 Hello World",
"exRgbColors": "RGB LED 颜色",
"exSimon": "西蒙游戏",
"exLcd": "LCD 20x4 显示屏",
"catBasics": "基础",
"catComm": "通信",
"catGames": "游戏",
"catDisplaysCat": "显示",
"diffBeginner": "初学者",
"diffIntermediate": "中级",
"diffAdvanced": "高级",
"troubleshootingHeading": "故障排除",
"tsModuleProblem": "Cannot find module '@wokwi/elements' / 'avr8js'",
"tsLedProblem": "LED 不闪烁",
"tsLedSolution": "先编译,然后点击运行。检查组件的属性对话框中的引脚分配。",
"tsNewCompProblem": "新组件未出现在选择器中",
"tsNewCompSolution": "请参阅上面的“更新 wokwi-elements 后” - 将 wokwi-elements 克隆到 third-party/ 中,然后运行 npm run generate:metadata。",
"fullStatusCallout": "完整状态: 请参阅仓库中的 docs/SETUP_COMPLETE.md。"
},
"esp32": {
"label": "// xtensa",
"heading": "ESP32 仿真 (Xtensa)",
"lead": "ESP32 和 ESP32-S3 开发板使用 Xtensa LX6 / LX7 架构。由于没有生产质量的纯 JavaScript Xtensa 仿真器,Velxio 为这些开发板使用了一个 基于 QEMU 的后端,即 lcgamboa 分支,带有 libqemu-xtensa,编译为原生二进制文件,并由 FastAPI 后端提供服务。",
"noteCallout": "注意: 本节适用于 ESP32、ESP32-S3 (Xtensa) 和 ESP32-C3 (RISC-V) - 它们都共享相同的 QEMU lcgamboa 管道,只是使用不同的 libqemu 二进制文件和机器目标。有关 C3 特定的差异,请参阅 RISC-V 仿真 (ESP32-C3)。",
"howHeading": "工作原理",
"how1": "Arduino 草图由 arduino-cli 编译为 ESP32 .bin 闪存映像。",
"how2": "前端通过 WebSocket (Esp32Bridge) 将二进制文件发送到后端。",
"how3": "后端使用 lcgamboa Xtensa 插件启动一个 QEMU 进程,加载映像。",
"how4": "GPIO 和 UART 事件通过 WebSocket 转发回浏览器。",
"how5": "前端实时更新组件状态 (LED、显示屏等)。",
"boardsHeading": "支持的开发板",
"boardEsp32Devkit": "ESP32 DevKit C V4",
"altEsp32Devkit": "ESP32 DevKit C V4",
"boardEsp32S3": "ESP32-S3",
"altEsp32S3": "ESP32-S3",
"boardEsp32Cam": "ESP32-CAM",
"altEsp32Cam": "ESP32-CAM",
"boardXiaoS3": "Seeed XIAO ESP32-S3",
"altXiaoS3": "Seeed XIAO ESP32-S3",
"boardNanoEsp32": "Arduino Nano ESP32",
"altNanoEsp32": "Arduino Nano ESP32",
"thBoard": "开发板",
"thCpu": "CPU",
"thEmulation": "仿真方式",
"boardEsp32": "ESP32",
"boardEsp32S3Name": "ESP32-S3",
"cpuLx6": "Xtensa LX6 双核 @ 240 MHz",
"cpuLx7": "Xtensa LX7 双核 @ 240 MHz",
"emuQemu": "QEMU (lcgamboa)",
"peripheralsHeading": "外设支持",
"perGpio": "GPIO: 数字输出/输入, LED 控制",
"perUart": "UART: 通过 Serial.print() 的串口监视器",
"perI2cSpi": "I2C / SPI: 外设通信",
"perRmt": "RMT / NeoPixel: 可寻址 LED 灯带",
"perLedc": "LEDC / PWM: 硬件 PWM 通道",
"perWifi": "WiFi: 部分支持 (连接事件转发)",
"requirementsHeading": "要求",
"requirementsBody": "基于 QEMU 的仿真需要运行 Velxio 后端。这意味着它适用于 托管版本 (位于 velxio.dev) 和 Docker 自托管,但不适用于纯静态前端部署。",
"fullDetailsCallout": "完整详情: 仓库中的 docs/ESP32_EMULATION.md。"
},
"roadmap": {
"label": "// 未来",
"heading": "路线图",
"lead": "Velxio 已实现、正在进行中和计划在未来版本中实现的功能。",
"implementedHeading": "已实现",
"impMonaco": "Monaco 编辑器,支持 C++ 语法高亮、自动补全和缩略图",
"impMultiFile": "多文件工作区,可创建、重命名、删除和切换文件",
"impArduinoCli": "通过 arduino-cli 进行 Arduino 编译 (支持多文件草图)",
"impAvr": "通过 avr8js 实现真实的 ATmega328p / ATmega2560 仿真,主频 16 MHz",
"impPeripherals": "完整的 GPIO、定时器、USART、ADC、SPI、I2C 支持",
"impRp2040": "通过 rp2040js 实现真实的 RP2040 仿真,主频 133 MHz",
"impWokwi": "48 个以上的 wokwi-elements 组件,带组件选择器",
"impWires": "导线创建、正交布线和基于线段的编辑",
"impSerial": "串口监视器,支持自动波特率检测和发送",
"impLibMgr": "库管理器 (浏览和安装 Arduino 库)",
"impAuth": "电子邮件/密码和 Google OAuth 认证",
"impProjects": "项目保存、更新、删除,带永久 URL",
"impExamples": "8 个内置示例项目",
"impDocker": "单容器 Docker 镜像,发布到 GHCR 和 Docker Hub",
"inProgressHeading": "进行中",
"ipWires": "功能性导线连接,电气信号路由和验证",
"ipWireErrors": "导线连接错误处理,检测短路和无效连接",
"nearTermHeading": "计划:近期",
"ntUndoRedo": "代码编辑和画布更改的撤销/重做",
"ntExport": "将项目导出/导入为 .zip 文件",
"ntMoreBoards": "更多开发板,ESP32、Arduino Leonardo",
"ntBreadboard": "面包板,放置组件并自动布线",
"midTermHeading": "计划:中期",
"mtTypeDoc": "TypeDoc API 文档,从源代码自动生成",
"mtGhPages": "GitHub Pages 文档站点,推送到 main 时自动部署",
"mtSensors": "更多传感器仿真,HC-SR04、DHT22、红外接收器",
"mtEeprom": "EEPROM 仿真,仿真重启后持久化读写",
"mtScope": "示波器组件,绘制模拟引脚电压随时间变化",
"longTermHeading": "计划:长期",
"ltMultiplayer": "多人协作,实时共享和协同编辑仿真",
"ltTutorials": "嵌入式教程系统,编辑器内逐步指导项目",
"ltSdk": "自定义组件 SDK,使用 JSON/TypeScript API 定义新组件",
"ltMobile": "移动/平板支持,响应式布局适配触摸设备",
"contributeCallout": "想要贡献? 欢迎在 github.com/davidmonterocrespo24/velxio 提交功能请求、错误报告和拉取请求。"
},
"emulator": {
"label": "// 内部机制",
"heading": "仿真器架构",
"lead": "Velxio 使用 真实的 CPU 仿真,而不是简化模型。本文档描述了仿真的每一层如何工作。",
"dataFlowHeading": "高级数据流",
"avr8Heading": "AVR8 仿真 (Arduino Uno / Nano / Mega)",
"avr8Body": "AVR 后端使用 avr8js,它实现了一个完整的 ATmega328p / ATmega2560 处理器。",
"execLoopHeading": "执行循环",
"execLoopBody": "每个动画帧执行大约 267,000 个 CPU 周期 (16 MHz / 60 FPS):",
"peripheralsHeading": "支持的外设",
"thPeripheral": "外设",
"thDetails": "详情",
"perGpio": "GPIO",
"perGpioDetail": "PORTB (引脚 8-13), PORTC (A0-A5), PORTD (引脚 0-7)",
"perTimers": "Timer0 / Timer1 / Timer2",
"perTimersDetail": "millis(), delay(), 通过 analogWrite() 的 PWM",
"perUsart": "USART",
"perUsartDetail": "完整的发送和接收,为串口监视器提供支持",
"perAdc": "ADC",
"perAdcDetail": "10 位,5 V 参考电压,引脚 A0-A5",
"perSpi": "SPI",
"perSpiDetail": "硬件 SPI (支持 ILI9341、SD 卡等)",
"perI2c": "I2C (TWI)",
"perI2cDetail": "硬件 I2C,带虚拟设备总线",
"pinMappingHeading": "引脚映射",
"thArduinoPin": "Arduino 引脚",
"thAvrPort": "AVR 端口",
"thBit": "位",
"rp2040Heading": "RP2040 仿真 (Raspberry Pi Pico)",
"rp2040Body": "RP2040 后端使用 rp2040js。",
"rp2040Bullet1": "真实的 RP2040 仿真,主频 133 MHz",
"rp2040Bullet2": "UART0 串行输出显示在串口监视器中",
"rp2040Bullet3": "GPIO 26-29 (A0-A3) 上的 12 位 ADC,参考电压 3.3 V",
"hexHeading": "HEX 文件格式",
"hexBody": "Arduino 编译生成 Intel HEX 格式。解析器位于 hexParser.ts:",
"hex1": "读取以 : 开头的行",
"hex2": "提取地址、记录类型和数据字节",
"hex3": "返回程序字节的 Uint8Array",
"hex4": "AVRSimulator 将其转换为 Uint16Array (16 位字,小端序)",
"sourceFilesHeading": "关键源文件",
"thFile": "文件",
"thPurpose": "用途",
"fileAvrSimDesc": "AVR8 CPU 仿真器封装",
"filePinManagerDesc": "将 Arduino 引脚映射到 UI 组件",
"fileHexParserDesc": "Intel HEX 解析器",
"fileSimCanvasDesc": "画布渲染",
"fileArduinoCliDesc": "arduino-cli 封装",
"fileCompileRouteDesc": "编译 API 端点"
},
"architecture": {
"label": "// 系统设计",
"heading": "项目架构",
"lead": "Velxio 是一个完全本地的 Arduino 仿真器,使用官方的 Wokwi 仓库以获得最大兼容性。它具有真实的 AVR8 CPU 仿真、48 个以上的交互式电子组件、全面的导线系统以及构建时的组件发现管道。",
"overviewHeading": "高级概述",
"dataFlowsHeading": "数据流",
"compilationHeading": "1. 编译",
"simLoopHeading": "2. 仿真循环",
"inputCompsHeading": "3. 输入组件",
"storesHeading": "关键前端存储 (Zustand)",
"thStore": "存储",
"thKeyState": "关键状态",
"storeEditorState": "files[], activeFileId",
"storeEditorPurpose": "多文件 Monaco 工作区",
"storeSimState": "simulator, components, wires, running",
"storeSimPurpose": "仿真 + 画布状态",
"storeAuthState": "user, token",
"storeAuthPurpose": "认证 (持久化到 localStorage)",
"storeProjectState": "projectId, slug",
"storeProjectPurpose": "当前打开的项目",
"routesHeading": "后端路由",
"thRoute": "路由",
"routeCompileDesc": "编译草图文件 - Intel HEX / UF2",
"routeBoardsDesc": "列出可用开发板",
"routeAuthDesc": "电子邮件/密码 + Google OAuth",
"routeProjectsDesc": "CRUD 项目持久化 (SQLite)",
"routeLibsDesc": "Arduino 库管理器集成",
"routeHealthDesc": "健康检查端点",
"wireSysHeading": "导线系统",
"wireSysLead": "导线存储为对象,其起点/终点端点连接到组件引脚位置:",
"wireBullet1": "正交布线,无对角线线段",
"wireBullet2": "线段拖动,垂直于线段方向拖动",
"wireBullet3": "自动更新,移动组件时重新计算导线位置",
"wireBullet4": "网格吸附,所有导线端点使用 20 像素网格",
"fullDetailsCallout": "完整详情: 请参阅仓库中的 docs/ARCHITECTURE.md。"
},
"intro": {
"label": "// 概述",
"heading": "简介",
"lead": "Velxio 是一个完全本地、开源的 Arduino 仿真器,完全在浏览器中运行。编写 Arduino C++ 代码,使用真实的 arduino-cli 后端编译,并通过真实的 AVR8 / RP2040 CPU 仿真进行仿真,支持 48 个以上的交互式电子组件,无需在您的机器上安装任何软件。",
"whyHeading": "为什么选择 Velxio?",
"whyNoInstall": "无需安装:一切都在浏览器中运行。",
"whyRealEmulation": "真实仿真:不是简化模型,而是精确的 AVR8 / RP2040 CPU 仿真。",
"whyInteractive": "交互式组件:LED、按钮、电位器、显示屏、传感器等。",
"whyOpenSource": "开源:可以检查、修改和自行托管。",
"boardsHeading": "支持的开发板",
"thBoard": "开发板",
"thCpu": "CPU",
"thEmulator": "仿真器",
"boardArduinoUno": "Arduino Uno",
"boardArduinoNano": "Arduino Nano",
"boardArduinoMega": "Arduino Mega",
"boardPiPico": "Raspberry Pi Pico",
"boardEsp32C3": "ESP32-C3 / XIAO C3 / C3 SuperMini",
"boardEsp32": "ESP32 / ESP32-S3",
"cpuAtmega328p": "ATmega328p @ 16 MHz",
"cpuAtmega2560": "ATmega2560 @ 16 MHz",
"cpuRp2040": "RP2040 @ 133 MHz",
"cpuRv32imc": "RV32IMC @ 160 MHz",
"cpuXtensa": "Xtensa LX6/LX7 @ 240 MHz",
"emuAvr8js": "avr8js",
"emuRp2040js": "rp2040js",
"emuEsp32C3": "Esp32C3Simulator (浏览器)",
"emuQemu": "QEMU (lcgamboa)",
"liveDemoCallout": "在线演示: velxio.dev,无需安装,打开编辑器即可立即开始仿真。"
},
"nav": {
"intro": "简介",
"gettingStarted": "快速开始",
"emulator": "仿真器架构",
"riscvEmulation": "RISC-V 仿真 (ESP32-C3)",
"esp32Emulation": "ESP32 仿真 (Xtensa)",
"rp2040Emulation": "RP2040 仿真 (Raspberry Pi Pico)",
"raspberryPi3Emulation": "Raspberry Pi 3 仿真 (QEMU)",
"components": "组件参考",
"architecture": "项目架构",
"thirdParty": "Wokwi 库",
"mcp": "MCP 服务器",
"setup": "项目状态",
"roadmap": "路线图",
"buildQemu": "从源码构建 QEMU"
}
}
}