This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/PROCESSOR-SDK-AM335X:包含和库文件位置

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/602304/ccs-processor-sdk-am335x-include-and-library-files-location

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Code Composer Studio

从 CCS 6.1开始、一个连接到 Backhawk V100的 BBB……  我使用向导创建一个简单的"Hello"项目。  (由于一些浮点问题、编译失败... "vfpv3" 我修复了该问题)。

我编译、加载、调试它。  没问题。

该项目还包括 PDK AM335x 1.0.5和 NDK 2.25.1.11 (是的、我添加了它们、希望能开始学习这些套件)。   因此、我决定在小测试项目中添加一些 GPIO。  

我正在使用唯一可以找到的文档: "c:/ti/pdk_am335x_1_0_5/packages/API_Documentation.html (缺少它...)

我添加一个简单 的#include 。  不。  找不到该头文件。  我开始挖掘...  

我有一个已定义的变量: com_TI_pdk_install_DIR、指向 C:\ti\pdk_am335x_1_0_5。   但这并不是头文件所在的位置、而是更深的位置。  然而、为了使事情复杂化、 "预定义变量"(或任何 CCS 调用它的变量)无论如何都不在我的包含路径中。  我的包含路径中唯一的一个是 "${CG_TOOL_INCLUDE_PATH}" 、只是它未在"链接资源"选项卡的任何位置定义。。。?????  这里发生什么事了???

第一个问题: 头文件在哪里、它相对于这些"链接的资源"如何"正确"包含?  当所有已定义的宏都不匹配传递给编译器的包含路径时、应该如何找到它?  这些"链接资源"如何结合在一起。  因为我已经阅读了 CCS 教程、这就是我应该如何发挥作用的印象。

接下来、我进行搜索、对该文件的路径进行硬编码、以便进行编译。  然后、我从文档中添加其中一个 GPIO 调用(您可以想象它将在哪里...)  接下来、当然、链接器也无法找到它。 我获得了一个"对`GPIO_init'的引用未定义"

下一个问题: 包含此调用的库在哪里?  库名称是什么?  

文档文件 "C:/ti/pdk_am335x_1_0_5/packages/API_Documentation.html "完全没有说明这些头文件和库的位置、甚至是库文件的名称。  它对这些功能本身几乎没有作出充分的解释。

而且、由于我发布这个问题、因为文档如此缺乏...  在期望 NDK 套件会出现相同的问题时、是否有人还能回答有关 NDK 的问题?

因为这些都不像"正常"项目那样适合在一起、就像我在过去25年中使用 makefile 构建的项目一样。

最后一个问题:是否有一个真正的文档解释了在使用 PDK、NDK (或我将来可能尝试的 xdias、UIA 或其他套件)时要链接到哪些库?

