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:如何构建 NDK 3_61

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/956402/ccs-processor-sdk-am335x-how-to-build-ndk-3_61

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Code Composer Studio

您好!

我们有一个大型项目、它使用直接导入项目的 NDK 源代码。  (请不要说这是不必要的、我们必须增强它以满足某些要求)。

这是版本2_25。

我正在尝试升级到3_61。  但它会生成数百个错误。

除了显然与其他封装(CSL、OSAL、PDK、SDK、…… 等等...)、我甚至找不到 SUSBIOS 调用。

特别是原始文件:

\NDK_2_25_01_11\packages/ti\NDK\hal\timer_BIOS\lltimer.c 具有该函数

void llTimerTick()
{
#ifdef USER_LED1
LED_TOGGLE (USER_LED1);
#endif

if (TimerOpen)
{
#if DSPBIOS_enhanced
LastCLKTime = Clock_getTicks();
LastCLKValid = 1;
#endif
TimeMS +=100;
if (TimeMS >= 1000)
{
时间++;
TimeMS -= 1000;
}
STKEVENT_SIGNAL (hEvent、STKEVENT_TIMER、1);
}
} 

  C:\ti\ndk_3_61_01_01\packages/ti\ndk\hal\timer_BIOS\lltimer.c 中的新函数包含该函数

void llTimerTick()
{

if (TimerOpen)
{
struct timespec timestamp;

Clock_gettime (clock_monotonic、&timestamp);

/*以纳秒为单位保存时间戳*/
LastCLKTime =((无符号长整型) timestamp.tv_sec)* 1000000000
+ timestamp.tv_nsec;
LastCLKValid = 1;

TimeMS +=100;
if (TimeMS >= 1000)
{
时间++;
TimeMS -= 1000;
}
STKEVENT_SIGNAL (hEvent、STKEVENT_TIMER、1);
}
} 

无法   解析 clock_gettime 和 clock_monotonic 的应用。

文件#includes 但是、这是从 GCC 编译器的 Includes 文件夹中拖动的。  不是正确的。

clock_gettime 是在多个位置定义的、两个候选位置是  

  • BIOS_6_76_03_01\packages/GNU\Targets\arm\libs\install-native\arm-none-eabi\include\time.h
  • BIOS_6_76_03_01\packages/ti\posix\gcc\time.h

 至少有60个非源代码文件违反直觉、到目前为止、我无法在"TI-Interno-Speed"以外的内容中找到任何可理解的内容。   即"build.cfg"应该是开始的位置... 但仅包含以下内容:

