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:CCS10/TDA2Px:使用 loadprogram()与参数和内存配置的 DSS 脚本

Guru**** 2511985 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/939918/ccs-ccs10-tda2px-dss-scripting-using-loadprogram-with-arguments-and-memory-configuration

工具/软件:Code Composer Studio

您好!


下面是该问题的说明-它与 loadprogram()的使用(带有参数)及其周围的配置有关。

CCS:版本10.0.00010
平台:TDA2Px - Vision SDK3.0 (RTOS)
dss 脚本编写(js)
在 QSPI Flasher (exe)中将 javascript 与 debugSession.memory.loadProgram()与参数一起使用以调用 main()
修改
对 JavaScript 的修改:
-将调用从 loadporgram(exe)更改为 loadprogram (exe, arguments)
"根据 DSS 脚本文档,要使用 loadprogram(exe, arguments)--args,需要在链接期间使用"
对 C 程序的修改:
-已将"LNKFLAGS_LOCAL_COMMON =--args=100"添加到 Makefile 中
-已将.args 段添加到 lnk.cmd
附加了两个文件(Makefile & lnk.cmd)

错误:严重:Cortex_M4_IPU1_C0:文件加载程序:验证失败:地址0x83512060上的值不匹配请验证目标存储器和存储器映射。
我们知道、如何分配 args 段可能存在问题。

以下是可能的解决方案。 请澄清适用于我们的情况的案例-
1.实现此目标的两种方法是使用'--args'(非 BIOS 应用程序)构建您的应用程序,或通过 BIOS 配置工具(BIOS 应用程序)设置'.args'部分。 然后、您可以使用 GEL 将值写入目标存储器中已分配给 argc、argv 值的段。

在论坛中使用 BIOS 配置工具的演示链接不再起作用。 此解决方案是否适用于我们?
另外一种方法是、由于 DSS loadProgram API 有一个限制、它只支持将参数传递给非基于 BIOS 的应用程序的 main。 对于基于 BIOS 的应用、需要使用上面链接中描述的手动方法(您可以使用 DSS 存储器写入 API 来手动执行此操作)。

(1)使用 XGCONF 编辑器打开 BIOS 配置文件(.cfg)(在 CCS 中右键单击 CONFIG 文件并选择"Open with ->XGCONF")。
(2)在 XGCONF 编辑器中、单击 BIOS 配置文件顶部的"System Overview"(系统概述)
(3)在系统概览中、单击内存管理下的"Memory"(内存)
(4)在内存模块设置中、单击程序模块链接
(5)在运行时大小中、为参数大小设置一个值

如果适用...对于如何手动使用 DSS 存储器 API (如 writewe()、writedata())或如何使用 XGCONF,是否有示例?

我正在尝试这些选项。 非常感谢您的任何意见。

谢谢、

Pramod  

目录:\processorsdk\ti_componels\drivers\pdk_01_09_00_17\packages/ti\boot\sbl_auto_qspiflash\examples\qspi_flash_writer

_________________

生成文件:

_________________

编号
#此文件是用于构建 QSPI 闪存写入器的 makefile 文件。
编号
包括$(pdk_install_path)/ti/build/Rules.make

app_name = QSPI_FLASH_writer

SRCDIR =。
INCDIR =。

#在 SBL 下创建可执行文件、因为它用于刷写 SBL 映像、那么
将其与 SBL 映像放在一起是逻辑的
$(app_name)_BINPATH =$(dest_root)/SBL/$(app_name)
导出$(app_name)_BINPATH

#列出所有外部组件/接口,其接口头文件
此组件需要包含#
include_external_interfaces = PDK

#列出应用程序所需的所有组件
COMP_LIST_COMMON = CSL STW_PLANT平台 qspiflash_lib pm_hal

#跨所有平台和内核的通用源文件和 CFLAGS
SRCS_common = main.c
PACKAGE_SRCS_COMMON =。

CFLAGS_LOCAL_COMMON =$(PDK_CFLAGS)$(SBL_CFLAGS)
LNKFLAGS_LOCAL_COMMON =--args=100

