以下是一个清爽的文件夹分类建议,适用于大多数嵌入式软件项目:
1. 根目录
- README.md:项目简介、安装步骤、配置说明等。
- LICENSE:项目使用的许可证文件。
2. 源代码目录
2.1 src
- 存放所有源代码文件。
2.2 子目录划分
- bsp(Board Support Package):板级支持包,包含与硬件板卡直接相关的驱动程序和初始化代码。
- 例如:
bsp_gpio.c
、bsp_uart.c
等。
- 例如:
- core:核心功能层,包含与MCU直接相关的初始化代码和底层驱动。
- 例如:
main.c
、system_init.c
等。
- 例如:
- drivers:设备驱动程序,包括厂商提供的SDK和自定义的设备驱动。
- 例如:
stm32f1xx_hal_msp.c
、adc_driver.c
等。
- 例如:
- middlewares:中间件层,包含可复用的高级软件组件,如网络协议栈、图形库等。
- 例如:
lwip
(轻量级IP协议栈)、lvgl
(图形库)等。
- 例如:
- os(可选):操作系统层,包含操作系统的源代码或配置文件。
- 例如:FreeRTOS、RT-Thread的配置文件和源码。
- app:应用层,包含实现具体业务逻辑的代码。
- 例如:
task_manager.c
、sensor_read.c
等。
- 例如:
3. 文档目录
- doc
- design:设计文档,包括系统架构图、模块设计文档等。
- user_manual:用户手册,描述项目的使用方法、操作步骤等。
- developer_guide:开发者指南,包含开发环境搭建、编码规范等信息。
- api_doc:API文档,详细说明项目中使用的接口和函数。
4. 构建目录
- build 或 out
- 存放编译生成的输出文件,如目标文件、可执行文件、库文件等。
- 通常由构建系统自动生成,不建议手动修改。
5. 测试目录
- test
- 包含项目的测试代码、测试脚本和测试结果。
- 可以进一步细分为单元测试、集成测试、系统测试等子目录。
6. 其他目录
- boot(可选):引导代码目录,包含引导加载器(Bootloader)及其配置文件。
- tools:工具目录,包含项目开发过程中使用的工具或脚本。
- scripts:脚本目录,存放自动化脚本,如编译脚本、部署脚本等。
7. 版本控制
- 对于使用Git等版本控制系统的项目,还可以包含
.gitignore
文件,用于指定不需要加入版本控制的文件和目录。
这种分类方式有助于嵌入式软件工程师在开发过程中快速定位代码和文档,提高开发效率和维护性。同时,根据项目的具体需求和团队的开发习惯,可以灵活调整和优化文件夹结构。