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:RTOS 库查询

Guru**** 2582405 points
Other Parts Discussed in Thread: SYSBIOS, AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/632461/ccs-processor-sdk-am335x-rtos-libraries-query

器件型号:PROCESSOR-SDK-AM335X
Thread 中讨论的其他器件:SYSBIOSAM3352

工具/软件:Code Composer Studio

为什么不发布链接方式?    我需要询问多少次?

所有这些"隐藏在封面下"只是使您无法任何工具用于任何其他内容、而只能使用自己的模糊演示。

步骤:

Project | New CCS Project。

BeagleBone Black - SYSBIOS -典型值、TI 编译器...   XDC 3.32.2.25...  EDMA3 LLD...  am3352 pdk... 等等  (我不知道我是否需要 EDMA 或 PDK、但我添加了它)

现在有一个基于 SysBIOS 任务的简单示例。  构建正常...  直到您尝试向其中添加内容!

假设您需要执行所有简单的测试来使 LED 闪烁。  添加以下内容:

#include 

静态空 Board_initGPIO (void)
{
board_initCfg boardCfg;

boardCfg = Board_init_PINMUX_CONFIG |
Board_init_module_clock |
Board_init_uart_stdio;

board_init (boardCfg);

}

。。

/*
=== main ====
*/
int main()
{
Task_Handle 任务;
ERROR_Block EB;

Board_initGPIO();

并得到该错误:

未定义的第一个引用
符号 文件中
------ --------
Board_init ./main.obj 
错误#10234-D:未解析的符号仍然存在

我不知道这是在哪里链接到它。 没有任何有关此(或任何)函数的位置的文档。 您的工具不会为我将其放入项目中。  没有什么可以告诉我要添加到链接器以查找它的内容。

不要告诉我进入 Resource Explorer。  "软件| Sitara"树下的所有内容只是芯片文档和白皮书。  库函数无文档。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢您...
    以及重命名它。 我(继续)在主题行中感到沮丧。

    但这不是 RTOS 问题、是吗? Board_init()函数无论在哪里,都与 RTOS 无关。 它是某种开发套件功能... 裸机访问等。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris、

    Board_init 是电路板库的一部分、可在此处找到:

    pdk_am335x_1_0_7\packages/ti\board\lib\evmAM335x\a8\release

     在 "使用处理器 SDK RTOS 进行应用开发 "培训中概括介绍堆栈的组织方式。 (请参阅第2节和第9.1节)

    希望这对您有所帮助。

    此致、

    Rahul

    PS: SDK 文档 当前基于 Wiki、并在此处提供 API 参考指南:

    pdk_am335x_1_0_8/packages/API_Documentation.html

    根据我们收到的有关 SDK 文档的反馈、我们计划重新组织文档并提供起始模板、但该增强功能尚未集成到 SDK 中、因此我们将在遇到问题时尝试向您提供帮助。

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

    谢谢您...

    直到最近、该培训页面甚至都无法正常工作。  我与一些 Web 小组的某个人交换了许多电子邮件、试图向他们证明它不起作用。

    我也已经浏览过这个 wiki。  它不表示使用哪些函数需要哪些库、而是在实际不起作用的情况下解决"感谢 XDC、它会自动合并到您的项目中"。

    但这只是问题的一小部分。  如何根据这些"魔术"变量设置链接器搜索路径、这些变量也未进行说明?   

    TI 创建了这种表情环境、该环境应使用 XGCONF 工具自动执行所有操作、但没有什么明显的。  我已经问过我如何直接链接到 RTOS、但很显然、如果没有这个 XDC 神秘工具、你就无法使用 RTOS、而且你无法使用它添加库。  所以,我所能说的,一切都是一种鹅卵石般的混乱。

    我有几个库搜索路径、其中没有定义其中一个路径:

    "${TI_PDK_library_path}"

    "${BIOS_library_path}"

    "${CG_TOOL_ROOT}/lib"

    "${CG_TOOL_ROOT}/包含"

    那么、如果我应该以与整个生态系统应该遵循的架构一致的方式实际使用该环境、这些环境是在哪里定义的?  我应该在哪里定义这些新路径?  或者、我应该忽略所有这些神秘变量并将其组合在一起、使其变得混乱吗?  我已经在工程属性中添加了"pdk"。  但是、很显然、这不会添加库或链接器搜索路径 (它到底会做什么??)

    因为当我将其保存到搜索路径中时、现在我得到了以下结果:

    未定义 第一个参考
    符号 文件中
    ------ --------
    UART_stdioInit C:/ti/pdk_am335x_1_0_7/packages/ti/board/lib/bbbAM335x/a8/release/ti.board.aa8fg 

    我可以看到这将会发生什么情况。 它称为雪崩。  上次我询问如何链接其中一个开发包时、我在链接阶段达到了100多个未定义符号的峰值。

    我阅读了您的最后一句话。  我尝试使用的"起始模板"对修改没有很好的反应。  也不知道如何获取"模板 A"并将其与"模板 B"合并

    我希望您在"四处走动"修复文档时考虑到这一点。

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

    让我根据您在此处提供的反馈尝试并提供帮助:

    对于 XGCONF/RTC/XDCTools 的使用、TI RTOS 内核被设计成与 XGCONF 一起使用、以便可以从.cfg 文件中添加和删除 SYSBIOS 内核中的适当模块。 n`t、PDK 库是特定于器件的驱动程序、低级寄存器定义和电路板库、并不 一定需要 XDCtools、可以像任何其他库一样链接和包含它们。

    现在、让我们看一下 CCS 项目创建、看看您引用的宏。 TI SDK 使用设置环境脚本、CCS 产品发现和 pdkProjectCreate 脚本来生成 CCS 项目、创建这些脚本是为了根据您安装 SDK 的位置来获取宏定义。

    在 CCS 中创建工程时、如果要创建可与其他人共享的可移植工程、可以通过右键单击工程并转到"Build Properties"来定义类似的宏。 在属性下、您可以定义自己的变量、如 pdk_packages、如下所示:

    对于包含在 PDK 中的头文件、您只需要将${TI_pdk_library_path}添加到 CCS Build->GNU Compiler->Directories 即可

    在相对于软件包文件夹的源包含路径中:

    /* UART 头文件*/
    #include 
    #include 
    #include 

    要链接库、请转至 CCS Build -> GNU Linker-> Libraries。  添加库搜索路径:

    并 使用以下语法添加驱动程序库

    注: n`t GNU 编译器,您需要在库名称前面添加冒号,以 lib 开始,如下所述:

    http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_FAQ#How_to_create_ARM_baremetal_CCS_project_that_link_to_PDK_driver_libraries_using_GNU_Linker.3F 

    注意:电路板库、驱动程序可能依赖于其他库、因此您需要根据需要包含其他库。

    例如、电路板库依赖于 CSL、UART、i2c 和 osal 驱动程序、因此必须以相同的方式添加这些库。 开始时、我将首先创建一个项目、其中链接了所有驱动程序库、电路板和 OSAL 库、链接器将删除未使用的符号。 注意在使用 OSAL 时、您需要选择应用程序是使用 RTOS、还是适当地使用裸机和链接库。

    驱动程序库依赖于 CSL 和 OSAL、并依赖于使用电路板库执行初始化的应用程序。

    希望这能让您深入了解如何开始开发。 未来、我们计划提供一个启动模板、该模板明确链接库并避免将 XDCtools 用于器件级组件、但该模板目前正在工作 。

    如果遇到任何问题、请随时提供任何反馈

    此致。

    Rahul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的项目需要从以下库开始
    "$(pdk_packages)/ti/board/lib/bbbAM335x/a8/release/ti.board.aa8fg (Beagle 骨板库)
    "$(pdk_packages)/ti/osal/lib/rtos/am335x/a8/release/ti.osal.aa8fg (用于驱动程序与 TI RTOS 连接的操作系统抽象库)
    "$(pdk_packages)/ti/drv/uart/lib/am335x/a8/release/ti.drv.uart.aa8fg (UART 驱动程序库)
    "$pdk_packages)/ti/drv/i2c/lib/am335x/a8/release/ti.drv.i2c.aa8fg (I2C 驱动程序库)
    "$(pdk_packages)/ti/csl/lib/am335x/a8/release/ti.csl.aa8fg (CSL 驱动程序库)

    您可以添加其他库、因为您的应用需要更多功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rahul Prabhu

    我要将其标记为"已回答"。  虽然我几乎知道所有这些、但从哪个库开始的信息是新的。

    但是、我不得不放弃这一点、因为 PDK 缺少我需要的关键功能。  现在、我尝试链接到旧的 StarterWare 2.0.1.1、它实际上有一个 USB CDC 示例、但这也是火车失事。

    但这正是为什么、如果我将 PDK 添加到工程设置中、不会自动添加变量的原因。  为什么我必须自己定义它?

    或者、这些是从哪里来的、而不是从任何地方定义的呢?

    如果"AM335x_pdk"框不执行任何操作、检查该框有什么意义?