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

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

【问题讨论】:

    标签: c++ c vxworks rtos wind-river-workbench


    【解决方案1】:
    1. 将 DKM 项目添加为 VIP 的子项目。您可以拖放或打开 VIP 项目属性,然后从项目参考中检查您的 DKM 项目
    2. 在 usrAppInit.c 中,调用 DKM 的入口点。您可能需要包含适当的标题
    3. 根据需要修改VIP包含路径以包含头文件。
    4. 如果需要,将内核配置为使用正确的 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”路径。如果需要链接多个应用程序,可以在带有空格的宏中指定多个路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2017-07-25
      • 1970-01-01
      相关资源
      最近更新 更多