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.

[参考译文] RTOS/AM3352:简单地放置... NDK 在哪里?

Guru**** 2013480 points
Other Parts Discussed in Thread: SYSBIOS, AM3352, CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/564598/rtos-am3352-simply-put-where-is-the-ndk

器件型号:AM3352
Thread 中讨论的其他部件:SYSBIOScontrolSUITE

工具/软件:TI-RTOS

正如我所尝试的一切一样,没有任何与文档中的任何内容相匹配的内容。 我的目标是评估 AM33xx 的 NDK、最初是使用 BeagleBone。

NDK 文档 SPRU523J 明确指出:

"要安装 TI-RTOS (包括 NDK)、请在 CCS 中选择 View > CCS App Center。 单击 Code Composer Studio 附加组件的"查看更多"以查看所有 TI-RTOS 目标版本。  (第10页、第1.2.1节)

在我的 CCS 6.2应用中心中没有任何类似的东西。  当我尝试搜索时、它会将我带到 SYS/BIOS、我已经下载并安装了 SYS/BIOS。  那么、人们会假设安装了 NDK、对吧? 否

该文档显示"为中构成 NDK 的每个库提供了预构建的可链接库和源代码 \packages/ti\NDK 目录树。" (第13页、第1.3.3节)

我在 C:\TI\BIOS_6_46_02_47文件夹中搜索了 SYSBIOS 树、尽管上述声明声称 NDK 安装在名为"...\NDK..."的文件夹中、但没有任何关于 NDK 的内容。

这是在1月2106日修订的文档...  嗯。

我的问题:

1、实际 NDK 在哪里?  搜索会将我转到非常旧的帖子和链接。  我找不到任何东西会实际下载它。 尽管有文档、但它不在 CCS 应用程序中心。

2、当所有文档都不准确时、有人如何研究、学习和提出建议?  我的状态报告基本上是"仍在尝试查找正确的材料、因为文档不准确"。

