1.3 编译和下载程序
2026/7/19大约 2 分钟入门入门编译下载
1.3 编译和下载程序
📚 本节导读
学习时长:约 20 分钟
难度级别:⭐☆☆☆☆
前置知识:第 1.2 节 Keil5 项目配置
🎯 学习目标
- 掌握 OneOS-Lite 项目的编译流程
- 理解编译产物和内存使用分析
- 掌握程序下载和烧录方法
一、编译项目
1.1 Keil5 编译
- 点击
Build(F7)或Rebuild - 查看
Build Output窗口
Build Output 示例:
compiling os_task.c...
linking...
Program Size: Code=28456 RO-data=1234 RW-data=456 ZI-data=8192
FromELF: creating hex file...
".\Objects\project.axf" - 0 Error(s), 0 Warning(s).1.2 命令行编译
# 使用 CMake + GCC
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=toolchain/arm-gcc.cmake
make -j4二、内存使用分析
| 段 | 存储位置 | 说明 |
|---|---|---|
| Code | Flash | 代码段 |
| RO-data | Flash | 只读数据 |
| RW-data | Flash→RAM | 已初始化全局变量 |
| ZI-data | RAM | 零初始化变量(BSS) |
Flash 占用 = Code + RO-data + RW-data
RAM 占用 = RW-data + ZI-data三、下载程序
- 连接调试器(J-Link / ST-Link)到开发板
- 开发板上电
- 点击
Download(F8) - 勾选
Reset and Run自动运行
四、常见编译错误及解决方法
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
error: #5: cannot open source input file "os_kernel.h" | 头文件路径缺失 | 检查 Include Paths,确保 kernel\include 已添加 |
error: L6218E: Undefined symbol xxx | 源文件未添加到工程 | 将缺失的 .c 文件添加到工程 Group 中 |
error: L6406E: No space in execution regions | Flash 或 RAM 空间不足 | 关闭不用的组件(Kconfig),或更换更大容量的芯片 |
error: #20: identifier "STM32F10X_HD" is undefined | 芯片宏定义缺失 | 在 Define 中添加 STM32F10X_HD |
The code size of this image exceeds... | 代码超过芯片 Flash 容量 | 优化代码(-Os),裁剪不用的组件 |
No Debug Unit Device found | 调试器连接失败 | 检查连接线、供电、驱动安装 |
📝 小结
- Keil5 一键编译下载,流程简单
- 关注编译产物中的内存使用分析
- 下载后观察开发板运行状态