Starry 运行基本应用¶
基本应用结构¶
基本应用位于项目的 apps目录下,每个应用都是一个文件夹,文件夹名即为应用名。每个应用文件夹下应当包含至少以下内容:
Makefile:编译应用的 Makefile 文件,需要提供build和clean两个目标,分别用于编译和清理应用。testcase_list:应用的测试用例列表,每行一个测试用例名,其中测例名对应的文件应当在执行make build后生成。
项目默认提供了 junior,libc和 nimbos三个基本应用,分别对应了 apps/junior,apps/libc和 apps/nimbos三个文件夹。
运行基本应用¶
运行基本应用前需要先获取依赖仓库:
1 | |
然后执行以下命令,来在特定平台上测试指定的应用:
1 2 3 4 5 6 | |
其中:
{arch}为平台名,取值可以是riscv64,x86_64,aarch64,loongarch64之一;{app_name}为应用名,应该为前述apps目录下的应用文件夹名,例如junior,libc,nimbos等。{log}为日志等级,取值可以是off,error,warn,info,debug,trace之一。
特别地,对于 libc应用,运行时应当启用 fp_simd特性:
1 | |
如果只想编译内核而不运行,可以将上述的 run 命令替换为 build,例如:
1 | |
编写自己的应用¶
添加简单的c程序¶
libc这个应用提供了编译单个源文件的c程序的功能,如果你想添加一个简单的c程序,可以直接在apps/libc/c目录下新建一个c文件,然后在testcase_list文件中添加该文件的名字即可。
添加预编译的二进制程序¶
bin这个应用提供了添加预编译的二进制程序的功能,如果你想添加一个预编译的二进制程序,可以直接在apps/bin/{arch}目录下添加你的二进制程序,然后在testcase_list文件中添加该文件的名字即可。
完全自定义应用¶
上面我们已经介绍了两种简单的添加测试用例的方法,如果你希望更进一步了解其中的原理,或者有添加复杂应用的需求,可以参考如下指引:
- 在
apps目录下新建一个文件夹,文件夹名即为应用名,例如myapp:
1 | |
- 在该文件夹下新建
Makefile文件,需要包括build和clean两个目标,内容如下:
1 2 3 4 5 6 7 | |
- 在该文件夹下新建
testcase_list文件,列出所有测试用例的名字,每行一个,例如:
1 | |
- 编写应用程序,例如在该文件夹下新建
hello.c文件,内容如下:
1 2 3 4 5 6 7 8 | |
- 在
Makefile中添加编译hello的目标,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
关于Makefile的几点提示:
- 编译用户程序时,会指定
ARCH变量,需要以此考虑交叉编译工具链的选择; - 需要提供
build目标,编译生成的文件需要放在build/$(ARCH)目录下; - 需要提供
clean目标,用于清理编译生成的文件。 -
如果你希望拷贝上面的Makefile示例,需要注意Makefile中的缩进是用制表符而不是空格。
-
尝试编译和运行该应用,在项目根目录下执行:
1 2 3 | |
评论
作者: