[讨论] 无操作系统的bare_metal中多个任务在运行一次后会退出,如何再次运行这些任务呢?

bjemt   2017-7-3 14:09 楼主
NXP提供的BLE wireless_usrt 示例程序分为下图中所示的三个版本: 捕获5.PNG 我对比看了一下:bare_metal和FreeRTOS的代码基本都是一样的,只是差了一个宏的定义: const uint8_t gUseRtos_c = USE_RTOS; /* USE_RTOS = 0 for BareMetal and 1 for OS */ 对于FreeRTOS分成多个任务好理解,多个伤务之间由操作系统来调度,但是对于bare_metal版本为什么也分成主应用任务:主任务,定时器作务,串口管理任务,系统空闲任务?如下所示是4个任务的处理函数: void App_Thread (uint32_t param) void TMR_Task void SerialManagerTask(osaTaskParam_t argument) static void App_Idle_Task(osaTaskParam_t argument) 在上面四个任务的最后都有下面一段代码: /* For BareMetal break the while(1) after 1 run */ if (gUseRtos_c == 0) { break; } 对于无操作系统的bare_metal中每个任务在运行一次后会退出(在FreeRTOS会因为没有中断while(1)而无限循环执行),而程序正常运行是需要周期性的运行这些任务,对于无操作系统的程序是如何再次运行这些任务的呢? 如果我需要增加ADC和DMA处理任务,应该如何把自己定义的任务加入主程序的循环中? 本帖最后由 bjemt 于 2017-7-3 14:18 编辑

回复评论 (9)

2推荐 shinykongcn 

前面说的文档中也有说明,中断如何添加:
Connectivity Framework Reference Manual.pdf - WPS 文字.jpg
HELLO_WATER
点赞  2017-7-9 15:23

2推荐 shinykongcn 

bm 部分的内容建议你看一下docs/common/Connectivity Framework Reference Manual.pdf 这个文档,nxp定义了一个osa 层,在源码framework/OSAbstraction/fsl_os_abstraction_bm.c 这个文件里有调度源码、任务管理的源码,按理说这个这个调度比rtos的更好理解,rtos是通过中断然后跳离当前任务,而bm则是所有任务外面一个大while循环
MCUXpresso - Develop - frdmkw41z_wireless_examples_bluetooth_beacon_bmframeworkO.jpg

所有任务按优先级排列放在一个链表里,从最前面开始执行,执行的标志为haveToRun, 如果设置等待事件,则这个标志为false,自动跳出循环,执行后面的任务,但有事件需要处理的时候,这个标志为true,在下一个调度轮回中处理。
HELLO_WATER
点赞  2017-7-9 15:19
我理解的bare_meta就是裸机,系统不包括任何底层的控制代码,只有一个优先级较低的主任务进程,各种中断可以触发中断服务进程。
但是也有人说bare_meta并不是没有操作系统,是没有开放给用户的rtos,也是有OS的。
那使用KDS V3开发的KW41Z项目,如果使用的是bare_meta,生成的代码到底有没有OS?
点赞  2017-7-3 16:13
定义个软中断, 然后用定时器触发或者main loop里触发。
点赞  2017-7-5 23:35
引用: shinykongcn 发表于 2017-7-9 15:23
前面说的文档中也有说明,中断如何添加:

发只贴科普一下。
点赞  2017-7-9 23:15
引用: shinykongcn 发表于 2017-7-9 15:19
bm 部分的内容建议你看一下docs/common/Connectivity Framework Reference Manual.pdf 这个文档,nxp定义了 ...

发只贴科普一下
点赞  2017-7-9 23:16
引用: freebsder 发表于 2017-7-9 23:16
发只贴科普一下

不玩bm,只针对性的看了一下,没仔细研究。。。。
HELLO_WATER
点赞  2017-7-10 09:05
引用: shinykongcn 发表于 2017-7-9 15:19
bm 部分的内容建议你看一下docs/common/Connectivity Framework Reference Manual.pdf 这个文档,nxp定义了 ...

谢谢您的回复,我找到了Connectivity Framework Reference Manual.pdf,之前没有看到这个文档。
点赞  2017-7-16 17:33
引用: bjemt 发表于 2017-7-16 17:33
谢谢您的回复,我找到了Connectivity Framework Reference Manual.pdf,之前没有看到这个文档。

不用客气,玩的开心就好
HELLO_WATER
点赞  2017-7-16 18:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复