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.

[参考译文] IWR1443:IWR1443

Guru**** 2553450 points
Other Parts Discussed in Thread: IWR1443

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/982221/iwr1443-iwr1443

器件型号:IWR1443

我正在使用具有开箱即用演示代码的 IWR1443雷达芯片开发雷达板。 开箱即用演示代码使一切都正常运行。 然后、我在主代码中添加组跟踪算法。 最终代码大小约为160K、无法编译。  

因此、链接器文件被修改、这样分配的程序大小为180K、如下所示:

然后可以对其进行编译。  然后将二进制代码加载到外部 QSPI 闪存中、它无法正常运行。 只是想知道还需要做些什么来使芯片在更大的程序大小下运行。

芯片为 ES3、SDK 为 MMWAVE_SDK_02_01_00_04。

谢谢、

Henry

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

    尊敬的 Henry:

    请转到以下链接、了解主子系统 RAM 如何在程序、数据和雷达立方体之间进行分区:

    https://www.ti.com/lit/ug/swru522e/swru522e.pdf -第1.3.1.1节紧耦合存储器

    假设您仅使用 IWR1443上的存储器资源、则此链接将对程序的大小进行严格限制。 如果您还没有编译后生成的.map 文件、我建议您查看您使用的相应 RAM 剖面大小。 由于程序和数据存储器是一个统一存储器、因此其中有多少是程序存储器以及多少是数据存储器。

    此致、

    Connor Desmond

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

    您好 Connor、

    感谢您提供相关信息。

    下面是生成的两个映射文件。 第一个示例在 R4F_linker.cmd 文件中分配了更大的程序 RAM。 看起来总尺寸大于允许的576k。 第二个文件由参考开箱即用演示生成。 总存储器(矢量+ prog_ram + data_ram + L3_ram + ha_ram)小于576k、但也大于576k。 查找总内存大小时是否出错?

    我认为我必须减小数据 RAM 的大小、以便为添加的程序 RAM 留出空间。 是否只需要更改 R4F_linker.cmd 文件中的分配?

    非常感谢、

    Henry

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

    亨利:

    请尝试此操作。 我不会将1ff00更改为2D000。 而是转到 OOB 的.projectspec 文件、网址为:

    \labs\out_for_box_demo\14xx_mmWave_sdk\mmw_mss_14xx.projectspec

    我会更改:

    --define=mmWave_SHMEM_TCMA_NUM_BANK = 0至-define=mmWave_SHMEM_TCMA_NUM_BANK = 1

    这会将存储器的长度从130KB 增加到194KB、小于320KB、大于您在146KB 以上分配的容量。

    请告诉我这是否允许您进行编译和闪存。

    此致、

    Connor Desmond

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

    您好 Connor、

    当前 CCS 工程(已从导入  \labs\out_for_box_demo\14xx_mmwave_SDK into CSS)没有'mw_mss_14xx.projectspec'文件。 因此、我想我必须编辑该文件以进行  更改" \labs\out_for_box_demo\14xx_mmWave_sdk '、然后将其导入 CCS?

    谢谢、

    Henry  

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

    亨利:

    14xx 器件的项目规格位于 MMWAVE_SDK_02_01_00_04中。 下载该文件、您就可以访问项目规格文件进行修改。

    最棒的

    Connor

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

    您好 Connor、

    我在 'mwave_sdk_02_01_00_04'目录下找不到 projectspec 文件。 但是、我在"预定义符号"中找到了一个位置、如下所示、将银行编号从0更改为1。 但仍然无法编译、因为映射文件不会根据设置进行更改。 更改预定义符号似乎对最终内存分配没有影响。

    有什么建议吗?

    非常感谢、

    Henry

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

    您好 Connor、

    然后、我 编辑该文件以进行更改  ' \labs\out_for_box_demo\14xx_mmWave_sdk'、然后将其导入 CCS。 分配的程序 RAM 会增加。  out_for_box_demo 代码可被闪存并且可运行。 我将在这个新设置中尝试使用 RAM 大小更大的实际应用、并让您知道它是否运行。

    非常感谢、

    Henry  

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

    亨利:

    感谢您的更新。

    最棒的

    Connor Desmond

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

    您好 Connor、

    当 TCMA bank = 1且代码大小(原始 OOB 代码)< 128k 时、程序可以运行。 我在 OOB 代码中添加了分组跟踪算法(SDK 随附的软件模块)、大小现在大于128k、然后无法运行。 当 TCMA 组=1时、 总 RAM 大小> 576K。 然后、我将 L3RAM 更改为5、以便为添加的 TCMA RAM 留出空间、但它仍然无法运行。 将 L3RAMto 4更改为相同、但不起作用。 我是否需要更改其他内容?

    非常感谢、

    Henry

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

    亨利:

    我会尝试使 TCMA 存储区= 2、这会将您的 PROG 部分存储器增加到258KB。 如果在此之后您的程序太大、则需要优化程序或使用其他算法。 另请注意、L3 RAM 不属于我参考的文档中规定的576KB 的一部分。 L3RAM 是共享存储器空间、不包含可执行代码。 576KB 是 PROG、数据和雷达立方体。 雷达立方体固定为至少128KB、因此这意味着 PROG+DATA = 448KB。

    此致、

    Connor Desmond

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

    您好 Connor、

    现在、我使用 TCMA bank = 1并将 OOB 代码(<128K)放入其中、它可以正常工作。  

    我在 OOB 代码中添加了内联汇编'nop'代码、如下所示:  

    asm (" nop\n");

    它仍然可以工作。  

    然后、我放置更多的'nop'指令 、将程序代码增加到150k:

    #define ASM_NOP_10{asm (" nop\n");asm (" nop\n");asm (" nop\n");asm (" nop\n");asm (" nop\n");asm (" nop\n");asm (" NOP\n"); asm (" nop\n"); asm (" nop\n"); asm (" nop\n"); asm (" nop\n"); asm (" nop\n");}
    #define ASM_NOP_100{ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;ASM_NOP_10;}
    #define ASM_NOP_1000{ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;ASM_NOP_100;}
    #define ASM_NOP_10000{ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;ASM_NOP_1000;}
    ASM_NOP_10000

    然后它无法运行。 原始 OOB 设置似乎仅适用于程序大小< 128K 的情况。  

    想知道我们是否必须设置其他内容 才能使雷达在大于128K 的代码大小下工作。

    非常感谢、

    Henry

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

    亨利:

    我看到您在这里尝试做什么、但我需要一些信息来继续为您提供帮助。 根据文档和 R4F_linker.cmd 文件、PROG 大小的默认大小、假定 TCMA 组的数量为0、为0x1FF00或大约130KB。 这个数字可以增加0x10000、直到但不超过320KB、从而为存储器的数据部分留出128KB 的空间。 查看 MMW_MSS_14xx 项目、默认情况下、它具有 MMWAVE_SHMEM_TCMA_NUM_Bank=0、这意味着分配的有效内存为~130KB。 请使 MMWAVE_SHMEM_TCMA_NUM_Bank=2、这会将您的 PROG 存储器增加到0x1FF00 + 0x20000 = 0x3FF00 =~ 261KB。 这是最大值。 我需要:

    1.将 PROG 存储器扩展到261KB 是否有效?

    2.如果不能,请提供.map 文件,以便我可以看到用法+分配了什么内存。

    最棒的

    Connor Desmond

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

    您好 Connor、

    我对附加的映射文件进行了一些尝试、如下所示:

    mmw_mss_14xx_LF_e10_gtskd2_v2_TCMA1_L3_5_small_prog.txt -

    TCMA = 1、L3RAM = 5、小型程序(OOB +单个'NOP')正常工作

    mmw_mss_14xx_LF_e10_gtskd2_v2_TCMA1_L3_5.txt -

    TCMA = 1、L3RAM = 5、大型程序(OOB +许多'NOP')、不起作用

    mmw_mss_14xx_LF_e10_gtskd2_v2_TCMA2_L3_6.txt -  

    TCMA=2、L3RAM=6、大型程序(OOB +许多'NOP')、不工作

    即使分配了更高的内存、大于128K 的程序代码仍有问题。

    非常感谢、

    Henry

    e2e.ti.com/.../mmw_5F00_mss_5F00_14xx_5F00_LF_5F00_e10_5F00_gtskd2_5F00_v2_5F00_TCMA1_5F00_L3_5F00_5.txte2e.ti.com/.../mmw_5F00_mss_5F00_14xx_5F00_LF_5F00_e10_5F00_gtskd2_5F00_v2_5F00_TCMA1_5F00_L3_5F00_5_5F00_small_5F00_prog.txte2e.ti.com/.../mmw_5F00_mss_5F00_14xx_5F00_LF_5F00_e10_5F00_gtskd2_5F00_v2_5F00_TCMA2_5F00_L3_5F00_6.txt

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

    亨利:

    您能否提供当您说错误不起作用时所遇到的错误的屏幕截图。

    最棒的

    Connor Desmond

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

    您好 Connor、

    我使用 MMWAVE_Demo_Visualizer 从雷达板获取输出、因为代码是演示代码 OOB。 当向雷达发送 CLI 命令时、可视化工具将在消息控制台窗口中显示消息。 如果雷达可以启动、它将以各种输出图显示。 如果代码大小大于128K (尝试了多种不同的存储器设置)、雷达将不会接受 CLI 命令、并且消息窗口上没有确认。 似乎 仍然缺少一些东西来使大于128k 的代码运行。

    现在、我取出 OOB 中的一些未使用的模块并缩小程序代码。 我可以在128K 内将组跟踪算法(~\mmwave_sdk_02_01_00_04\packages/ti\algtrack)整合到 OOB 中。 仍然需要一些时间才能使组跟踪算法正常工作。 代码在 gstack 中的第一行代码处停止、如下所示。 该语句最终将调用 Memory_alloc()函数,该函数将涉及堆内存。 想知道 gtrack 使用的堆是否与为雷达 L3_ram 分配的堆相同。 我是否必须为 gtrack 分配不同的堆?

    非常感谢、

    Henry

       

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

    亨利:

    我更深入地探讨了您的问题。 这应允许您以牺牲 L3 (雷达立方体存储器)为代价扩展程序大小。 下面是一个 E2E 链接、可解决类似问题。

    https://e2e.ti.com/support/sensors/f/sensors-forum/912900/ccs-iwr1443-changing-tcma-size-rebuild-soc-driver-and-ccsdebug

    请注意、您需要在3个位置修改.projectspec 文件。

    第17行。 其中,postBuildStep =.... 例如、在 TCMA 中为1个64KiB、在 L3RAM 中为5个64KiB、为0x00000105

    而不是 TCMA 中的0x00000006 0 KiB 和 L3RAM 中的6 64KiB。

    2. compilerBuildOptions 下的第34行

    -减少 TCMA (也称为 PROG)内存中所需的 L3RAM 内存组。

    链接器构建选项下的第79行

    -与步骤2中的内容完全相同。

    此致、

    Connor Desmond

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

    您好 Connor、

    通过以下更改使用 OOB 进行编译:

    1.更改 了 compilerBuildOptions 下的第34行和 linkerBuildOptions 下的第79行

     到 TCMA = 1、 L3RAM = 5

    2.在构建 步骤后的第14行中,有两个地方认为需要更改,如下所示为红色:

    postBuildStep="${com_TI_mmWave_sdk_install_DIR}/packages/scripts/ImageCreator/create_ConfigRPRC/create_ConfigRPRC.exe -s 0x00000105;${com_TI_mmWave_sdk_install_DIR}/packages/scripts/ImageCreator/out2rprc/out2rprc.exe xwr14xx_mmw_demo_MSS.xer4f xwr14xx_MMw_demo_MSS.tmp;${com_TI_mmw_sdk_mmw_sdk_install 0x000037}/packages/scripts/ImageCreator/multicore_image_generator/MulticoreImageGen.exe

    因此、我尝试了多种组合的结果、如下所示:

    TCMA = 1、 L3RAM = 5、 CREATE _ConfigRPRC/create_ConfigRPRC.exe -s  0x00000105、 multicore_image_generator/MulticoreImageGen.exe LE 37  0x00000105 -无法运行

    TCMA = 1、 L3RAM = 5、 CREATE _ConfigRPRC/create_ConfigRPRC.exe -s 0x00000105、 multicore_image_generator/MulticoreImageGen.exe LE 37 0x00000006 -无法在 DATA_PATH.c 的670行发生异常

    TCMA = 1、 L3RAM = 5、 CREATE _ConfigRPRC/create_ConfigRPRC.exe -s 0x00000006、 multicore_image_generator/MulticoreImageGen.exe LE 37 0x00000105 -无法运行

    TCMA = 1、 L3RAM = 5、CREATE _ConfigRPRC/create_ConfigRPRC.exe -s  0x00000006、 multicore_image_generator/MulticoreImageGen.exe LE 37 0x00000006  -可以运行

    因此、最新的建议似乎不起作用。

    有什么线索吗?

    正如我在前面的消息中所示、我取出 了 OOB 中的一些未使用的模块、并缩小了程序代码。 我可以在128K 内将组跟踪算法(~\mmwave_sdk_02_01_00_04\packages/ti\algtrack)整合到 OOB 中。 代码在 gstack 中的第一行代码处停止、如我之前的消息中所示。 该语句最终调用 Memory_alloc()函数,该函数将涉及堆内存。 想知道 gtrack 使用的堆是否与为雷达 L3_ram 分配的堆相同。 我是否必须为 gtrack 分配不同的堆?  

    对此也有任何帮助吗?

    谢谢、  

    Henry

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

    亨利:

    为了进行验证、每次更改项目规格文件时、是否都要从 CCS 中删除项目、重新导入并重新编译? 您是否还更改了 compilerOptions 和 linkerOptions 下的预定义符号。 这是一种用于扩展 xWR14xx 上的 PROG 存储器的经过验证的解决方案、因此、如果这不起作用、我就会指示另一个问题。 如果您想继续处理与 gtrack 相关的任何问题、我建议您再做一个与 gtrack 相关的特定问题。

    最棒的

    Connor Desmond

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

    您好 Connor、

      在对工程规格文件进行更改时 、我确实从 CCS 中删除了工程、重新导入并重新编译了工程。 我仍有疑问-

     在您在第14行、即 postBuildStep 中的建议中、有两个地方被认为可以更改、如下所示为红色:

    postBuildStep="${com_TI_mmWave_sdk_install_DIR}/packages/scripts/ImageCreator/create_ConfigRPRC/create_ConfigRPRC.exe -s  0x00000105;${com_TI_mmWave_sdk_install_DIR}/packages/scripts/ImageCreator/out2rprc/out2rprc.exe xwr14xx_mmw_demo_MSS.xer4f xwr14xx_MMw_demo_MSS.tmp;${com_TI_mmw_sdk_mmw_sdk_install 0x000037}/packages/scripts/ImageCreator/multicore_image_generator/MulticoreImageGen.exe  

    我应该更改哪一个?

    非常感谢、

    Henry