我目前正在为公司正在开发的消费电子产品开发操作系统。我已经将freeRTOS定位为我们操作系统的骨干,并且正在努力地在OS中实现硬件功能。但是,我遇到了有关在freeRTOS中运行第三方应用程序的问题。
最初,我认为任务是一个应用程序,基本上,您拥有包含所有应用程序必需功能的“ myapplication.c”和“ myapplication.h”,并且代码将驻留在任务内的for(;;)循环内(充当主while循环)。然后,当用户决定运行该应用程序时,函数指针将传递到队列,然后我的app_launcher任务将使用该任务使用第三方任务或应用程序创建新任务。
但是,这种方法的问题在于,操作系统已经被编译并驻留在微控制器上,并且用户可以根据需要安装和删除应用程序。因此,显然需要从操作系统中编译和执行应用程序。在标准的UNIX机器上,我将使用fork之类的东西来选择可执行文件,并为其提供自己的进程。但是我无法在freeRTOS中找到类似的功能。.我的另一个想法是采用脚本语言进行应用程序开发,但是我不确定如何启动这些应用程序。
因此,问题是,如何从尚未加入OS的第三方开发人员那里获得freeRTOS来运行应用程序?
根据要求,这是我发现问题的解决方法。问题是从freeRTOS启动其他应用程序。这是通过利用newlib库中的“ System()”函数完成的。因此,我可以将应用程序放入闪存中,直到需要它为止,然后使用提供的newlib函数启动它。这也使我能够动态启动程序,而无需对应用程序的代码或名称进行硬编码,我只需要向System()提供一个字符串,指向该应用程序在内存中的位置即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句