将 DKM 项目链接到内核映像(VIP)项目作为 VxWorks Workbench4 中的子项目/额外模块

Posted

技术标签:

【中文标题】将 DKM 项目链接到内核映像(VIP)项目作为 VxWorks Workbench4 中的子项目/额外模块【英文标题】:Linking DKM Projects to Kernel Image(VIP) project as a Sub project/Extra Module in VxWorks Workbench4 【发布时间】:2018-01-09 10:01:03 【问题描述】:

如何使用内核映像(VIP)项目链接/加载 DKM 项目,以便我可以从内核映像项目的“usrAppInit.c”调用 DKM 项目(应用程序)的入口点函数,以在启动时自动启动应用程序? 有人可以描述步骤或指向我的任何文档吗?

【问题讨论】:

【参考方案1】:
    将 DKM 项目添加为 VIP 的子项目。您可以拖放或打开 VIP 项目属性,然后从项目参考中检查您的 DKM 项目 在 usrAppInit.c 中,调用 DKM 的入口点。您可能需要包含适当的标题 根据需要修改VIP包含路径以包含头文件。 如果需要,将内核配置为使用正确的 DKM 构建目标。

使用这种方法,当您构建 VIP 时,它将首先构建子 DKM 项目(将生成 .out 文件)然后是 VIP,生成包含 .out 文件的 vxworks 映像

【讨论】:

您好,感谢您的解决方案,但不幸的是,这使得一个带有单个二进制文件的大项目成为可能。我的要求是单独拥有 DKM(.out) 并将其链接到内核映像项目,可能使用构建规范宏“EXTRA_MODULES”。我试过这个,但我收到以下错误:dld:重新声明 __dso_handle dld:重新声明 ../../INT-AC-DKM-18/CD1_AM437X_VSB_ARMARCH7diab/INT-AC-DKM-18/Debug/ 中定义的 _ctors INT-AC-DKM-18.out 和 ctdt.o dld:重新声明 _dtors 。知道如何解决这个冲突吗? 不,它还会生成 DKM .out - 检查 DKM 构建文件夹。我自己使用这个确切的过程。您遇到的重新声明错误可能是由于将 DKM 作为子项目和 EXTRA_MODULE 包括在内。您可能还需要强制内核为 DKM 使用正确的构建规范 您还需要使用 ld("DKM.out") 加载 DKM,然后将入口函数调用为 extern @Sukum 我希望这会有所帮助。如果是这样,请考虑投票和/或接受答案。如果您最终选择了另一种解决方案,您也可以发布自己的答案(如果您愿意,您可以接受)。 当我将a.ob.oc_partial.o 链接到c.out 时会发生什么... 我的VIP 应该参考什么?是否通过 Extra_Modules 包含?【参考方案2】:

此问题的另一种解决方案无需将项目组合在一起,需要将 DKM 应用程序的部分图像“.o”目标文件路径指定到 EXTRA_MODULES 宏而不是“.out”路径。例如,如果应用程序是“myApp”,则应在宏中指定“myapp_partialImage.o”路径。如果需要链接多个应用程序,可以在带有空格的宏中指定多个路径

【讨论】:

以上是关于将 DKM 项目链接到内核映像(VIP)项目作为 VxWorks Workbench4 中的子项目/额外模块的主要内容,如果未能解决你的问题,请参考以下文章

什么是内核映像?为什么嵌入式必须使用?

如何将映像传输到 Amazon EBS 卷以供 EC2 使用?

从多项目点网核心解决方案构建 Docker 映像

创建使用 yarn 链接的项目的 docker 镜像

定位 XZ 流的结尾

SBT 本机打包程序不会将文件复制到 Docker 映像