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/AM4376:RTOS 编译错误

Guru**** 2923960 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657806/ccs-am4376-rtos-compilation-errors

器件型号:AM4376
Thread 中讨论的其他器件:SYSBIOS

工具/软件:Code Composer Studio

您好!

我已经为 AM437x 入门套件完成了一个应用、该应用程序使用以下项目和版本进行了良好的编译、没有错误:

 

CCS 7.2

GCC ARM 编译器4.9.3

PROCESSOR_SDK_RTOS_AM437X 04.00.04

AM437x PDK v1.0.7

BIOS 6.46.05.55

xdctools 3.32.02.25_core

电路板:AM437X 入门套件

 

最近、我收到了一台新计算机、然后再次安装了 PDK。 此新机器上安装的 PDK 版本为04.02.00.09。  导入在最后一个版本上完成的应用程序并对其进行编译后、会出现一些与 gmake 相关的错误。 下面是显示错误消息的控制台副本:

 

xdctools_3_50_03_33_core\gmake.exe:***[package/cfg/app_pa9fg.xdl]错误1

JS:"c:/ti/xdctools_3_50_03_33_core/packages/xdc/tools/Cmdr.xs、第52行:错误:xdc.tools.configuro:由于先前的错误(状态= 2)、配置失败;已删除'linker.cmd'。

gmaking[1]:***[Build-1811057185-InProC]错误1.

gmake:***[build-1811057185]错误2.

gmake[1]:离开目录'C:/ALSTOM/DSP/CED2/SRC/Teste_Board/Debug

subdir_rules.mk:9:目标'build-1811057185'的配方失败

gmake:目标"全部"不会由于错误而重新生成。

 

****构建完成****

 

看到这些错误后、我开始删除应用程序的某些部分、以尝试发现问题所在的位置。 我意识到、当我删除*。cfg 归档文件的某些特定部分时、错误消失。 为了更加准确,当我删除与调用 XDC 路径的 NDK 配置和函数处理相关的*。cfg 行时,上面显示的错误将消失。

 

我正在根据 PDK 的发行说明使用这些项目版本。 下面列出了在编译应用程序时安装和使用的版本:

 

CCS 7.3.0.00019

GCC ARM 编译器 v6.3.1

PROCESSOR_SDK_RTOS_AM437X 04.02.00.09

AM437x PDK v1.0.9

BIOS 6.52.0.12

xdctools 3.50.3.33_core

电路板:AM437X 入门套件

 

有人能帮我解决这个问题吗?