-CSW

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Christopher、

    有关 Processor SDK RTOS 的文档,请访问:

    首先、我将介绍设置 SDK 的入门指南、然后按照说明操作、直到介绍外设驱动程序示例的创建部分:

    使用 pdkProjectCreate 创建 GPIO 驱动程序示例并将其导入 CCS、以了解如何设置 TI RTOS 配置以包含板、OSAL 和 GPIO 驱动程序。 对于 NDK、您需要为名为 Nimu 的组件创建示例项目 (在"网络部分"下找到文档)。

    简而言之、要使用 Processor SDK RTOS 构建 GPIO 示例、您需要在 RTOS 配置文件中添加以下模块:

    /*========================= 驱动程序配置=================== //
    
    //*加载 OSAL 包*/
    var osType ="tirtos"
    var OSAL = xdc.useModule('ti.osal.Settings');
    OSAL.osType = osType;
    
    /*使用 CSL 包*/
    var socType ="AM335x";
    var sul = xdc.loadPackage ('ti.csl');
    Csl.Settings.deviceType = socType;
    
    
    //加载电路板封装*
    / var Board = xdc.loadPackage ('ti.board');
    board.Settings.boardName ="bbbAM335x";
    
    //加载 GPIO 封装*/ gpio.loadPackage ('ti.loadPackage'
    
    );var = enable.load.gpive.gpio.package.true.gpive.gpio.apage="var.load.load.gpio.load.load.package" 

    这将连接应用中的 GPIO 驱动程序、CSL 库、电路板库和 osal (OS 抽象库)。 所需的 GPIO 头文件可位于以下位置:

    pdk_am335x_1_0_5\packages/ti\drv\gpio

    我建议您浏览介绍"使用 Processor SDK RTOS 进行应用开发"的培训、其中的软件堆栈和设置步骤已在逻辑流程中进行了介绍、这可能有助于您了解软件堆栈。本培训使用 X15或 AM572x GP EVM、但使用 概念也适用于 AM335x 器件。 一些与 SDK 相关的常见问题已在 Processor SDK RTOS 常见问题解答中解决

    希望这能帮助您快速入门。

    此致、

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rahul、

    感谢您花时间回答问题。  我已经搜索了很多这些链接、但它没有回答我的问题。

    但是,首先,让我说,在再次浏览一些链接后,没有任何东西解释我要寻找的东西。  我将其粘贴到中、它会将编译失败更改为其他内容。

    [引用用户="Rahul Prabhu"]

    简而言之、要使用 Processor SDK RTOS 构建 GPIO 示例、您需要在 RTOS 配置文件中添加以下模块:

    /*========================= 驱动程序配置=================== //
    
    //*加载 OSAL 包*/
    var osType ="tirtos"
    var OSAL = xdc.useModule('ti.osal.Settings');
    OSAL.osType = osType;
    
    /*使用 CSL 包*/
    var socType ="AM335x";
    var sul = xdc.loadPackage ('ti.csl');
    Csl.Settings.deviceType = socType;
    
    
    //加载电路板封装*
    / var Board = xdc.loadPackage ('ti.board');
    board.Settings.boardName ="bbbAM335x";
    
    //加载 GPIO 封装*/ gpio.loadPackage ('ti.loadPackage'
    
    );var = enable.load.gpive.gpio.package.true.gpive.gpio.apage="var.load.load.gpio.load.load.package" 

    [/报价]

    现在我得到了该错误:

    未定义对`GPIO_config'BBBSample行89的引用、外部位置:\home\gtbldadm\processor-sdk-rtos-krogoth-build\build-Cortex_1\arago-external-linaro-toolchain\work\AM335x_EVM-linux-tiseabi\gpi-ld-rtos\build\rgpio-rgmd-rgmc\rgpio-rgpio-r0.3\rmc\r+rgpio\r00.01.03.c\rmc\gpio_c\rgpio_c\r
    

    这是一个未解析的引用、即使在我的示例项目中也不是如此。  我的示例甚至不会调用"GPIO_config"。  显然、库中的"gpio_drv.c"正在调用此函数、因此我还需要另一个库来解析它。

    但更基本的问题是:你如何知道这些"XDC"是什么?  在我必须查看的30多个 PDF 文件和几个小时的视频中、我没有向我解释过这一点。

    [引用用户="Rahul Prabhu"]

    所需的 GPIO 头文件可位于以下位置:

    pdk_am335x_1_0_5\packages/ti\drv\gpio

    [/报价] 
    是的、我在那里找到了它们。 我无法理解的是编译器是如何在那里找到它的。 我使用过编译器多年、完全了解 include 搜索路径。 包含路径中只有一个设置:




    它是一个宏值、甚至未在路径变量中的任何位置定义:


    因此、有一些隐藏的魔法允许编译器知道搜索头文件的目录。 同样、在我发现的任何地方都没有解释该设置。

    [引用用户="Rahul Prabhu"]

    我建议您浏览介绍"使用 Processor SDK RTOS 进行应用开发"的培训、其中的软件堆栈和设置步骤已在逻辑流程中进行了介绍、这可能有助于您了解软件堆栈。本培训使用 X15或 AM572x GP EVM、但使用 概念也适用于 AM335x 器件。 一些与 SDK 相关的常见问题已在 Processor SDK RTOS 常见问题解答中解决

    [/报价] 

    这两个链接只需转至一个页面、其中显示:
    遗憾的是、您请求的页面不再存在。 请使用上面的搜索表找到您感兴趣的信息。 
    
    

    [引用用户="Rahul Prabhu"]

    Processor SDK RTOS 入门指南-德州仪器维基
    processors.wiki.ti.com

    [/报价]
    我已经完成了这些构建...  我唯一理解的是它构建了外设库。  这不能解决它们位于何处或如何告知链接器链接到它们的问题。  显然、这是通过您在上面提供的 app.cfg "XDC"设置来完成的、但这些设置没有以我可以找到的任何方式进行记录。
    (通过这种方式、基于 GUI 的应用程序配置工具无法正常工作、因此我完全不想尝试手动添加内容...  XGCONF 只是告诉我:
    "抱歉、我在创建此编辑器时遇到问题。 抛出意外异常。
    org.eclipse.rtsc.xdctools.invalid_CodeGen_location:无效的代码生成位置" 

    )

    我导入了一个"GPIO_LedBlink_bbbAM335x_armTestProject"示例 、并生成了该示例(带有几个警告)。   它的 am335x_app_bbbam335x.cfg 文件的大小是我创建的基于"向导"的项目的两倍、并且有许多内容与我创建的基于"向导"的项目不重叠。  花了几个小时尝试比较 GPIO_LedBlink_bbbAM335x_armTestProject (哪些链接)和我尝试将 GPIO 添加到的基于向导的工程之间的设置。
    要提前回答、您的问题"为什么不只使用示例..."。  因为未来的某一天、我将要添加其他内容、例如 I2C、NDK 或谁知道什么。  如果我无法将 GPIO 库简单添加到向导创建的项目中、我不相信我可以将其他一些库(或者我想您的 TI 人称之为 RTSC)添加到项目中。
    (此外、该示例是一个混乱的情况。  它使用更多的#ifdef 作为实际代码、即使通过它调用"BIOS_start"也不使用任何"任务"、并且定义了一些函数、但从未调用过...?  我不能告诉你。  没有"TimerIntRegister"函数来注册计时器事件,就像在 TivaWare 库中一样)
    最后:

    [引用用户="Rahul Prabhu"]

    有关 Processor SDK RTOS 的文档,请访问:

    处理器 SDK RTOS 软件开发人员指南-德州仪器维基
    processors.wiki.ti.com