Edit online

hellowold

4 Dec 2024
Read time: 2 minute(s)
Luban-Lite 中有以下两种方案添加开机运行的 hellowold:

修改 main 函数

SDK 默认创建了 hellowold 例程,可以直接在例程中添加私有函数逻辑:

  • hellowold 例程代码为 application/rt-thread/helloworld/main.c

  • main 函数是 RT-Thread 的主入口函数。

  • 例程代码目录的 SConscript 脚本默认会编译该目录中的所有 c 文件,因此可以直接添加用户代码文件,然后在 main 函数中调用新添加的文件中的函数。

application/rt-thread/helloworld/main.c |  3 +++
application/rt-thread/helloworld/test.c | 15 +++++++++++++++
2 files changed, 18 insertions(+)
create mode 100644 application/rt-thread/helloworld/test.c

diff --git a/application/rt-thread/helloworld/main.c b/application/rt-thread/helloworld/main.c
index 0dadb95e2..003233588 100644
--- a/application/rt-thread/helloworld/main.c
+++ b/application/rt-thread/helloworld/main.c
@@ -20,6 +20,8 @@
#include <boot_param.h>
#endif

+extern void helloworld();
+
int main(void)
{
#ifdef AIC_AB_SYSTEM_INTERFACE
@@ -48,5 +50,6 @@ int main(void)
#ifdef ULOG_USING_FILTER
    ulog_global_filter_lvl_set(ULOG_OUTPUT_LVL);
#endif
+    helloworld();
    return 0;
}
diff --git a/application/rt-thread/helloworld/test.c b/application/rt-thread/helloworld/test.c
new file mode 100644
index 000000000..634da82e6
--- /dev/null
+++ b/application/rt-thread/helloworld/test.c
@@ -0,0 +1,15 @@
+#include <rtthread.h>
+#include <stdio.h>
+
+void helloworld()
+{
+    printf("Hello World!\n");
+}
--
2.29.0

自动初始化

RT-Thread 的自动初始化机制是指初始化函数不需要被显式调用,只需要在函数定义处通过宏定义的方式进行申明, 则该函数在系统启动过程中将被顺序执行:

  • 代码可以在任意地方声明和编译

  • 通过 INIT_APP_EXPORT 申明

diff --git a/application/rt-thread/helloworld/test.c b/application/rt-thread/helloworld/test.c
new file mode 100644
index 000000000..18eb0821f
--- /dev/null
+++ b/application/rt-thread/helloworld/test.c
@@ -0,0 +1,10 @@
+#include <rtthread.h>
+#include <stdio.h>
+
+int helloworld(void)
+{
+    printf("Hello World!\n");
+    return 0;
+}
+
+INIT_APP_EXPORT(helloworld);