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.

[参考译文] 66AK2E05:升级 K2E SDK 后、DSP 程序无法正确加载。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1613605/66ak2e05-after-upgrading-the-k2e-sdk-the-dsp-program-cannot-be-loaded-correctly

部件号: 66AK2E05

下载 TI 提供的 SDK 并升级 U-Boot 和 Linux 后、我们发现无法再使用前面的方法加载 DSP 程序、并且错误消息没有直接指明原因。 我们希望 TI 工程师可以帮助我们分析原因。 谢谢。  

升级前的 SDK 版本:

U-Boot 2013.01 (Jul 17 2020 - 16:43:24)

I2C:   ready
SPD csum OK; in SPD: 1B 0E; computed 0000001B 0E
DDR3A Speed will be configured for 1600 Operation.
Detected SO-DIMM [18KSF51272HZ-1G6K2]
DDR3 speed 1600
DRAM: 4 GiB

Reseting entire DDR3 memory to 0 ...
DRAM:  2 GiB
NAND:  512 MiB
Smart Reflex Class 0 temperature compensation enabled
tps544_init i2c write error
Smart Reflex Class 0 temperature compensation disabled
Net:   K2E_EMAC0

升级后的 SDK 版本:

U-Boot 2019.01-g333c3e72d3 (Apr 19 2020 - 06:29:23 +0000)
CPU: 66AK2Ex SR1.0
Model: Texas Instruments Keystone 2 Edison EVM
DRAM:  DDR3A Speed will be configured for 1600 Operation.
Detected SO-DIMM [18KSF51272HZ-1G6K2]
DDR3 speed 1600
DRAM: 4 GiB

我初步怀疑 dtb 中的 DSP 存储器地址不同、但因为我对 dtb 不太熟悉、我不确定这是否正确或如何修改。我上传了 dtb 解压缩的 dts 文件、作为附件中的参考。  

k2e_new_sdk_dts.txt

k2e_old_sdk_dts.txt 

以下是我在 CCS 工程中定义的存储器地址

MEMORY
{
   VECTORS:            	o = 0x00800000  l = 0x00000400  /* to 0x008003FF, in L2, 1KB */
   entry_point2:    	o = 0x00800400  l = 0x00000400  /* to 0x008007FF, in L2, 1KB */
   dsp_L2_ram:      	o = 0x00800C00  l = 0x0006F400  /* to 0x0086FFFF, in L2, 445KB */
   dsp_L2_ram_stack:    o = 0x00870000  l = 0x00010000  /* to 0x1183FFFF, in L2*/
   entry_point1:    	o = 0x00800800  l = 0x00000400  /* to 0x00800BFF, in shared ram, 1K */
   MSMC_RAM: 		    o = 0x0C000000  l = 0x0018C000  /*To 0x0C18BFFF,Total 1584K */
   DATA_BUFFER_ARM:	    o = 0x0c18C000	l = 0x00064000	/*To 0x0C1EFFFF, 10240*10*4 ,400K*/
   PRINT_BUFFER:	    o = 0x0C1F0000	l = 0x00010000  /*To 0xOC1FFFFF, Total 64KB*/

   external_ram:        o = 0xE0000000  l = 0x01000000  /* to 0x6FFFFFFF, in external ram, 256MB (WARNING: OVERLAYS ARM)*/

   sysmemDDR:           o = 0xE1000000  l = 0x03000000  /* to 0x76FFFFFF, in arm local ram, 64MB*/
   Data_DDR:            o = 0xE4000000  l = 0x06000000  /* to 0x7DFFFFFF, in arm local ram, 96MB*/
   ReservedDDR:         o = 0xEA000000  l = 0x05000000  /* to 0x7FFFFFFF, in arm local ram, 32MB*/

}

在旧系统上、CCS 编译的文件可以成功加载。

root@k2e-evm:/home/athena/Athena_Tester# mpmcl reset dsp0
reset succeeded
root@k2e-evm:/home/athena/Athena_Tester# mpmcl load dsp0 AthenaTester_K2E.out
load succeeded

但是、在新系统上无法加载、使用 TI 提供的最新 RTOS SDK 时收到相同的错误。  

root@k2e-evm:/home/athena/Athena_Tester# mpmcl reset dsp0
reset succeeded
root@k2e-evm:/home/athena/Athena_Tester# mpmcl load dsp0 AthenaTester_K2E.out
load failed (error: -104)

 

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

    尊敬的 Wyman Yuan:

    您现在使用的是哪个 SDK 版本?
    此致、
    Betsy Varughese.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Wyman Yuan:

    让我检查您分享的 DTS 文件、并在一天内回复您。

    此致、

    Betsy Varughese.

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

    您好 Betsy、

    我发现旧 DTS 为 DSP 分配了 500m 的内存、而新 DTS 只分配了 256M、地址也不同。 我怀疑这可能是原因。 我在新 DTS 中将 DSP 分配增加到 512M、但将 cmem_block_mem 减少了 256M。 Linux 仍然可以正常启动、到目前为止、我没有发现降低 cmem_block_mem 会产生任何不利影响。

    接下来、我可能需要修改 CCS 链接器文件。 但是、关于 CCS 中的存储器定义(例如矢量和 entry_point2)、我看不到它们在 DTS 中的分配位置。

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

    我当前使用的是 06.03.0.106 版本的 SDK。

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

    尊敬的 Wyman Yuan:

    我怀疑问题是因为链接器存储器与 DTS 保留存储器之间的存储器映射不匹配。  

    但是、关于 CCS 中的存储器定义(例如向量和入口点 2)、我看不到它们在 DTS 中的分配位置。

    据我所知、 DTS 文件仅描述 Linux 管理的外部/共享存储器区域、例如 DDR、CMEM 或共享存储器池。 存储器区域(如矢量,入口点和 L2 RAM 段)是内部 DSP 存储器。

    此致、

    Betsy Varughese.

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

    您好 Betsy、

    我发现 CCS 中实际设置的 K2E 地址与 SDK 中设置的地址不同、新 SDK 的 DTS 显示地址 c000000 已占用、而旧版本未占用。 我删除了 c000000 区域的 SRAM-BM 和 SRAM-cmem 保留。 之后它成功加载,但出现了新的问题,例如,需要加载和运行 DSP 程序两次,然后它才真正启动,一些方法变得无响应。 我仍在调查中。 此外、我想问在哪里可以找到有关 Arm Linux 和 DSP 通信的文档。

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

    您好、Wyman:

    此外、我想问在哪里可以找到有关 Arm Linux 和 DSP 通信的文档。

    请参阅: https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/linux/Foundational_Components_IPC.html

    此致、

    Betsy Varughese.