# eh-chip **Repository Path**: MISSMYSEIF/eh-chip ## Basic Information - **Project Name**: eh-chip - **Description**: 一款芯片 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-09-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # eh-chip - 芯片设计与模拟平台 [![Build](https://img.shields.io/badge/Build-Passing-brightgreen)](https://gitee.com/MISSMYSEIF/eh-chip/actions/workflows/ci.yml) [![Test](https://img.shields.io/badge/tests-1599%20passed-brightgreen)](https://gitee.com/MISSMYSEIF/eh-chip) [![Lint](https://img.shields.io/badge/eslint-0%20errors-brightgreen)](https://gitee.com/MISSMYSEIF/eh-chip) [![TypeScript](https://img.shields.io/badge/typescript-strict-brightgreen)](https://gitee.com/MISSMYSEIF/eh-chip) [![Vue 3](https://img.shields.io/badge/vue-3.5-blue.svg)](https://vuejs.org/) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) # eh-chip 芯片设计与模拟平台 > 芯片设计与模拟平台 — 在无物理硬件的情况下,通过模拟平台模拟实现开发板的全部功能 --- ## 项目概述 eh-chip 是一款**芯片设计与模拟平台**,提供可视化芯片编辑、逻辑模拟运行、时序波形观测、芯片 SDK 开发套件。支持开发者开发底层 SDK 并释放给客户开发者开发应用层,编译生成固件后可烧录到模拟平台芯片上运行。 | 特性 | 说明 | |------|------| | 🎨 **可视化编辑** | 拖拽式画布,13 种逻辑门(AND/OR/NOT/XOR/NAND/NOR/BUFFER/XNOR/MUX/DFF/SR_LATCH/JK_FLIPFLOP/CLOCK),引脚连线,实时信号高亮 | | ⚡ **逻辑模拟** | 周期精确模拟,拓扑求值,环路检测,X 态传播,仿真断点 | | 📊 **波形分析** | 实时波形显示,SVG 渲染,CSV/GIF 导出,缩放平移,回放控制 | | 🔍 **设计搜索** | 按名称/标签/门类型搜索组件,高亮定位 | | 📋 **版本管理** | 版本历史、回滚、版本对比差异分析 | | 🧩 **SDK 开发** | 完整 ESP32 SDK,HAL、驱动、协议栈、安全模块 | | 🏪 **模板市场** | 预置模板 + 用户创建 + 模板发布/撤回 | | 🔌 **第三方对接** | MQTT(EMQX)、AWS S3、Kafka、AWS IoT Core | | 🗄️ **数据库** | SQLite(sql.js WASM)默认后端,支持 MySQL / PostgreSQL | | 🔐 **认证授权** | JWT 认证,管理员/测试密码通过环境变量设置(未设置时**不创建**默认账号) | | 🤝 **协作编辑** | WebSocket 实时协作,设计同步,光标共享 | | ⌨️ **快捷键** | 20+ 可自定义快捷键,支持冲突检测 | --- ## 快速入门 ### 前置条件 ```bash # 必需 Node.js >= 20 pnpm >= 9 # 可选 Python 3.10+(用于集成测试) ESP-IDF(用于 SDK 开发) ``` ### 安装与启动 ```bash git clone https://gitee.com/MISSMYSEIF/eh-chip.git cd eh-chip pnpm install # 一键启动(Windows) start.bat # 开发模式 pnpm dev # 访问 http://localhost:5173 ``` ### 一键暂停(Windows) ```bash pause.bat ``` --- ## 文档中心 | 分类 | 文档 | 适合人群 | 阅读时间 | |------|------|---------|---------| | 🟢 入门 | [快速入门](docs/getting-started/quickstart.md) | 所有用户 | 5 分钟 | | 🟢 入门 | [贡献指南](docs/getting-started/CONTRIBUTING.md) | 贡献者 | 10 分钟 | | 🔵 架构 | [架构设计](docs/architecture/architecture.md) | 技术负责人、架构师 | 15 分钟 | | 🟣 前端 | [前端开发](docs/frontend/frontend-guide.md) | Vue/TS 开发者 | 20 分钟 | | 🟠 后端 | [数据库集成](docs/backend/database-guide.md) | 后端开发者 | 15 分钟 | | 🟠 后端 | [部署指南](docs/backend/deployment.md) | 运维工程师 | 10 分钟 | | 🔴 嵌入式 | [SDK 开发](docs/sdk/sdk-development.md) | 嵌入式/C++ 开发者 | 30 分钟 | | 🟡 集成 | [第三方对接](docs/integrations/third-party-integration.md) | 集成开发者 | 25 分钟 | | 📋 变更 | [变更日志](docs/changelog/CHANGELOG.md) | 所有人 | 10 分钟 | --- ## 默认账号 > ⚠️ **安全提示**:默认密码 `admin123` / `test123` 仅在设置了 `ADMIN_PASSWORD` / `TEST_PASSWORD` 环境变量时才会创建对应账号。未设置时**不会**创建默认账号,防止生产环境凭空出现弱密码账号。生产环境**必须**通过环境变量显式设置 `ADMIN_PASSWORD` 和 `TEST_PASSWORD`。 | 用户名 | 密码 | 角色 | 说明 | |--------|------|------|------| | `admin` | `admin123` | 管理员 | 系统管理员(开发测试用,生产请改环境变量) | | `testuser` | `test123` | 普通用户 | 测试用户(开发测试用,生产请改环境变量) | > 🔧 管理员与测试用户的用户名/密码可通过环境变量 `ADMIN_USERNAME`、`ADMIN_PASSWORD`、`TEST_USERNAME`、`TEST_PASSWORD` 自定义。管理员 API 端点(用户列表、系统统计、修改角色、删除用户)位于 `/api/admin/*`,需管理员权限。 > > 🛡️ JWT 密钥通过 `JWT_SECRET` 环境变量设置(需 ≥64 字符);未设置时自动生成随机密钥,进程重启后失效。管理员/测试密码通过 `ADMIN_PASSWORD` / `TEST_PASSWORD` 环境变量设置;未设置时**不会**创建默认账号,避免弱密码暴露。 ## 服务端同步 前端默认**离线运行**,所有功能(设计、模拟、SDK)不依赖后端即可完整使用(设计保存在 localStorage)。 点击右上角 **🔑 登录** 按钮登录后,以下功能将切换为**真实服务端执行**: | 功能 | 离线模式(未登录) | 在线模式(已登录) | |------|-------------------|-------------------| | SDK 编译 | 本地 2 秒模拟 | 调用 `/api/sdk/build` 服务端模拟构建(生成固件记录,未运行真实 xtensa 工具链,仅管理员可用) | | 固件烧录 | 本地 1.5 秒模拟 | 调用 `/api/sdk/flash/:id` 服务端模拟烧录(更新固件状态记录) | | 设计持久化 | localStorage | `/api/designs/*` 云存储 | 登录态通过 JWT token 持久化到 localStorage,刷新页面后自动恢复。 --- --- ## 数据库支持 通过 `DATABASE_TYPE` 环境变量切换数据库后端(驱动抽象层,统一 SQL 接口): | 数据库 | 默认 | 驱动 | 适用场景 | |--------|------|------|---------| | SQLite | ✅ 是 | sql.js (WASM) | 开发、测试、嵌入式 | | MySQL | 可选 | mysql2 | 中小规模生产 | | PostgreSQL | 可选 | pg | 大规模生产 | **配置示例:** ```bash # 使用 SQLite(默认) DATABASE_TYPE=sqlite DATABASE_PATH=data/eh-chip.db # 使用 MySQL DATABASE_TYPE=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_USERNAME=root DB_PASSWORD=xxx DB_NAME=eh-chip # 使用 PostgreSQL DATABASE_TYPE=postgres DB_HOST=127.0.0.1 DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=xxx DB_NAME=eh-chip ``` > ⚠️ MySQL/PostgreSQL 需要对应的数据库服务运行。驱动在首次连接时自动创建表结构(支持各数据库方言)。 --- ## 第三方集成 | 服务 | 协议 | 状态 | 教程 | |------|------|------|------| | MQTT | MQTT 3.1.1 | ✅ 已实现(REST 配置连接,未连接时降级本地日志) | [第三方对接](docs/integrations/third-party-integration.md) | | Kafka | Kafka Protocol | ✅ 已实现(REST 配置连接,未连接时降级本地日志) | [第三方对接](docs/integrations/third-party-integration.md) | | AWS IoT Core | HTTPS + SigV4 | ✅ 已实现(REST 配置,endpoint 必填) | [第三方对接](docs/integrations/third-party-integration.md) | | AWS S3 | REST API | ⚠️ 模拟(仅构造预签名风格的 URL,未真实上传) | [第三方对接](docs/integrations/third-party-integration.md) | | 阿里云 IoT | MQTT + TLS | 🔜 规划中 | [第三方对接](docs/integrations/third-party-integration.md) | | ESP32 设备 | HTTP + MQTT | 🔜 规划中 | [第三方对接](docs/integrations/third-party-integration.md) | | OAuth2 | OAuth 2.0 | 🔜 规划中 | [第三方对接](docs/integrations/third-party-integration.md) | | Prometheus | HTTP Metrics | 🔜 规划中 | [第三方对接](docs/integrations/third-party-integration.md) | | 钉钉 | Webhook | 🔜 规划中 | [第三方对接](docs/integrations/third-party-integration.md) | > ℹ️ 集成均通过 REST 接口(`/api/integrations/*`)在运行时配置,环境变量方式不生效;未连接 broker/云服务时自动降级为本地日志模式。AWS S3 上传为模拟实现。其余服务标记为「规划中」,后端暂无对应实现。 --- ## 项目结构 ``` eh-chip/ ├── docs/ # 文档中心(分类目录) │ ├── getting-started/ # 入门与贡献 │ ├── architecture/ # 系统设计 │ ├── frontend/ # 前端开发 │ ├── backend/ # 后端与部署 │ ├── sdk/ # 嵌入式开发 │ └── integrations/ # 第三方对接 ├── tests/ # 测试(Vitest 单元测试 + Python 集成测试) ├── start.bat / pause.bat # Windows 启动/暂停脚本 ├── src/ # 前端源码 (Vue 3 + TS) ├── SDK/ # C/C++ 嵌入式 SDK ├── server/ # Node.js 后端服务 ├── dist/ # 构建输出 └── node_modules/ # 依赖 ``` --- ## 开发命令 ```bash pnpm dev # 启动开发服务器 pnpm build # 构建生产版本 pnpm test # 运行单元测试 pnpm lint # ESLint 检查 pnpm lint:fix # 自动修复 pnpm format # 代码格式化 ``` --- ## 测试 ### 单元测试 (Vitest) ```bash pnpm test ``` ### 集成测试 (Python) ```bash python3 tests/test_integration.py ``` --- ## 开源协议 本项目采用 [MIT License](LICENSE) 开源协议。 --- ## 致谢 本项目基于以下开源技术构建,向它们致敬: - [Vue 3](https://vuejs.org/) — 渐进式 JavaScript 框架 - [TypeScript](https://www.typescriptlang.org/) — JavaScript 的超集 - [Pinia](https://pinia.vuejs.org/) — Vue 官方状态管理库 - [Vue Router](https://router.vuejs.org/) — Vue 官方路由库 - [Vue Flow](https://vueflow.dev/) — 流程图可视化组件 - [Vite](https://vitejs.dev/) — 下一代前端构建工具 - [Vitest](https://vitest.dev/) — 单元测试框架 - [sql.js](https://github.com/sql-js/sql.js) — SQLite WASM 驱动 - [Express](https://expressjs.com/) — Node.js Web 框架 - [jsonwebtoken](https://www.npmjs.com/package/jsonwebtoken) — JWT 认证库 - [bcryptjs](https://www.npmjs.com/package/bcryptjs) — 密码哈希库 - [ESP-IDF](https://docs.espressif.com/projects/esp-idf/) — ESP32 官方 SDK - [CMake](https://cmake.org/) — 跨平台构建系统 - [ESLint](https://eslint.org/) — 代码检查工具 - [Prettier](https://prettier.io/) — 代码格式化工具 > 💡 如果 eh-chip 对你有帮助,请在 [Gitee](https://gitee.com/MISSMYSEIF/eh-chip) 给我们一个 Star!