![]() |
1
13
仅在6.0版本VXWorks之前 支持任务的内核执行环境,但不支持 进程,这是传统的应用程序执行环境 在像Unix或Windows这样的操作系统上。任务的入口点是 要作为任务执行的代码的地址。此地址对应于 C或汇编功能。它可以是一个名为“main”的符号,但是 是C/C++语言关于主函数(不)的假设 在内核环境中支持(特别是传统的 处理argc和argv参数)。此外,在 VXWorks6.0,所有任务执行内核代码。你可以想象内核 作为一个共同的代码存储库,所有代码都链接在一起,然后您将看到 不能有几个相同名称的符号(“main”),因为 这将导致名称冲突。 现在,只有将应用程序代码链接到 内核映像。如果要下载应用程序代码,则 模块加载程序将接受加载多个模块,每个模块都有一个主模块()。 例行公事。但是,系统中注册的最后一个“主”符号 符号表是唯一可以通过目标shell访问的表。如果 要开始执行第一个加载的代码之一的任务 模块您必须使用前一个主模块()的地址 功能。这是可能的,但不方便。远不止如此。 为任务的入口点指定不同的名称(可能是 就像“xxxstart”,其中“xxx”是一个对任务有意义的名称 应该是的)。 从VxWorks6.0开始,操作系统支持一个流程环境。这个 这意味着,除其他许多事情外,您可以拥有一个传统的main()。 例行程序,其argc和argv参数已正确处理, 并且应用程序代码是在上下文(用户上下文)中执行的 这与内核上下文不同,因此确保 应用程序代码(可能很脆弱)和内核之间的隔离 代码(不应该是片状的)。 衬垫 |
![]() |
achoora · 如何使用内置函数而不是空检查来验证指针? 8 年前 |
![]() |
Dmitry Chirkin · vxWorks内核外壳功能 9 年前 |
![]() |
Ajoy · 调用taskSpawn()块,直到派生的任务完成 10 年前 |