ifeq ($(CORE)、ipu1_0)
LNKCMD_FILE = lnk.cmd
字节序

# Core/SoC/平台特定源文件和 CFLAGS
#示例:
# SRCS_ =
# CFLAGS_LOCAL =

#包含通用 make 文件
ifeq ($(MAKERULEDIR)、)
未定义#Makerule 路径,定义此路径并假定从 rootdir 获取相对路径
MAKERULEDIR:=$(rootdir)/ti/build/makerules
导出 MAKERULEDIR
字节序
包括$(MAKERULEDIR)/common.mk

# OBJs 和库是使用 rules_中定义的规则构建的 mk
此处不需要明确指定

#没有什么超过这个点的

_________________

lnk.cmd:

_________________

-stack 0x4000 //软件栈大小*/
堆0x4000 /*堆区域大小*/

/*指定系统内存映射*/

存储器

IRAM_MEM:org = 0x40300000 len = 0x1C000 // RAM 0x1FBFF*/
MMU_TLB:origin = 0x4031C000 length = 0x000004000
DDR3_A8:org = 0x8050000 len = 0xA000000 // 176 MB */
DDR3_DSP:org = 0x8B000000 len = 0x02000000 // 32 MB */
DDR3_M3VPSS:org = 0x8D000000 len = 0x01000000 // 16 MB */
DDR3_M3VIDEO:org = 0x8E000000 len = 0x01000000 // 16 MB */
DDR3_SR0:org = 0x8F000000 len = 0x01000000 // 16 MB */
GPMC_NOR:org = 0x08000000 len = 0x1000 // 4 MB */

/*指定段分配到内存中*/

部分

init:load > DDR3_A8

.text:load > DDR3_A8 /* code */
.data:load > DDR3_A8 /*已初始化全局和静态变量。 *
.bss:load > DDR3_A8 /*未初始化或零初始化*/
/*全局和静态变量。 *
RUN_START (BSS_START)
RUN_END (BSS_END)
.const:load > DDR3_A8 /*全局常量*/
.cinit:加载> DDR3_A8
stack:load > DDR3_A8 /*软件系统堆栈*/
GPMC_MEM:LOAD > GPMC_NOR
sysmem:load > ddr3_A8
.plt:LOAD > DDR3_A8
.args:load > DDR3_A8

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

    您好!

    我假设您的程序使用 SYS/BIOS。 您参考了一些演示文稿/文档。 您能否提供此文档的链接?

    谢谢

    Ki

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

    您好 Ki、

    是的、我们使用的是 SYS/BIOS。 我们无法获得我对该文档的掌握。 以下是无法访问的链接、我相信这些链接是相当旧的帖子。

    旧链接1: https://bit.ly/35ysURh

    它具有指向不再工作的演示文稿的链接:  

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

    另一个选项是使用'--args'(非 BIOS 应用程序)构建您的应用程序、或通过 BIOS 配置工具(BIOS 应用程序)设置'.args'部分。 然后、您可以使用 GEL 将值写入目标存储器中已分配给 argc、argv 值的段。

    请参阅 本演示文稿的幻灯片12和13 以了解更多详细信息。 虽然演示文稿提供了有关如何使用 CCScripting 执行该操作的示例、但您也可以使用 GEL 执行存储器写入。

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

    旧链接2: https://bit.ly/3miBgT4

    它还具有指向不再起作用的演示文稿的链接:  

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

    我之前的帖子中的演示链接不正确。 应该是这样

    tiexpressdsp.com/index.php

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

    另一个问题-对于 CCS 10、我无法打开 XGCONF 编辑器、尽管它显示了该选项。 如果您也能提供帮助、那将会很好。

    谢谢、

    Pramod  

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

    您好 Pramod、  

    XGCONF 编辑器问题。 是否可以附加工作区日志文件。 它应位于 WorkspaceDirectory\.metadata 文件夹中、文件名仅为".log"如果有大量条目、则可能有多个编号的文件。 如果您可以启动 CCS、尝试打开 XGCONF、然后关闭 CCS 并发送(附加到您的回复).log 文件,这将非常有用。

    谢谢、
    Martin