

根据你的描述和RT-Thread的BSP结构,烧录后复位运行时执行的代码是 .../rt-thread/bsp/k210/applications/main.c 中的代码。以下是详细分析:
bsp/k210/applications/main.c
这是 用户应用程序的标准入口。RT-Thread的BSP框架约定:
int main(void) 函数。 bsp/k210/packages/K210-SDK-latest/src/hello_world
这是 K210 SDK软件包自带的示例代码(非主入口)。
main()。编译目录的正确性:
你在 .../rt-thread/bsp/k210 下使用 env 编译是正确的。
rtconfig.h 和 Kconfig 文件,自动链接所有依赖(包括软件包)。 rtthread.bin)默认以 applications/main.c 为入口。软件包的作用:
K210-SDK-latest 是外挂的驱动/工具库(如摄像头、LCD驱动等)。
hello_world/main.c 只是一个示例,不会覆盖 applications/main.c 的入口地位。 applications/main.c 中 #include 并调用相关API。drivers 和 libraries 目录的代码处理)。applications/main.c 中的 main() 函数,执行你的逻辑。在 applications/main.c 添加调试语句:
#include
int main(void)
{
rt_kprintf("Hello from applications/main.c!n"); // 串口将打印此消息
while (1) {
rt_thread_mdelay(1000);
}
return 0;
}重新编译烧录后观察串口输出,即可确认入口位置。
检查构建日志:
编译时输出的日志会显示链接了哪些文件。查找 applications/main.o,确保它是主程序的一部分。
修改了代码但固件未更新?
执行 scons -c 清理旧构建,再重新编译。
软件包的示例如何运行?
需要手动在 applications/main.c 中调用SDK函数(例如调用 hello_world_demo()),或通过 menuconfig 启用软件包的自带示例(但入口仍在 applications/main.c)。
✅ 复位后执行的代码:bsp/k210/applications/main.c
✅ 编译目录正确:bsp/k210/ 是标准路径。
❌ 无需操作:packages/K210-SDK-latest/ 下的代码默认不直接作为入口。
建议将你的代码放在 applications/main.c 中,并确保在 menuconfig 中启用了所需软件包功能。
举报
更多回帖