此致。

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

    您能否说明您尝试编译的处理器 SDK RTOS 驱动程序示例或这是您自己的应用程序? 您是否需要 NDK? ti\transport \ndk\Nimu 下有一个 NDK Nimu 驱动程序示例、您对编译此独立示例有任何问题吗?

    您的.cfg 文件看起来是什么样的、移除了 NDK 的特定情况?

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

    您好!

    我报告的问题出现在我自己的应用程序上。 此应用程序是在我的帖子中提到的较旧版本上创建的。

    我的应用需要 NDK、因此这就是我将其包含在*。cfg 文件中的原因。

    我尝试运行 NIMU 示例("Nimu_BasicExample_skAM437x_armExampleProject")、并且其编译成功。

    这是我的实际*。cfg 文件。 我在它上面制作了一些成分块、以表明哪些碎片导致了问题和错误。

    ///----------------------------------------------------------
    //常规配置
    ///----------------------------------------------------------

    VAR 默认值= xdc.useModule('xdc.runtime.Defaults');
    VAR 诊断= xdc.useModule('xdc.runtime.Diags');
    VAR 错误= xdc.useModule('xdc.runtime.Error');
    VAR 日志= xdc.useModule('xdc.runtime.Log');
    VAR LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');
    VAR Main = xdc.useModule('xdc.runtime.Main');
    VAR 内存= xdc.useModule('xdc.runtime.Memory')
    VAR SysMin = xdc.useModule('xdc.runtime.SysMin');
    VAR 系统= xdc.useModule('xdc.runtime.System');
    var text = xdc.useModule('xdc.runtime.Text');

    ///----------------------------------------------------------
    // SYS/BIOS 配置
    ///----------------------------------------------------------

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
    VAR 时钟= xdc.useModule('ti.sysbios.knl.Clock');
    VAR Swi = xdc.useModule('ti.sysbios.knl.Swi');
    VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
    VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');
    VAR Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
    VAR 邮箱= xdc.useModule('ti.sysbios.knl.Mailbox');
    VAR 队列= xdc.useModule('ti.sysbios.knl.Queue');
    VAR 计时器= xdc.useModule('ti.sysbios.hal.Timer');
    VAR 空闲= xdc.useModule('ti.sysbios.knl.Idle');


    /*
    *取消注释此行以全局禁用断言。
    *所有模块继承'库'模块的默认值。 您
    *可以使用 Module.common$按模块覆盖这些默认值。
    *禁用断言将节省代码空间并提高运行时性能。
    Defaults.common$.diags_ASSERT = Diags.always_off;
    *

    /*
    *取消注释此行以防止模块名称加载到目标上。
    *模块名称字符串放置在.const 段中。 设置此值
    *将参数设置为 false 将节省.const 段中的空间。 误差和
    *断言消息将包含"未知模块"前缀
    实际模块名称的*。
    Defaults.common$.namedModule = false;
    *

    /*
    *最小化系统中的 EXIT 处理程序数组。 系统模块包括
    *向 System_atexit()注册的函数数数组
    *由 System_exit()调用。
    *
    System.maxAtexitHandlers = 1;//4;


    //由 System_exit()调用的处理程序。
    //自定义退出处理程序的原型为:typedef void (* System_AtexitHandler)(int);
    System.exitFxn ="&exmSystemExitHandler";

    //由 System_abort()调用的处理程序。
    //自定义中止处理程序的原型为:typedef void (*System_AbortFxn)();
    System.AbortFxn ="&exmSystemAbortHandler";

    /*
    *取消注释此行以禁用错误打印功能。
    *禁用此功能时,我们会丢失错误信息,因为错误是这样
    *未打印。 如果禁用 raiseHook、则会节省一些代码空间
    *由于 Error_print()函数,您的应用程序未使用 System_printf()
    *调用 System_printf()。
    error.raiseHook =空;
    *

    /*导致错误的“startup.cfg”片段
    "目标"全部"的配方失败
    ------------------------

    //启用 printf/System_printf 以转到 ARM 器件上的 CCS IO 控制台
    // ARM 平台上的 GNU GCC 用户需要将"rdimon"库链接到"GNU Linker"
    VAR SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');

    ------------------------
    *


    /*导致错误的“startup.cfg”片段
    "目标"全部"的配方失败
    ------------------------

    将控制台 I/O 打印内容从 TI-RTOS 重新路由到 UART。
    控制台 I/O 消息使用可以使用的系统模块打印
    配置为调用回调函数(myUARTABort、myUARTPutch 和 myUARTReady)。
    其中:
    typedef void (* SysCallback_AbortFxn)(CString);
    typedef void (* SysCallback_PutchFxn)(字符);
    typedef bool (* SysCallback_ReadyFxn)();
    配置:
    VAR SysCallback = xdc.useModule('xdc.runtime.SysCallback');
    SysCallback.abortFxn ="&myUARTABORT";
    SysCallback.putchFxn ="&myUARTPutch";
    SysCallback.readyFxn ="&myUARTReady";
    System.SupportProxy = SysCallback;

    VAR SysCallback = xdc.useModule('xdc.runtime.SysCallback');
    SysCallback.putchFxn ="&exmPrintChar";
    SysCallback.abortFxn ="&exmPrintString";
    System.SupportProxy = SysCallback;

    ------------------------
    *

    /*
    *取消注释此行以防止 Error、Assert 和 Log 字符串成为字符串
    *加载到目标上。 这些字符串放置在.const 段中。
    *将此参数设置为 false 将节省.const 段中的空间。
    *错误、断言和日志消息将打印原始 ID 和 args 而不是
    *格式化的邮件。
    text.isLoaded = false;
    *

    /*
    *取消注释此行以禁用 SysMin 的字符输出
    *程序退出时。 SysMin 向循环缓冲区写入字符。
    *可以使用 ROV 中的 SysMin Output 视图查看该缓冲器。
    SysMin。flushAtExit = false;
    *

    //这对于一些 TIRTOS 可视化工具中显示的动态任务名称很有用。
    Task.common$.namedInstance = true;

    //将异常寄存器上下文转储到控制台。
    VAR 异常= xdc.useModule('ti.sysbios.family.arm.exc.Exception');

    /*
    * Program.argSize 设置.args 段的大小。
    *示例不使用命令行参数,因此 argSize 设置为0。
    *
    program.argSize = 0x0;

    /*系统堆栈大小(由 ISR 和 Swi 使用)*/
    program.stack = 0x10000;

    /*
    * BIOS 模块将为系统创建默认堆。
    *指定此默认堆的大小。
    *
    BIOS.heapSize = 0xA0000;//0x1000;

    /*
    *从源构建自定义 SYS/BIOS 库。
    *
    BIOS.libType = BIOS.LibType_Custom;

    /*系统堆栈大小(由 ISR 和 Swi 使用)*/
    program.stack = 0x2000;


    System_printf()的/*循环缓冲区大小*/
    /*已添加注释,将其变为等于项目的"startup.cfg"
    --------------------------------------

    SysMin。bufSize = 0x200;

    --------------------------------------
    *

    /*
    *为整个系统创建并安装记录器
    *

    /*已添加注释,将其变为等于项目的"startup.cfg"
    --------------------------------------

    var logerBufParams = new LoggerBuf.Params();
    LoggerBufParams.numEntry = 16;
    var logger0 = LoggerBuf.create (logerBufParams);
    Defaults.common$.logger = logger0;
    Main.common$.diags_INFO = Diags.always_on;

    --------------------------------------
    *

    System.SupportProxy = SysMin;


    ///----------------------------------------------------------
    //驱动程序配置
    ///----------------------------------------------------------

    /*加载 OSAL 封装*/
    var osType ="tirtos";
    VAR OSAL = xdc.useModule('ti.osal.Settings');
    OSAL.osType = osType;

    VAR socType ="AM437X";

    /*加载 CSL 包*/
    VAR_l = XDC.loadPackage ('ti.CSL');
    Csl.Settings.deviceType = socType;

    /*加载电路板封装并设置电路板名称*/
    VAR 板= XDC.loadPackage ('ti.board');
    board.Settings.boardName ="skAM437x";

    /*加载 UART 软件包*/
    VAR UART = XDC.loadPackage ('ti.drv.UART');
    UART.Settings.socType = socType;

    /*加载 I2C 封装*/
    /var I2C = xdc.loadPackage ('ti.drv.i2c');
    //I2C.Settings.socType = socType;

    /*加载 GPIO 包*/
    //var GPIO = xdc.loadPackage ('ti.drv.GPIO');
    //GPIO.Settings.socType = socType;

    /*加载 SPI 包*/
    //var SPI = xdc.loadPackage ('ti.drv.spi');
    //spi.Settings.socType = socType;

    /*加载 EMAC 软件包*/
    VAR EMAC = XDC.loadPackage ('ti.drv.emac');
    emac.Settings.socType = socType;

    /*加载 NIMU 封装*/
    VAR Nimu = XDC.loadPackage ('ti.transport.NDK.Nimu');
    Nimu.Settings.socType = socType;



    此致、
    Edgard。

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

    您好!

    有人能帮我解决这个问题吗? 这阻碍了我的项目的继续...

    此致、
    Edgard

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

    您好!

    您在.cfg 中提到了与 NDK 相关的问题、NDK 的版本是什么? 此外、从.cfg 中、我没有看到您加载 NDK、一些注释会显示回调函数导致构建失败。 您能否澄清.cfg 中的哪些更改 导致了问题?

    此致、Eric

    /*导致错误的“startup.cfg”片段

    "目标"全部"的配方失败

    ------------------------

    //启用 printf/System_printf 以转到 ARM 器件上的 CCS IO 控制台

    // ARM 平台上的 GNU GCC 用户需要将"rdimon"库链接到"GNU Linker"

    VAR SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');

    ------------------------

    *

    /*导致错误的“startup.cfg”片段

    "目标"全部"的配方失败

    ------------------------

    将控制台 I/O 打印内容从 TI-RTOS 重新路由到 UART。

    控制台 I/O 消息使用可以使用的系统模块打印

    配置为调用回调函数(myUARTABort、myUARTPutch 和 myUARTReady)。

    其中:

    typedef void (* SysCallback_AbortFxn)(CString);

    typedef void (* SysCallback_PutchFxn)(字符);

    typedef bool (* SysCallback_ReadyFxn)();

    配置:

    VAR SysCallback = xdc.useModule('xdc.runtime.SysCallback');

    SysCallback.abortFxn ="&myUARTABORT";

    SysCallback.putchFxn ="&myUARTPutch";

    SysCallback.readyFxn ="&myUARTReady";

    System.SupportProxy = SysCallback;

    VAR SysCallback = xdc.useModule('xdc.runtime.SysCallback');

    SysCallback.putchFxn ="&exmPrintChar";

    SysCallback.abortFxn ="&exmPrintString";

    System.SupportProxy = SysCallback;

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

    尊敬的 Eric:

    Edgard 使用的 NDK 版本是新 CCS/PDK 随附的版本。

    Edgard 正在使用最新版本的 CCS/PDK 在全新 PC 上安装开发环境。

    他介绍了 CCS/PDK、导入了我们的工程、并将工程属性更改为新的封装版本、并在发行说明中进行编码。

    我们的项目在具有 CCS 7.3.0.00019和 PDK v1.0.9的 PC 上正确编译。

    他已经将代码的部分分条出来尝试找出问题、它似乎与 XDC 相关。

    我的版本不兼容已´ve 问题、请参阅此主题: https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/622982

    此致、

    Marcio。

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

    您好、Eric。

     

    我使用的 NDK 是版本2_26_00_08。

    在我上次发布时粘贴的*。cfg 代码上、我删除了调用 NDK 配置的片段、但现在我将粘贴到下面。  

    也许我为澄清代码中哪些部分导致了错误而发表的评论会引起混淆以识别错误。 因此、我将在此处粘贴整个*。cfg 代码、 并将导致编译问题的代码片段绘制为黄色、这显然与 DO XDC 相关 (请记住、我怀疑这些片段会导致问题、因为我剥离了代码并进行了一些编译、以了解错误何时出现)。

     

    ///----------------------------------------------------------

    //常规配置

    ///----------------------------------------------------------

     

    VAR 默认值= xdc.useModule('xdc.runtime.Defaults');

    VAR 诊断= xdc.useModule('xdc.runtime.Diags');

    VAR 错误= xdc.useModule('xdc.runtime.Error');

    VAR 日志= xdc.useModule('xdc.runtime.Log');

    VAR LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');

    VAR Main = xdc.useModule('xdc.runtime.Main');

    VAR 内存= xdc.useModule('xdc.runtime.Memory')

    VAR SysMin = xdc.useModule('xdc.runtime.SysMin');

    VAR 系统= xdc.useModule('xdc.runtime.System');

    var text = xdc.useModule('xdc.runtime.Text');

     

    ///----------------------------------------------------------

    // SYS/BIOS 配置

    ///----------------------------------------------------------

     

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');

    VAR 时钟= xdc.useModule('ti.sysbios.knl.Clock');

    VAR Swi = xdc.useModule('ti.sysbios.knl.Swi');

    VAR 任务= xdc.useModule('ti.sysbios.knl.Task');

    VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');

    VAR Hwi = xdc.useModule('ti.sysbios.hal.Hwi');

    VAR 邮箱= xdc.useModule('ti.sysbios.knl.Mailbox');

    VAR 队列= xdc.useModule('ti.sysbios.knl.Queue');

    VAR 计时器= xdc.useModule('ti.sysbios.hal.Timer');

    VAR 空闲= xdc.useModule('ti.sysbios.knl.Idle');

     

     

    /*

    *取消注释此行以全局禁用断言。

    *所有模块继承'库'模块的默认值。 您

    *可以使用 Module.common$按模块覆盖这些默认值。

    *禁用断言将节省代码空间并提高运行时性能。

    Defaults.common$.diags_ASSERT = Diags.always_off;

    *

     

    /*

    *取消注释此行以防止模块名称加载到目标上。

    *模块名称字符串放置在.const 段中。 设置此值

    *将参数设置为 false 将节省.const 段中的空间。 误差和

    *断言消息将包含"未知模块"前缀

    实际模块名称的*。

    Defaults.common$.namedModule = false;

    *

     

    /*

    *最小化系统中的 EXIT 处理程序数组。 系统模块包括

    *向 System_atexit()注册的函数数数组

    *由 System_exit()调用。

    *

    System.maxAtexitHandlers = 1;//4;       

     

     

     

     

    //由 System_exit()调用的处理程序。

    //自定义退出处理程序的原型为:typedef void (* System_AtexitHandler)(int);

    System.exitFxn ="&exmSystemExitHandler";

     

    //由 System_abort()调用的处理程序。

    //自定义中止处理程序的原型为:typedef void (*System_AbortFxn)();

    System.AbortFxn ="&exmSystemAbortHandler";

     

     

     

    /*

    *取消注释此行以禁用错误打印功能。

    *禁用此功能时,我们会丢失错误信息,因为错误是这样

    *未打印。 如果禁用 raiseHook、则会节省一些代码空间

    *由于 Error_print()函数,您的应用程序未使用 System_printf()

    *调用 System_printf()。

    error.raiseHook =空;

    *

     

    /*导致错误的“startup.cfg”片段

    "目标"全部"的配方失败

    ------------------------

     

    //启用 printf/System_printf 以转到 ARM 器件上的 CCS IO 控制台

    // ARM 平台上的 GNU GCC 用户需要将"rdimon"库链接到"GNU Linker"

    VAR SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');

     

    ------------------------

    *

     

     

    /*导致错误的“startup.cfg”片段

    "目标"全部"的配方失败

    ------------------------

     

    将控制台 I/O 打印内容从 TI-RTOS 重新路由到 UART。

    控制台 I/O 消息使用可以使用的系统模块打印

    配置为调用回调函数(myUARTABort、myUARTPutch 和 myUARTReady)。

    其中:

    typedef void (* SysCallback_AbortFxn)(CString);

    typedef void (* SysCallback_PutchFxn)(字符);

    typedef bool (* SysCallback_ReadyFxn)();

    配置:

    VAR SysCallback = xdc.useModule('xdc.runtime.SysCallback');

    SysCallback.abortFxn ="&myUARTABORT";

    SysCallback.putchFxn ="&myUARTPutch";

    SysCallback.readyFxn ="&myUARTReady";

    System.SupportProxy = SysCallback;

     

    ------------------------

    *

     

    /*

    *取消注释此行以防止 Error、Assert 和 Log 字符串成为字符串

    *加载到目标上。 这些字符串放置在.const 段中。

    *将此参数设置为 false 将节省.const 段中的空间。

    *错误、断言和日志消息将打印原始 ID 和 args 而不是

    *格式化的邮件。

    text.isLoaded = false;

    *

     

    /*

    *取消注释此行以禁用 SysMin 的字符输出

    *程序退出时。 SysMin 向循环缓冲区写入字符。

    *可以使用 ROV 中的 SysMin Output 视图查看该缓冲器。

    SysMin。flushAtExit = false;

    *

     

    //这对于一些 TIRTOS 可视化工具中显示的动态任务名称很有用。

    Task.common$.namedInstance = true

     

    //将异常寄存器上下文转储到控制台。

    VAR 异常= xdc.useModule('ti.sysbios.family.arm.exc.Exception');

     

    /*

    * Program.argSize 设置.args 段的大小。

    *示例不使用命令行参数,因此 argSize 设置为0。

    *

    program.argSize = 0x0;

     

    /*系统堆栈大小(由 ISR 和 Swi 使用)*/

    program.stack = 0x10000;

     

    /*

    * BIOS 模块将为系统创建默认堆。

    *指定此默认堆的大小。

    *

    BIOS.heapSize = 0xA0000;//0x1000;

     

    /*

    *从源构建自定义 SYS/BIOS 库。

    *

    BIOS.libType = BIOS.LibType_Custom;

     

    /*系统堆栈大小(由 ISR 和 Swi 使用)*/

    program.stack = 0x2000;

     

     

    System_printf()的/*循环缓冲区大小*/

    /*已添加注释,将其变为等于项目的"startup.cfg"

    --------------------------------------

     

    SysMin。bufSize = 0x200;

     

    --------------------------------------

    *

     

    /*

    *为整个系统创建并安装记录器

    *

    /*已添加注释,将其变为等于项目的"startup.cfg"

    --------------------------------------

     

    var logerBufParams = new LoggerBuf.Params();

    LoggerBufParams.numEntry = 16;

    var logger0 = LoggerBuf.create (logerBufParams);

    Defaults.common$.logger = logger0;

    Main.common$.diags_INFO = Diags.always_on;

     

    --------------------------------------

    *

     

    System.SupportProxy = SysMin;

     

     

    ///----------------------------------------------------------

    //驱动程序配置

    ///----------------------------------------------------------

     

    /*加载 OSAL 封装*/

    var osType ="tirtos";

    VAR OSAL = xdc.useModule('ti.osal.Settings');

    OSAL.osType = osType;

     

    VAR socType ="AM437X";

     

    /*加载 CSL 包*/

    VAR_l = XDC.loadPackage ('ti.CSL');

    Csl.Settings.deviceType = socType;

     

    /*加载电路板封装并设置电路板名称*/

    VAR 板= XDC.loadPackage ('ti.board');

    board.Settings.boardName ="skAM437x";

     

    /*加载 UART 软件包*/

    VAR UART = XDC.loadPackage ('ti.drv.UART');

    UART.Settings.socType = socType;

     

    /*加载 I2C 封装*/

    /var I2C = xdc.loadPackage ('ti.drv.i2c');

    //I2C.Settings.socType = socType;

     

    /*加载 GPIO 包*/

    //var GPIO = xdc.loadPackage ('ti.drv.GPIO');

    //GPIO.Settings.socType = socType;

     

    /*加载 SPI 包*/

    //var SPI = xdc.loadPackage ('ti.drv.spi');

    //spi.Settings.socType = socType;

     

    /*加载 EMAC 软件包*/

    VAR EMAC = XDC.loadPackage ('ti.drv.emac');

    emac.Settings.socType = socType;

     

    /*加载 NIMU 封装*/

    VAR Nimu = XDC.loadPackage ('ti.transport.NDK.Nimu');

    Nimu.Settings.socType = socType;

     

     

    ///----------------------------------------------------------

    // NDK 配置

    ///----------------------------------------------------------

     

    VAR Global = xdc.useModule('ti.ndk.config.Global');

    VAR ICMP = xdc.useModule('ti.ndk.config.Icmp');

    VAR IP = xdc.useModule('ti.ndk.config.Ip');

    //var TCP = xdc.useModule('ti.ndk.config.Tcp');

    VAR UDP = xdc.useModule('ti.ndk.config.Udp');

     

    //将 autosOpenCloseFD 参数设置为 true 时,您不必调用

    //代码中的 fdOpenSession (用于动态创建的任务)。 缺点是

    //应用程序中的每个任务都将调用 fdOpenSession 作为的一部分

    //创建挂钩。 即使是不使用堆栈的堆栈也是如此。

    //Global.autoOpenCloseFD = true;

     

     

    Global.netSchedulerPri = Global. nc_priority_high;

    global.ndkTickPeriod = 100;

    global.kernTaskPriLevel = 11;

    Global.serviceReportHook =

    global.ipv6 = false

     

    // IP 配置

    //ip.socketBufMinTxSize = 1;

    ip.domainname ="ced2.net";

     

    //静态 IP 配置的设置

    ip.ResolveIP = false

    ip.CallByIP = false

    Ip.autoIp = false

     

    //如果不使用 IP 进行初始化。

    ip.address ="0.0.0.0";

    ip.mask ="255.255.255.0;

    //如果使用2个 IP 进行初始化(双 MAC 模式操作)

    //在此处配置第二个以太网接口,并以编程方式配置第一个接口。

    //对于双 MAC 模式操作,请在此处配置第二个以太网接口,然后

    //使用 Global. stackInitHook 添加执行 IP 配置的挂钩

    //以编程方式设置第一个接口。

    //ip.address ="192.168.2.34";

    //ip.gatewayIpAddr ="192.168.2.2";

    //ip.ifIdx = 2;

    //对于双 MAC 模式操作,添加挂钩 Global. stackInitHook 以执行

    //第一个接口的 IP 配置(可编程)。

    //Global. stackInitHook ="&ethStackInitHook";

     

    ///----------------------------------------------------------

    // NDK 配置

    ///----------------------------------------------------------

     

    VAR Global = xdc.useModule('ti.ndk.config.Global');

    VAR ICMP = xdc.useModule('ti.ndk.config.Icmp');

    VAR IP = xdc.useModule('ti.ndk.config.Ip');

    //var TCP = xdc.useModule('ti.ndk.config.Tcp');

    VAR UDP = xdc.useModule('ti.ndk.config.Udp');

     

    //将 autosOpenCloseFD 参数设置为 true 时,您不必调用

    //代码中的 fdOpenSession (用于动态创建的任务)。 缺点是

    //应用程序中的每个任务都将调用 fdOpenSession 作为的一部分

    //创建挂钩。 即使是不使用堆栈的堆栈也是如此。

    //Global.autoOpenCloseFD = true;

     

     

    Global.netSchedulerPri = Global. nc_priority_high;

    global.ndkTickPeriod = 100;

    global.kernTaskPriLevel = 11;

    Global.serviceReportHook =

    global.ipv6 = false

     

    // IP 配置

    //ip.socketBufMinTxSize = 1;

    ip.domainname ="ced2.net";

     

    //静态 IP 配置的设置

    ip.ResolveIP = false

    ip.CallByIP = false

    Ip.autoIp = false

     

    //如果不使用 IP 进行初始化。

    ip.address ="0.0.0.0";

    ip.mask ="255.255.255.0;

    //如果使用2个 IP 进行初始化(双 MAC 模式操作)

    //在此处配置第二个以太网接口,并以编程方式配置第一个接口。

    //对于双 MAC 模式操作,请在此处配置第二个以太网接口,然后

    //使用 Global. stackInitHook 添加执行 IP 配置的挂钩

    //以编程方式设置第一个接口。

    //ip.address ="192.168.2.34";

    //ip.gatewayIpAddr ="192.168.2.2";

    //ip.ifIdx = 2;

    //对于双 MAC 模式操作,添加挂钩 Global. stackInitHook 以执行

    //第一个接口的 IP 配置(可编程)。

    //Global. stackInitHook ="&ethStackInitHook";

     

    此致、
    Edgard。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否阅读过与"将使用 SYS/BIOS v6.50或更早版本构建的 GCC 工程迁移到 SYS/BIOS v6.52"相关的 SYS/BIOS 版本说明?

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

    我们还没有尝试过。 抱歉、我们遇到了其他更紧迫的问题。

    但是、我可以说、当我们更新 CCS 和 PDK 时、我们没有特别注意"将使用 SYS/BIOS v6.50或更早版本编译的 GCC 工程迁移到 SYS/BIOS v6.52"部分。 我们必须仔细检查它。

    谢谢、
    Marcio。

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

    很抱歉延迟发送有关此问题的消息。 出现了紧迫的问题,我不得不转用一段时间来执行另一项任务。

    我阅读了"将使用 SYS/BIOS v6.50或更早版本编译的 GCC 工程迁移到 SYS/BIOS v6.52"并按照此处编写的步骤进行操作、但该工程仍然没有编译。 因此、我导入了一个 PDK 示例以包含其定义、删除了所有文件并将项目文件放在其中。 因此、我在前面的帖子中提到的错误消失了。 但是、在构建项目后出现以下警告:

    无效的工程路径:未找到包含路径(C:\ti\ccsv7\eclipse\Debug\C:\ti\BIOS_6_52_00_12\packages/GNU\targets\arm\libs\install-native\arm-none-eabi\includenewlib-nano)。

    我如何解决这个问题?

    非常感谢!
    Edgard。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么路径中有两个冒号("C:\")? 此外、它看起来像一个在缺少"\C"中的分号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这很奇怪、因为我没有更改任何变量/符号、所以目录被定义为默认值... 我是否必须更改一些符号才能纠正此问题?

    此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以重建并附加整个构建输出吗? 请将输出作为文本文件附加、而不是复制/粘贴(以使线程保持较短)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    重建项目后、这些是控制台输出("Console.txt")和相关问题("problems.txt")。

    谢谢!

    e2e.ti.com/.../Console.txt

    e2e.ti.com/.../Problems.txt

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

    Edgard、
    是否可以转到 Project Properties->CCS Build->GNU Compiler 并检查命令行内容?
    您是否记得在 工程属性中的某个位置添加或看到目录"eclipse/debug"?

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

    我检查了 GNU 编译器的内容、它的定义如下:

    ->命令:"${CG_TOOL_GCC}"-c
    ->命令行模式:${command}${flags}${output_flag}${output}${inputs}
    ->标志集摘要:-mcpu=cortex-A9 -mtun=cortex-A9 -March =armv7-a -marm -mfloat-abi=hard -dskc_am437x -dam4376 -i"C:/ALSTOM/DSP/CED2/SRC/Forum_CED2 -i"C:/ti/bios_6_52_00_12/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/include/newlib-nano -i"C:/ti/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/include -dwarf-gf -dwarm -g3 -dwarf -gwarm -gf=gc=gc=gc=bloat_a2

    我注意到、指向"标志集摘要"的目录"C:/ti/bios_6_52_00_12/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/include/newlib-nano 不包含两个":"、就像报告的控制台警告一样。

    关于目录"eclipse/debug"、我发现唯一与此相关的是"Project -> Properties -> Build -> Environment "上的变量"XDCTOOLS_Java_HOME"。 此变量的字段"value"包含内容"C:\ti\ccsv7\eclipse\jre"、其中的字段"origin"用"build system"填充。

    此致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这也可能是之前失败的构建的剩余部分。 是否可以右键单击该问题条目并将其删除? 然后、当您重建并成功构建时、该问题条目是否会再次出现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当我清理项目并重建项目时、警告再次出现。 因此、我删除 了警告 并重新编译了项目、但不幸的是、警告再次出现...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该主题是否在 CCS 论坛中? 我认为他们应该能够提供帮助、因为我不知道自己的想法、无法真正解决问题。 您可能还想在 CCS 论坛中启动新线程、因为这个线程已经很长了、只需说"我有一个构建良好的项目、但问题窗口中有一个我无法消除的项目"。