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/66AK2H12:编译/编译:更改生成的代码的来源

Guru**** 2582235 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/631436/ccs-66ak2h12-compile-build-change-origin-of-generated-code

器件型号:66AK2H12

工具/软件:Code Composer Studio

XDCtools 3.50.02.20、SYS/BIOS 6.50.01.12、NDK 2.25.1.11

我的 SBC 目标没有 EVM 具有的512MB DIMM。 我想从 EVM 上移除 DIMM 并从板载512MB 运行我的项目、但我无法确定实现这一目标所需的步骤。 如果我移除 DIMM、编译后的工程仍会尝试加载到0x8000_0000中、该文件不再存在。 我查看了 CFG、对于我来说、不会出现如何设置原点。  

供参考我正在构建的项目使用 NDK 和 EMAC 示例运行 TCP/IP 服务器。

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

    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无法开机自检?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    取得了进展。 SYS/BIOS 用户指南(spruex3)、第7.2.2节、创建自定义平台。
    我创建了一个新平台、其 DDR 基址为0x6000_0000、大小为0x2000_0000。
    我可以将我的项目平台切换到我刚刚创建的平台。 它会加载并运行。 我可以看到它在0x6000_0000存储器区域中的某个源站之外运行。 很好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但我的 EMAC hello world 项目不起作用。 我正在使用本地 IP 地址。 代码运行到

    RC = NC_NetStart( hCfg、NetworkOpen、NetworkClose、NetworkIPAddr );

    永远不会返回,甚至不会回调到 NetworkIPAddr ()。 EVM 不响应 Ping 操作。

    如果我暂停并查看 ROV Classic > NDK 下的内容、则 IP 地址仍为0.0.0.0。 因此没有进行任何回调?

    因为我可以告诉我正在网络堆栈任务中旋转:NetScheduler()

    当 DIMM 就位且使用原始平台时,代码工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您尝试在电路板上运行的示例是什么? 是 NIMU_emacExample_EVMK2HC66BiosExampleProject 吗? 从我的映射文件:

    存储器配置

    名称 原点长度 已使用 未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    L2 SRAM 00800000 00100000 000606d8 0009f928 RW X
    MSMCSRAM 0c000000 00600000 0039d8a8 00262758 RW X
    DDR3 80000000 80000000 00000000 80000000 RWIX

    它不使用 DDR。

    一般而言、假设您自己的电路板没有 DDR、因此您无法使用任何地址0x8000000或更高的地址。 您可以将代码放入 MSMC 或 L2中。 如果您的程序有一个链接器命令文件、您可以在该文件中指定代码放置。 如果您不使用链接器命令文件、而是 RTSC 工程的.cfg 文件。 请访问 processors.wiki.ti.com/.../Processor_SDK_RTOS:_TI_RTOS_Tips_And_Tricks
    您可以执行以下操作:

    Program.sectMap[".text"]="MSMCSRAM";
    Program.sectMap[".const"]="MSMCSRAM";
    Program.sectMap[".qmss"]="L2SRAM";
    Program.sectMap[".cppi"]="L2SRAM";

    您从0x6000_0000创建了一个512MB 段。 这是 PCIe 数据存储器。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您查看此 Eric。 我正在 ARM 上运行。 它是从 PDK EMAC 示例派生而来的工程。 (更改为使用 TCP 而不是 UDP)。 在连接建立且调用回调之前,不会进行真正的更改。 使用静态 IP。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我返回并再次导入原始示例。 这是 Nimu_emacExample_EVMK2H_armBiosExampleProject

    我正在 EVM 上运行。 如果没有任何更改、则可以使用干净的调试构建、至少对于 CCS 控制台上显示的 IP 地址而言是如此、我可以对其执行 ping 操作。 堆栈是活动的。

    我更改为我的自定义平台、以便它现在加载到0x6000_0000存储器中。 重新启动 EVM 并再次运行。 现在、代码按预期加载到0x6000_0000存储器区域并运行。 我得到的所有打印输出都是相同的,包括"StackTest: Using localIp",但 IP 永远不会显示静态空 NetworkIPAddr ( IPN ipaddr、uint IfIdx、uint fAdd ),永远不会被调用。 EVM 不再响应 ping。

    在“项目”>“RTSC 工具”>“平台”>“编辑/新建”下,我可以查看我的平台。 我有:
    时钟速度设置为125.0。
    Device Memory (设备内存)下无内容、未选中 Customize Memory (自定义内存)。
    外部存储器我添加了一个条目;DDR:0x60000000:0x20000000:CODE/DATA/RWX
    存储器部分-全部三个设置为 DDR
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的同事可能已经解决了这个问题。 0x6000_0000存储器与0x8000_0000处的 DIMM 不一致。 作为一个实验、他建议禁用缓存。 我已经尝试过这种方法、现在该示例可以正常工作(就我测试的是 ping 它而言)。 请访问 e2e.ti.com/.../631759查看他的帖子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您分享详细信息! 因此、您的问题是在 ARM 上使用 DDR3B 而不是 DDR3A。 但是、从数据表中可以看出、该区域不支持 IO 一致性(从0x6000_0000开始为512M)、因此必须禁用高速缓存。

    此致、Eric