完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
因为现在RT-Thread的测试代码还比较少,而且很多人反映RT-Thread例子也不多,所以打算建一套系统测试的代码,一个做为例子提供给大家使用;一个做为测试代码进行单元测试。
大家有什么好的建议吗? 我的初步想法是: 每个例子以单独的文件放置,每个文件中包含用户应用入口函数rt_application_init,这样就能够做到只需要替换每个分支中的application.c而编译通过,然后运行测试代码。 对于一套完整的测试,可以考虑采用宏的方式可以把每份代码的rt_application_init入口给屏蔽掉,并且把所有的测试代码都编译进去,并输出各自的函数到finsh shell中,这样也就可以在finsh shell中进行相应的测试了。因为代码还要兼顾到示例性质,所以得要求代码尽量精简。 一份示例: #include #ifdef RT_TESTSUITE #include #else #if RT_THREAD_PRIORITY_MAX == 32 #define THREAD_PRIO 20 #else #define THREAD_PRIO 200 #endif #define TEST_LOOP 1 #endif /* * This is an example for static thread */ static struct rt_thread thread1; static char thread1_stack[512]; static void thread1_entry(void* parameter) { int i; while (TEST_LOOP) { for (i = 0; i < 10; i ++) { rt_kprintf("%d ", i); rt_thread_delay(100); } } #ifdef RT_TESTSUITE test_set_state(TEST_STATE_PASSED); #endif } rt_err_t thread_static_init() { rt_err_t result; result = rt_thread_init(&thread1, "thread1", thread1_entry, RT_NULL, &thread1_stack[0], sizeof(thread1_stack), THREAD_PRIO, 10); if (result == RT_EOK) { rt_thread_startup(&thread1); } return result; } #ifdef RT_TESTSUITE int thread_static() { test_set_state(TEST_STATE_RUNNING); return test_check_result(thread_static_init()); } FINSH_FUNCTION_EXPORT(thread_static, a static thread object test); #else int rt_application_init() { thread_static_init(); return 0; } #endif RT_TESTSUITE是定义用于测试的,如果把这个宏去掉,那么这也是一份完整的例子(替换掉各个分支中的appliation.c即可运行起来)。 |
|
相关推荐
2个回答
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1209 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1058 浏览 0 评论
1444 浏览 0 评论
1371 浏览 0 评论
1023 浏览 0 评论
74584 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 13:02 , Processed in 0.569395 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号