我会在 NDK 论坛中提出这个问题... 如果有一个、但 Web 菜单上没有显示任何内容。  之前的帖子已发送到 TI-RTOS 论坛、但它们也不会出现在菜单上。  因此、我只剩下在这里提问。

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

    Christopher、

    NDK 不包含在 SYS/BIOS 内核本身(您已安装)中,而是一个单独的组件,它通常与内核(以及引导实用程序、芯片支持库、示例等其他软件组件)捆绑在 SDK 中。   

    对于 AM3352、您应该下载适用于 AM335x 的 Processor SDK、该 SDK 将此器件系列的内核、NDK 等捆绑在一起。  您可以通过以下链接下载 SDK: http://www.ti.com/tool/PROCESSOR-SDK-AM335X

    RTOS 变体的顶级软件开发指南位于此 wiki 页面上: processors.wiki.ti.com/.../Processor_SDK_RTOS_Software_Developer_Guide

    其中包括不同组件及其文档的链接、例如 :processors.wiki.ti.com/.../Processor_SDK_RTOS_NDK

    如果您找不到您要查找的内容,请回复…

    谢谢、
    Scott

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。
    作为对将来可能进行搜索的其他人的警告、请不要回复这些链接。 我目前下载了十几个内容、因为我使用了较旧的链接、包括不到一年前的"旧"链接。 例如、我坐在"starterware"文件上。

    此链接指向 AM 335x 的版本03.02.00.05。。。 但我一直在收集的8+ gig 下载内容中被埋没了,显然我也有03.01.00.06版。

    但文件命名惯例并不能让我了解它是什么。 它显示"SDK"、但没有明确定义将"SDK"与"controlSUITE"和"Sys/BIOS"... 因为所有文档都显示“Sys/BIOS”,现在是整个体系结构的名称。 因此、与我的"starterware"文件一样、这些文件似乎已被弃用。 我曾以为我已经在"Sys/BIOS"或"controlSUITE"中获得了它、但奇怪... 我没有。

    我猜、但显然 controlSUITE 具有芯片的寄存器定义、而 SYSBIOS 具有一组用于计时器矢量、软件矢量、创建空闲循环等的库、这些库将构成底层操作系统、这就是他们所称的 RTOS。 然后、我想 SDK 主要用于网络、但不适用于 I2C、UART 和 SPI。。 这个位于 controlSUITE 中。

    我希望有一个全面的组织结构图来说明这些软件包的功能。

    我已经安装了"controlSUITE 3.4.4"、它是一个1.9 gig (!!) 安装程序 EXE、但显然没有 NDK。
    现在、由于安装了"较新的"NDK、并且具有"较旧的"SYSBIOS。 它安装了6.46.01.38、但我已经安装了6.46.02.47。 我不知道它是否覆盖和破坏了我的 controlSUITE 文件夹的任何内容、因为没有任何内容提到它的版本、就像其他人一样。

    当我安装某些组件时、CCS 会发现它并将其整合在一起(不知怎么... 我不知道如何操作)。 非常棒。 但是、如果我要卸载它该怎么办? 您会认为仅仅删除文件夹会严重影响 CCS 安装... 会吗?

    出于完全的担心、我会不断安装"一切"、否则可能无法正常工作。 现在、这正占用大量磁盘空间(13 + gig)、仅用于两个芯片、价值极高的块。

    我在此的参考点是我使用 Microchip 器件和工具18年的经验。 相比之下,这种情况令人痛苦。

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

    Christopher、

    我刚刚体验了 CCS App Center、并看到在 CCS 6.2版本(9月)之前、TI-RTOS 版本显示为供下载、如您参考的 NDK 文档中所述。  我不知道为什么在6.2中进行了更改,但会提交一个错误报告,以更新文档或将其添加回应用程序中心(如果应该显示在那里)。  感谢您报告此问题!

    但我仍在尝试了解您最终如何安装其他安装...

    您从哪个版本的 Starterware 开始?  我看不到您下载 controlSUITE 的任何内容,它仅适用于 C2000 MCU。  如果我通过 Google 搜索“Starterware”,我将看到 StarterWare TI Sitara 处理器页面(www.ti.com/.../starterware-sitara),该页面指向 AM335x 的处理器 SDK。

    您是否可能是根据 CCS 中显示为可用软件的内容来安装产品?  请您澄清一下吗?

    谢谢、
    Scott

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

    Scott、

    感谢您的关注、获得一些帮助让人放心。  我做了一些不有序的事情。  那么、这是我的长故事...

    由于 CCS 的试用时间有限、我希望在开始时钟之前先安装文档、教程、安装和实际的物理硬件。

    后来、当我看到 Eric Wilbur 的视频并解释了 CCS 的许可时、我继续安装了它。  但在此之前、我查看过 Wiki、论坛、下载 PDF 以及我可以获取的任何其他材料。  下载论坛所指的内容、其中许多内容我都是旧的。  我实际上从未安装过 Starterware、它只是其中的一个下载。

    我的目标是为 AM3352提供概念验证。  我了解到 BeagleBone Black 使用同一个系列的 CPU、因此我正在努力实现这一目标(我有一个 Blackhawk 在与我通话以将他插入...  但我正在等待一个接头焊接到 BBB 板上、以便我可以连接 JTAG)。

    但是、Eric Wilbur 的视频还说他没有介绍 Sitara 系列(许多不同的名称、都很令人困惑)。  确实说过,视频和实验室介绍了 C28x (即 TMS320F280xxx? 还有一个 C2000... 更多的混淆)、因此我认为这是一种学习 CCS 和工具的好方法。 我从未使用过 JTAG、因为 Microchip (我近20年的工作经验)在我使用的任何器件上都没有该接口。

    我进行了搜索、选择了 Piccolo Launch XL 板... 运算。  实验室手册中未包含有关该手册的详细信息、也未包含样片。  接下来、我在论坛上抱怨说、安装 CCS 后、没有为器件定义 GPIO 的头文件、所有这些样本由于缺少头文件等而无法编译。  我被指向 ControlSUITE 以填补这些空白。  现在、我在控制套件内部看到、头文件和库的所有"device_support"都有版本号、但也有"development _kits"中的某些版本号的副本... 有什么区别、它对任何事情都至关重要吗?  我不知道、也没有发现任何细节。

    收到 Piccolo 并开始开发后、我发现我在挖掘和实际操作过程中发现的所有冲突信息、信息缺口等。  有些是不完整的信息、有些是非常旧的信息、其他问题在我向自己教授时会出现。  我有很多软件包、我提前下载了、但我没有安装所有软件包。  然后、我发现 CCS 为您管理所有这些内容。  好的。  但我发现 CCS 实际上并未设置其中的许多内容、只是下载它们、您必须将它们解压缩并放入"TI"文件夹、或者运行它们的安装程序。  现在 CCS 已经下载了我已经下载的其他版本。

    这是一个巨大的挑战。  我花了5天以上的时间尝试弄清楚如何让我的 Piccolo 以不受约束的方式运行代码。 显然、引导 ROM 通过一个例程来决定从何处引导、然后(一个选项)将其引导至闪存(在 sprufn6a 中进行了解释)... 但是、无法让 C 编译的目标代码将入口点设置到引导 ROM 指向的该地址。  七个 PDF 文档之后、在 spra958l 的第6章中、我发现它:一个*。asm 文件来声明标签并设置跳转。  被埋葬在2013年1月的一份文件中,其中包含几十张与我没有任何匹配的屏幕快照...  我曾接受过这样的培训、将这些类型的文档忽略为不正确的、因为它们太旧了。  (还有... 我的一个项目需要*。asm 文件、但有一个项目不知道为什么需要该文件)。

    我想 JTAG 调试器会绕过所有这些内容、并强制程序计数器始终将编译器设置为"_c_int00"。

    顺便说一下、我无法设置任何断点。  我收到一个错误、表示所有这些错误都已被使用(资源不足)。  但我从未设置任何...? 我想调试器已经将它们全部用于自己?

    所以,这是我的圣诞假期:-)

    谢谢!

    Christopher Scott Weber

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

    您好、Christopher、

    很抱歉耽误你的时间。  感谢您详述您的艰难旅程。  TI 在全球拥有多个业务部门、多个器件系列和每个业务部门内的许多不同器件、以及在这些业务部门之间共享的许多软件组件。  软件组件的捆绑和发布随着时间的推移而发生变化、并且在不断发展。  因此、一些较旧的文档可能会根据最近的捆绑包提供冲突信息、例如与安装和默认位置相关的信息。  我们将转向 SDK 模型、以使这一切变得更简单、更一致、例如新的 Processor SDK。

    以下几点:

    [引用用户="Christopher Weber"]

    (还有... 我的一个项目需要*。asm 文件、但有一个项目不知道为什么需要该文件)。

    [/报价]

    我想知道这是否是因为闪存中的跳转例程从一个应用程序中持续存在,而另一个应用程序不需要它作为应用程序映像的一部分?

    [引用用户="Christopher Weber"]

    顺便说一下、我无法设置任何断点。  我收到一个错误、表示所有这些错误都已被使用(资源不足)。  但我从未设置任何...? 我想调试器已经将它们全部用于自己?

    [/报价]

    允许的断点数量会因器件而异。  我希望您至少有一个可用的(除了调试器在加载时可能放置在 main()以用于 Go to main()功能的一个外)。    如果您尚未看到它、请在以下位置对 C28xx 断点和配置进行一些说明: http://processors.wiki.ti.com/index.php/Hardware_Breakpoints_and_Watchpoints_for_C28x_in_CCS

    希望这对一些人有所帮助。

    谢谢、
    Scott

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

    您好、Scott、

    我查看了有关断点的特写。 这里没有什么新东西,这是我以前做的。  数十年来、我一直在调试 Windows 和 Linux、Microchip PIC 大约有15年以上。  尽管观察点非常酷(在 Windows 中完成、但它会使调试速度减慢得令人震惊)。

    新的是、突然、我可以设置它们。  认真地说、我不知道为什么我以前会遇到错误、但这些项目的最新版本、例如 CCS、不会让我失败。  总之、我想这是件好事、但我很想知道发生了什么变化。

    嗯、这里是自举的问题、我已经解决了、但不知道它为什么起作用、或者不起作用。  

    两者的启动方式相同(sprufn6a 和 SPRS902C): 从0x3F FFC0处矢量地址引导、该地址被复位。  然后、在完成引导 ROM 后、最后出现一个条目
    位于0x3F 7FF6处的闪存中的点。 到目前为止还可以……

    这两个器 件似乎都需要一个名为"codestart"的标签、该标签位于0x3F 7FF6、此地址称为闪存入口点。

    两个项目、都是从示例中获取的...:
    "Example_LaunchPagesDemo"       |"任务28"是的一个示例项目
    是随    |使用 Sys/BIOS 中的"任务"提供的代码
    LaunchPad              |使用单个 C 文件、和
    使用单个 C 文件、以及指向  driverlib.lib 的链接|链接
    要 driverlib.lib、IQMath.lib   |我构建它、加载它并运行它
    和 rts2800_ml.lib          |没问题。
    我重建并加载它、没有 prob。   |

    在我将两个项目的代码下载到闪存后、左侧的代码在下电上电后运行、右侧的代码不运行。  

     这两个测试是完全一样的: 下载编译的代码、请参阅它运行到 CCS、停止调试、拉动 USB 线路、然后将其插回(或将其插入到单独的 USB 电源适配器中)。

    这只有在编程过程中没有将地址0x3F 7FF6的入口点实际设置为 "_c_int00"或"codestart"时才有意义。 我深入了解了"cmd"文件...

    左侧的不会在任何位置定义条目地址。 它使用一个从示例链接的名为"F2802x_Headers_nonBIOS.cmd"的提供文件。

    右侧的一个将其定义为(省略的其他内容):

    begin   :origin = 0x3F7FF6,length = 0x000002/*  用于“引导至闪存”引导加载程序模式。 *
    codestart      :>开始   页= 0

    (我会上传项目、但几乎每个文件都链接在一起、这意味着解析每个文件的实际位置、更改其属性等。)

    "diverslib.lib"文件似乎有一个标记为"codestart"的点、该点应满足要求。 但它不会。  左侧的工程甚至不会在链接器命令文件中定义"codestart"。

    我可以在下电上电后使右上角的文件运行、方法是还包含一个名为 boot.asm (spra958l)的文件、该文件定义了标签"codestart"并跳转到"_c_int00"。。。。 全部三行。  好的,这是有道理的(为什么我不能定义"_c_int00:>开始页= 0" 并且具有相同的效果?)。  没有意义的是、左侧的工程在没有"boot.asm"的情况下工作的原因。

    请记住、这些是原始的、未经编辑的、导入到 CCS 中的示例支持项目。

    不知怎么说、someway、左侧的项目 正在正确设置该入口矢量、我可以在映射文件中看到它。 但我不知道它是什么定义的。

    我最终会明白这一点、因为我是一个令人厌恶的触发器。

    但我的沮丧是、为什么我必须挖掘...? 不应该提供教程、文档等。回答这个简单的问题吗?  

    在你的空闲时间考虑一下它:-)

    -CSW

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

    实际上、考虑"已链接"文件、它们应该与几乎任何安装相关、因为它们是从"device_support"中链接的。

    我压缩了这两个文件、并将它们连接在一起。  以支持我在上述答覆中的讨论。

    e2e.ti.com/.../8547.A_5F00_TaleOfTwoProjects.zip

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

    您好、Christopher、

    很抱歉、我花了这么长时间才回到这个问题。  

    我看了这两个项目,我认为演示项目中不需要显式.asm 文件的原因是…  它们使用不同的 driverlib.libs;演示项目使用的 driverlib.libs 具有 codestart、而任务28项目使用的 driverlib.libs 显然没有。  我不知道为什么这些 driverlibs.lib 不同。

    演示项目从文件 F2802x_asmfuncs.obj 中获得 codestart:

       /Flash/Example_F2802xLaunchPad_demo.map:                 003f7ff6   00000002    driverlib.lib:F2802x_asmfuncs.obj (codestart)

    使用的 driverlib 是

       C:/ti/controlSUITE/development_kits/C2000_LaunchPad/f2802x_common/lib/driverlib.lib

    task28项目使用不同的 driverlib:

       C:/ti/controlSUITE/device_support/f2802x/v222/f2802x_common/lib/driverlib.lib

    这个没有 F2802x_asmfuncs.obj 或明显是 codestart,因此需要项目中的 boot.asm 来提供该文件。

    再说一次,我不知道这里的历史,也不知道为什么这些 driverlibs 在这方面是不同的。  这是奇怪的,我想你试图弄清楚是非常令人沮丧的。  :o/

    此致、
    Scott

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、就像我想点击"验证答案"一样、我还不能。
    我已经怀疑缺少"codestart"符号、因为它是从不同的位置链接的。 因此、由于我没有一个用于分解库文件的手指提示工具、我只是在文本编辑器中打开了它。 因为我知道链接器将*拥有*来解析符号名称。 几周前我实际上做了这个...
    (我知道文本编辑器对于编译的目标代码是无用的、但如果符号名称在那里、让我看看它是一种快速的解决方案)。

    两个库文件中都有一个名称"codestart"。

    接下来、就在现在、我启动了一个 Linux VM、移动了文件并对库执行了"ar"转储。 两者相同、两者均未显示"codestart"。 它必须埋在我们看不到的“asmfuncs”中。

    接下来、我将项目更改为使用中的 DriverLib
    "C:\ti\controlSUITE\development_kits\c2000_LaunchPad\f2802x_common\lib\driverlib.lib"。 然后我删除了提供"codestart"符号的"boot.asm"文件。 然后我重建了它。 从逻辑上讲、这意味着它从库提供"codestart"符号。 但不会

    因此、无论我使用哪个 driverlib、它似乎都不是在"codestart"中进行编程
    我还得出结论、在两个版本的 driverlib 中都可能存在"codestart"、并且与任一版本的链接仍然无法提供项目中缺失的"codestart"入口点、该入口点正在发生故障(我必须提供 boot.asm 文件的入口点)。

    接下来、我可以在映射文件中看到库正在为"示例..."提供"codestart" 如您的回复所述。
    而在坏项目上(task28...") 无论库文件 I supply 如何、都不会导入符号。

    这样就会打开一个新问题:告诉工程导入"codestart"符号的设置在哪里? 因为我现在假设如果可以应用该设置、我不再需要 boot.asm 文件。

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

    阿尔法里···  这是我找到的内容。

    在 Project | Properties...下  在 C2000 Linker、Advanced Options、Symbol Management 下、您将"Specify program entry point for the output module"设置为"code_start"

    (至少这是 CCS 6.2下的内容。  了解未来版本的人...)  请记住为"Debug"和"Release"配置设置它。

    我找到的文档告诉您创建一个符号为"codestart"的 asm 文件、并设置 cmd 文件。  但"driverlib.lib"的符号名为"code_start"。。。  不要把它们弄糊涂了:-)

    所以:  

    1. 将内嵌在"driverlib.lib"中的符号"code_start"、很可能是任何版本、您可以在项目属性中指定它
    2. 构建过程每次都会创建一个新的 makefile 文件、将"entry_point"指定为 makefile 内部的 CODE_START
    3. 链接器从 "driverlib.lib"导入该地址、并为其分配一个恰好与标有"BEGIN"的 cmd 文件中的地址匹 配的地址(它如何知道如何匹配这些地址?)

    然后、我会收到以下警告:

    警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段"codestart"
    警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"ramfuncs"
    警告#10063-D:指定了"_c_int00"以外的入口点符号: "code_start"

    第一个和第二个警告: 谁告诉它创造这些?  我已将其从 CMD 文件中删除。 我正在解析所有其他 make 文件、脚本等...  找不到任何对它的引用。  但生成的"...LinkInfo.xml "显示了一个 codestart 符号和一个相当任意的地址 :0x3d7804。  为什么?  它来自哪里?

    第三个警告: 嗯、是的、是的。  我将其从"_c_int00"更改为"code_start"。  那么为什么链接器可以找到"code_start"并将其分配到正确的入口点、但却找不到"_c_int00"呢?  (顺便说一下,一个入口点无法看到它如何将它连接到 CMD 文件标签"BEGIN")

    好像我在这里失去了土地...  对正在发生的情况了解更少...

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

    您好、Christopher、

    同样,很抱歉,我的回答很慢,我已经不在办公室了。

    我想解决一些有关 codestart 的神秘问题,在这些不同的情况下,最好在 C2000微控制器论坛中启动新的线程。   就 NDK 在哪里,我们从最初的问题中得到了很大的解决。

    对于*TI-RTOS*应用程序,我们通过一个特殊的“引导”模块提供了一种机制,允许 TI-RTOS 应用程序从闪存引导。  在这里、我们明确地发出汇编代码、以便在从闪存引导时跳转到应用程序入口点。  我认为这最终可能是您所需要的。  您可能会对查看新信息有所了解、但此处有一个简短的说明: processors.wiki.ti.com/.../BIOS_for_the_28x

    是否要为此打开一个新线程、其中 codestart 来自问题?  我认为您最终希望在 AM3352上运行、但我不清楚您是否要继续使用 Piccolo Work…

    此致、
    Scott