if (pkg.$vers.length >= 3){
pkg.$vers.push (Packages.xdc.services.global.Vers.getDate(xdc.csd ()+'/.');
}

pkg.build.libraries =[
];

pkg.build.libDesc =[
]; 

它几乎没有告诉我什么。  Welcome.html 也没有什么价值。

是否有人可以告诉我如何构建搜索路径和#defines 以便在 CCS 10项目中构建该文件?   

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

    一个简单的问题:  -I include 路径在哪里定义?

    这至少可以让我开始。

    这里有数百个*。mak、*。bld、*。xml 文件以及 Java。

    启动整个过程的打开命令似乎是:

    XDC =$(XDC_INSTALL_DIR)/XDC -j $(j) XDCARGs="$(XDCARGS)" XDCBUILDCFG=./NDK_Bld 

    其中、'j'在几行之前被定义为8。

    尝试查找"XDC"命令的一些信息、很明显、'j'选项未记录在搜索时出现的唯一命令行参考中:

    software-dl.ti.com/.../Command_-_xdc.html

    TI 的搜索结果就是这样、虽然排在首位、但更旧

    www.ti.com/.../spruex4.pdf

    因此、当我在一个没有记录的迷宫中遍历数百个文件时、是否有任何文档概述显示了这种混合、自定义、专有构建系统的工作方式?

    或者、有人能否告诉我、我的 include 在这个文件迷宫中的定义位置?

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

    尊敬的 Chris:

    我在这里看到 NDK 构建说明:NDK_3_61_01_01/docs/NDK/NDK_USERS_Guide.html、1.2重新构建 NDK 库。 这将带您进入此常见问题解答 :https://e2e.ti.com/support/processors/f/791/t/947275、 它最终将带您针对 NDK 3.61进入"使用 gmake 重建 NDK 内核-德州仪器维基.pdf"。

    我尝试使用"使用 gmake 重建 NDK 内核-德州仪器维基.pdf"中的说明在 Windows 10主机上构建 NDK。 我能够构建一些存档、但这一构建并不完全成功。

    我在本练习中的目的是查看我是否可以观察提供给编译器和归档器的选项。 如果可以获得这些选项、则可以将它们移植到基于 CCS 的编译中。

    遗憾的是、命令行编译输出非常安静、不显示编译器提供的选项。 例如:

    CL 编译器输出示例:

    cla8fg slnertifndk.c……

    CL 归档器输出示例:

    归档软件包/lib/servers/package/package_ti.ndk.tools.servers.oa8fg package/lib/lib/servers/autoconn.oa8fg 软件包/lib/servers/datasrv.oa8fg 软件包/lib/servers/echosrv.oa8fg 软件包/lib/servers/newservers.oa8fg 软件包/lib/lib/nula8fg 服务器/lib/e8fg 封装...

    我不是 NDK 构建系统方面的专家、因为您可能会推测出来。 我将会看到我是否能够在内部找到一位专家。 同时、我建议您查看是否可以确定构建系统中显示命令行输出的文件、然后查看是否可以修改这些文件以生成详细输出。

    此致、
    弗兰克

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

    Chris、

    我在 NDK-MAK 中看到这一点:

    #
    #设置 XDCOPTIONS。 使用-v 进行详细编译。
    #
    #XDCOPTIONS=v
    

    我将看到它是否提供更详细的输出。

    此致、
    弗兰克

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

    Chris、

    在 NDK.MAK 中使用此选项会生成详细的命令行输出(请参阅下文)。 此输出应允许您确定要在基于 CCS 的编译中使用的编译器/归档器选项。

    # cla8fg package/package_ti.ndk.slnetif.c……
    r:/gcc-arm-none-eabi-7-2018-Q2-update/bin/arm-none-eabi-gcc -c -md -mf package/lib/slneutifndk/package/package_ti.ndk.slnetif.oa8fg.de
    std.h
    /../../ti/ndk/inc/tools p -x c -wstd -wunknown-pragma -ffunabi-sections -mcpu=mcpu_lib_modules/-dtrab_-r_-dc/dtrab-r_-r_-r_b01_at_-r_di_-out_-r_-r_-r_-r.r_-r_-r.r_b01_dc/dif_r_r_r_ate_ni_-r_-r_-r_b.e01_dc/-out_-r_-r_b.r_-r_-outi_-r_-r_-r_-r_-outi_-r_-outi_-r_-r_-outi_-r_b.ei_-r_-ni_-outs_-out /../../ti/ndk/inc -ir:/BIOS_6_76_03_01/packages -IR:/xdctools_3_55_02_22_core/packages
    -i. -ir:/BIOS_6_76_03_01/packages/GNU/Targets/ARM//libs/install-native/arm-none-eabi/include/newlib-nano -IR:/BIOS_6_76_03_01/packages/GNU/Targets/ARM//libs/install-native/arm-none-eabi/include -o packa
    gE/lib/slnertifndk/package_ti.ndk.slnetif.oa8c package/package_slnefg.ndk.slnec.ti.ntif.ti.osupt
    r:/gcc-arm-none-eabi-7-2018-Q2-update/bin/arm-no-eabi-gcc -c -md -mf package/lib/NetTool/dhcp/dhcpbild.oa8fg.dep -x c -wunused-clapragma -ffunion-fati-sections -mcpu=mcpu=m=-mcus/env_d_code_d_-d_code_nv_-d_g_-d_-d_code_nv_-g_-d_-nv_-nv_-d_code_-d_-nv_-d_code_-d_-npv_-d_-d_-d_-g_-npv_-npv_-npv_-npv_code_-d_-d_-d_-d_-d_-n_-nv_-g_-npv_code_-npv_-d_-g_-npv_-d_-n_-n_-nv_-
    
    /../../ti/ndk/inc/tools /../../ti/ndk/inc std.h
    -ir:/BIOS_6_76_03_01/packages -IR:/xdctools_3_55_02_22_core/packages -i. -ir:/BIOS_6_76_03_01/packages/GNU/Targets/ARM//libs/install-native/arm-none-eabi/include/newlib-nano
    
    std.h
    /../../ti/ndk/inc - R:/gcc-arm-no-eabi-7-2018-Q2-update/bin/arm-no-eabi-gcc -c -md -mf package/lib/os/mem.oa8fg.de/../../ti/ndk/inc/tools p -x c -wmas -wabi_unused_dc/dtrabe_se-dc/dtrabe_s=-dcp_-dc/dtrabe_se-dc/dtrabe_se-dcp_-dc/dtrads=-n_-dcp_-n_-r_-dc/dtrade_s=-ex-dc/dc/dify_r_defines=-r_-r_-dc/dc/ese_sensore_s=-r_decs/-dc/-dc/dify_r=-dify_r.e0_-r=-dc/dc/dc/dify_r.r.r.eout_-dc/dc/ese_s=-dc/ese_s=-dc/es -ir:/BIOS_6_76_03_01/packages -IR:/xdctools_3_55_02_22_core/packages -i. -IR:/BIOS 

    此致、
    弗兰克

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

    弗兰克、

    [引用用户="Frank Livingston "]

    1
    2.
    3.
    4.
    #
    # Set XDCOPTIONS.  Use -v for a verbose build.
    #
    #XDCOPTIONS=v

    [/报价]

    我想它会、但大部分会从窗口中滚出。  必须将其捕获到文件中。

    几年前、我能够将整个 NDK 2_25_01_11拖放到我们的项目中(600多个文件、数十万行)、并调整包含项和定义。 然后、我们可以根据需要修改一些小东西、还可以通过 Nimu 集成我们的一些定制驱动程序。

    现在、再次尝试这样做、会与 GNU 编译器发生冲突、与旧版 BareMetal Starterware 发生冲突、对 CPSW 文件进行完整更改...  

    没有任何文件说明这些文件的内部结构。  确定 NDK NIMU 和堆栈是一项单调乏味的手动调试任务。

    我想对于 PDK 以及更新的 NDK 所依赖的任何其他函数/文件、我也必须这样做。  因为我找不到任何有关其工作方式的文档(我不希望或需要有关如何使用它的文档)。

    您会很高兴知道我正在系统地完成 SPRUEX3。。。   但 发现了一些错误、解释性材料不足。

    (有一天、我会发布一个问题、问为什么我有一个 CCXML 文件可以完全满足我的需求、但我无法复制它...  我尝试创建的每个其他目标配置,都没有用于使其执行所需操作的设置。 )

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

    尊敬的 Chris:

    [引用用户="Christopher Weber">我认为会这样做,但其中的大部分会从窗口中滚动。  必须将其捕获到文件中。[/quot]

    同意后、我刚才这样做了:

    gmake -f NDK.mak > build_log.txt 2>&1

    此致、
    弗兰克