“线程”中讨论的其他部件: EVMK2G, K2GICE
各位专家:
为了我的工作,我正在开发基于 SoC 66AK2G12ABYQ100的定制板上的控制电机应用程序。
我通过 EVMK2G 在 DSP c66x 上开发了代码。 该代码在评估板上正常工作,编译的结果是 ELF 文件 PrjD.out。
现在,我必须 将 ELF 文件 PrjD.out 加载 到安装在我的定制电子板上的66AK2G12上。
我下载 了用于 K2G 的 Linux-RT 处理器 SDK 06.03.00.106版(发布日期为4月20日),并在 ARM 上安装了 ti-Linux-kernel-ti2019.03-RT。
下一步是配置在 ARM 上运行的内核,以便在 其 L2SRAM 上加载 DSP 代码。
此操作 应 由 mpmcl / mpmsrv 工具执行,这些工具使用 CMEM 驱动程序处理定义的 CMA 区域内的实际内存分配。
我修改 了设备树条形图(DTB),将 DDR 从512M 减少到256M。
根文件系统还包含 我正在使用的 Busybox (不是 Arago)的内部版本,包括 mpm 所需的所有从属库。
我有以下问题:
1)我 的 DSP 应用是裸机代码,它基于库 CSL。 我 使用以下默认链接程序文件通过 CCS10.2.0编译了此代码。
-heap 0x8000 -stack 0xC000 -l ti/dsplib/lib/dsplib.lib -l ti/dsplib/lib/dsplib_cn.lib -l ti/mathlib/lib/mathlib.lib MEMORY { L2SRAM (RWX) : org = 0x10800000, len = 0x080000 MSMCSRAM (RWX): org = 0x0c000000, len = 0x100000 /* 1MB MSMC Shared SRAM */ DDR3 (RWX) : org = 0x80000000, len = 0x80000000 /* 2GB external DDR3 */ } SECTIONS { .kernel: { dsplib*<*.o*> (.text:optimized) { SIZE(_kernel_size) } } .text: load >> L2SRAM .text:touch: load >> L2SRAM GROUP (NEAR_DP) { .neardata .rodata .bss } load > L2SRAM .init_array: load >> L2SRAM .far: load >> L2SRAM .fardata: load >> L2SRAM .neardata load >> L2SRAM .rodata load >> L2SRAM .data: load >> L2SRAM .switch: load >> L2SRAM .stack: load > L2SRAM .args: load > L2SRAM align = 0x4, fill = 0 {_argsize = 0x200; } .sysmem: load > L2SRAM .cinit: load > L2SRAM .const: load > L2SRAM START(const_start) SIZE(const_size) .pinit: load > L2SRAM .cio: load >> L2SRAM .csl_vect: load > L2SRAM xdc.meta: load >> L2SRAM, type = COPY }
下面是 CCS 的一般配置。
我通过 板载调试器 TI XDS2xxx 成功地验证了我的 ELF 文件 PrjD.out 在 EVMK2G 上的工作情况。
此 ELF 文件是否与上述工具(Linux RT, mpmcl,mpmsrv,CMEM,CMA 等)兼容?
是否需要修改链接器或对 ELF 文件进行后处理?
2)以下标准 CMA 配置在以下 DTB 配置上无法正常工作:
dsp_common_mpm_memory: dsp-common-mpm-memory@81d000000 { compatible = "ti,keystone-dsp-mem-pool"; reg = <0x00000008 0x1d000000 0x00000000 0x2800000>; no-map; status = "okay"; }; dsp_common_memory: dsp-common-memory@81f800000 { compatible = "shared-dma-pool"; reg = <0x00000008 0x1f800000 0x00000000 0x800000>; reusable; status = "okay"; };
实际上,启动时的内核在 CMA_INIT_RESTOND_ARIESS_ARIEND_ARIESS_ARIEND_ARIESS_AREs,显示“内核恐慌”。
以下配置不会出现与引导内核相关的问题:dsp_common_mpm_pool: dsp_common_mpm_pool@83000000 { compatible = "ti,keystone-dsp-mem-pool"; reg = <0x00000000 0x83000000 0x00000000 0x400000>; no-map; status = "okay"; }; dsp_common_memory: dsp_common_memory@82800000 { compatible = "shared-dma-pool"; reg = <0x00000000 0x82800000 0x00000000 0x800000>; reusable; status = "okay"; };
请提前感谢。
此致,
贝尼托