将 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.o
、b.o
与c_partial.o
链接到c.out
时会发生什么... 我的VIP 应该参考什么?是否通过 Extra_Modules 包含?【参考方案2】:
此问题的另一种解决方案无需将项目组合在一起,需要将 DKM 应用程序的部分图像“.o”目标文件路径指定到 EXTRA_MODULES 宏而不是“.out”路径。例如,如果应用程序是“myApp”,则应在宏中指定“myapp_partialImage.o”路径。如果需要链接多个应用程序,可以在带有空格的宏中指定多个路径
【讨论】:
以上是关于将 DKM 项目链接到内核映像(VIP)项目作为 VxWorks Workbench4 中的子项目/额外模块的主要内容,如果未能解决你的问题,请参考以下文章