# end **Repository Path**: idcu/end ## Basic Information - **Project Name**: end - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-26 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # End 嵌入式开发框架 End 是一个纯 C 语言实现的嵌入式开发框架,无需第三方依赖,提供模块化设计和完善的架构。 - **官方网站**: https://gitee.com/idcu/end - **GitHub**: https://github.com/idcu/end - **联系邮箱**: idcu@qq.com - **商务合作**: idcu@qq.com ## ✨ 特性 - **纯 C 实现,零第三方依赖** - **模块化设计,易于扩展** - **主要针对 Linux 嵌入式平台设计** - **跨平台支持**(Linux/Windows/POSIX) - **完善的架构设计** - **详细的中文开发者手册** ## 📦 已实现模块 ### 核心模块 - ✅ **Common** - 日志、内存管理、工具函数 - ✅ **Module** - 模块注册和生命周期管理 - ✅ **HTTP** - 内置 Web 服务器 - ✅ **Net** - 网络抽象层(TCP/UDP) - ✅ **JSON** - JSON 创建和序列化 - ✅ **YAML** - YAML 创建和序列化 - ✅ **Config** - 配置管理(JSON/YAML 加载 + 配置项验证) - ✅ **CRC** - CRC 校验(CRC-8/CRC-16/CRC-32) - ✅ **Test** - 单元测试框架 ### 外设模块 - ✅ **GPIO** - 通用输入输出(Linux sysfs) - ✅ **UART** - 串口通信(Linux termios) - ✅ **I2C** - I2C 总线(Linux i2c-dev) - ✅ **SPI** - SPI 总线(Linux spidev) - ✅ **ADC** - 模数转换(Linux IIO) - ✅ **PWM** - 脉宽调制(Linux PWM sysfs) - ✅ **Timer** - 定时器管理 - ✅ **WDT** - 看门狗定时器(Linux watchdog) - ✅ **Flash** - 非易失性存储(内存模拟) - ✅ **EEPROM** - 电可擦除只读存储器(内存模拟) - ✅ **RTC** - 实时时钟(系统时间) - ✅ **HAL** - 硬件抽象层(支持多平台) ### 传感器驱动 - ✅ **DS18B20** - 1-Wire 温度传感器 - ✅ **LM75** - I2C 温度传感器 - ✅ **AHT20** - 温湿度传感器 - ✅ **BME280** - 温湿度气压传感器 - ✅ **BH1750** - 光照传感器 - ✅ **ADXL345** - 加速度传感器 - ✅ **AT24CXX** - EEPROM 存储芯片 - ✅ **DS3231** - RTC 实时时钟芯片 - ✅ **OLED** - SSD1306 OLED 显示驱动 - ✅ **SHT3x** - 温湿度传感器(I2C) - ✅ **DHT11/22** - 温湿度传感器(单总线) - ✅ **MPU6050** - 六轴 IMU(加速度+陀螺仪) - ✅ **HCSR04** - 超声波测距传感器 ### 通信协议 - ✅ **Modbus** - Modbus RTU/TCP 工业协议 - ✅ **MQTT** - MQTT 3.1.1 IoT 协议 - ✅ **SNTP** - 网络时间同步协议 - ✅ **CAN** - CAN 总线协议 - ✅ **W5500** - 硬件以太网芯片驱动 - ✅ **WebSocket** - WebSocket 服务器和客户端(RFC 6455) - ✅ **CoAP** - CoAP 协议(RFC 7252) - ✅ **TLS/SSL** - TLS 1.2/1.3 协议抽象层 ### 存储与文件系统 - ✅ **File System** - 统一文件系统抽象层 - ✅ **MemFS** - 内存文件系统 - ✅ **Memory Pool** - 内存池管理(固定/可变大小分配) ### 高级功能 - ✅ **Auth** - 用户认证和 Token 管理 - ✅ **Data Sync** - 数据同步框架 - ✅ **Election** - Raft 风格领导者选举 - ✅ **LPR** - 车牌识别(可选) - ✅ **OTA** - 固件在线升级(SHA256 校验、签名验证、增量更新、回滚) - ✅ **Remote Management** - 远程设备管理(心跳、配置、命令、日志) - ✅ **Profiler** - 性能分析工具(函数耗时统计) - ✅ **HAL** - 硬件抽象层(支持多平台) ### 开发工具链 - ✅ **endpm** - End 包管理器(安装、管理、分享模块) - ✅ **end_config** - 图形化配置工具(项目配置、模块选择、CMake 生成) - ✅ **test_runner** - 自动化测试运行器(JSON/HTML 报告生成) - ✅ **CI/CD** - GitHub Actions 工作流(跨平台构建、测试、覆盖率) ## 🚀 快速开始 ### 最简单的方式(3步) **1. 编译** ```bash # Linux/Mac make allinone # Windows build.bat ``` **2. 运行** ```bash # Linux/Mac ./all_in_one # Windows all_in_one.exe ``` **3. 打开浏览器** 访问:http://localhost:8080 --- **新手请先看这里!** → [GETTING_STARTED.md](GETTING_STARTED.md) 这是一份从零开始的入门指南,适合完全不懂 C 语言的用户阅读。 **Linux 用户看这里!** → [LINUX_GUIDE.md](LINUX_GUIDE.md) 项目主要针对 Linux 嵌入式平台,包含 GPIO、串口、I2C、SPI、交叉编译等详细指南。 ## 📖 示例代码 ### Hello World(5行代码) ```c #include "end.h" int main(void) { end_init(); end_log(END_LOG_INFO, "Hello, End Framework!"); end_cleanup(); return 0; } ``` ### HTTP 服务器 ```c #include "end.h" static int hello_handler(end_http_request_t *req, end_http_response_t *res) { END_UNUSED(req); end_http_response_set_status(res, 200, "OK"); end_http_response_set_body(res, "Hello World!", 12); return 0; } int main(void) { end_init(); end_http_init(8080); end_http_register_route("/", END_HTTP_GET, hello_handler); end_http_start(); end_cleanup(); return 0; } ``` ### GPIO 控制(LED 闪烁) ```c #include "end.h" int main(void) { end_init(); end_gpio_init(); end_module_init_all(); end_module_start_all(); end_gpio_set_mode(17, END_GPIO_MODE_OUTPUT); for (int i = 0; i < 10; i++) { end_gpio_write(17, END_GPIO_HIGH); end_sleep_ms(500); end_gpio_write(17, END_GPIO_LOW); end_sleep_ms(500); } end_cleanup(); return 0; } ``` 更多示例请查看 `examples/` 目录! ## 📚 文档 ### 核心文档 - [GETTING_STARTED.md](GETTING_STARTED.md) - 从零开始入门指南(推荐新手) - [LINUX_GUIDE.md](LINUX_GUIDE.md) - Linux 平台开发指南(推荐 Linux 用户必看) - [QUICKSTART.md](QUICKSTART.md) - 5分钟快速上手指南 - [API_REFERENCE.md](API_REFERENCE.md) - 完整 API 参考手册 ### 开发者文档 - [MODULE_GUIDE.md](MODULE_GUIDE.md) - 模块开发指南(推荐开发者) - [PORTING_GUIDE.md](PORTING_GUIDE.md) - 移植指南(推荐移植到新平台) - [DEVELOPMENT_PLAN.md](DEVELOPMENT_PLAN.md) - 开发计划和架构设计 ### 项目文档 - [PRODUCT_POSITIONING.md](PRODUCT_POSITIONING.md) - 产品定位文档 - [WHITEPAPER.md](WHITEPAPER.md) - 项目白皮书 - [ROADMAP.md](ROADMAP.md) - 开发路线图 - [PROJECT_SUMMARY.md](PROJECT_SUMMARY.md) - 项目总结(1.0 版本发布) - [PROJECT_EVALUATION.md](PROJECT_EVALUATION.md) - 项目评估报告 ### 配置文件 - [config.yaml](config.yaml) - YAML 格式配置(推荐) - [config.json](config.json) - JSON 格式配置 ## 📂 目录结构 ``` end/ ├── docs/ # 文档目录 │ ├── guides/ # 指南类文档 │ ├── design/ # 设计类文档 │ └── business/ # 商业类文档 ├── include/ # 头文件 │ ├── end.h # 主头文件 │ ├── end_common.h # 公共定义 │ ├── end_module.h # 模块管理 │ ├── end_http.h # HTTP 服务器 │ ├── end_gpio.h # GPIO 驱动 │ ├── end_uart.h # UART 串口 │ ├── end_i2c.h # I2C 总线 │ ├── end_spi.h # SPI 总线 │ ├── end_net.h # 网络抽象层 │ ├── end_crc.h # CRC 校验 │ └── ... # 其他模块 ├── src/ # 源代码 │ ├── core/ # 核心模块 │ │ ├── common.c │ │ ├── module.c │ │ ├── http.c │ │ ├── json.c │ │ ├── yaml.c │ │ └── test.c │ └── modules/ # 功能模块 │ ├── gpio/ │ ├── uart/ │ ├── i2c/ │ ├── spi/ │ ├── net/ │ ├── crc/ │ └── ... ├── examples/ # 示例代码 │ ├── main.c # 主程序示例 │ ├── simple.c # 最简单示例 │ ├── gpio_example.c # GPIO 示例 │ ├── http_example.c # HTTP 服务器示例 │ ├── json_example.c # JSON 示例 │ ├── yaml_example.c # YAML 示例 │ ├── config_example.c # 配置模块示例 │ ├── net_example.c # 网络模块示例 │ ├── crc_example.c # CRC 模块示例 │ └── all_in_one.c # 综合示例(推荐) ├── tests/ # 测试代码 ├── config.yaml # 配置文件(YAML) ├── config.json # 配置文件(JSON) ├── Makefile # Make 构建(Linux/Mac) ├── build.bat # 批处理构建(Windows) ├── CMakeLists.txt # CMake 构建配置 └── README.md # 项目说明(本文件) ``` ## 🔨 构建 ### 方式 1:Make(Linux/Mac,推荐) ```bash # 编译所有程序 make # 编译并运行综合示例 make allinone ./all_in_one # 只编译 HTTP 服务器 make http # 清理 make clean # 查看帮助 make help ``` ### 方式 2:批处理(Windows,推荐) ```cmd # 双击或运行 build.bat ``` ### 方式 3:CMake(跨平台) **前置要求:** - CMake 3.10+ - C 编译器(GCC, Clang, MSVC 等) **编译步骤:** ```bash # 1. 创建编译目录 mkdir build && cd build # 2. 生成项目 cmake .. # 3. 编译 cmake --build . --config Release ``` ## ✅ 编码规范 - **文件编码**:UTF-8(无 BOM) - **缩进**:4 空格 - **命名**:小写+下划线 - **公共 API**:`end_*` 前缀 - **宏定义**:`END_*` 前缀 ## 📄 许可证 本项目采用 Apache License 2.0 许可证 - 详见 [LICENSE](LICENSE) 文件 --- **注意:** 所有文件请使用 UTF-8 编码保存,避免乱码问题!