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.
你(们)好
我目前使用 的是使用 F021闪存 API 的 UART 引导加载 程序,但该引导加载程序提供了闪存 API,其中包含仅在 CCS 上工作的.Lib 文件(因为它是 TI 编译的)。
我需要源文件以便可以在 GHS (Green hills 编译器)上运行。 那么、如何从 TI 获取适用于 TMS570ls3137的 F021闪存 API 的源文件。
您好!
TI 通常不会分发源代码。 这样做的原因是修改代码可能会影响器件中的闪存。 应用程序中不得使用修改后的 API。 要创建闪存编程解决 方案、必须使用 TI 提供的闪存 API 库。
如果用户出于 认证目的对源代码有正当合法的需求、则可以根据与 TI 签署的许可协议提供源代码。
您可以使用 LS31x 引导加载程序中使用的闪存操作(擦除、程序):BL_FLASH.c
Greenhills ARM 编译器是否支持 TI F021闪存 API 所使用的 ARM 标准 EABI ELF 目标格式、或者 Greenhills 是否使用不同的目标格式?
提出要求的原因是、我不是 Greenhills 编译器用户、他们的网站似乎不允许在未注册的情况下下载编译器数据表。
创建 HALCoGen 项目时、可选择"GHS Tools"。
F021闪存 API 安装中还有 C:\ti\hercules\F021闪存 APi\02.01.01\include\CGT.GHS.h 文件、但包含以下注释:
* Description: GHS compiler specific info used by the F021 API. * Note: This has not been tested with the GHS compiler.
因此、不确定 TI 是否已使用 GHS 编译器测试 F021闪存 API。
Chester Gillon 先生
GHS 不支持 F021 API、因为它不支持 ARM 标准 EABI ELF 对象格式。即使您尝试在 GHS 中编译它、也会显示乘法定义错误
此外、即使您尝试通过在编译器选项中将乘法定义的错误变为静默来抑制错误、
编译 的程序将运行、但目标文件中的函数不会包含在最终的 elf 输出中、
当您尝试在控制器中运行程序时、它将显示 中止错误。
此中止错误 是由于编译器在最终 elf 文件中未包含 fapi (F021 API 对象)、因此在 RAM 上的指定符号位置没有文本
下面的链接显示了使用 F021库 API 文件编译时 GHS 产生的错误
e2e.ti.com/.../pb-between-green-hills-tools-and-f021-library
谢谢王先生
但如何 联系 TI、
是否有任何方法从 TI 获取源文件。
下面的链接显示了使用 F021库 API 文件编译时 GHS 产生的错误
e2e.ti.com/.../pb-between-green-hills-tools-and-f021-library
[/报价]引用的线程中的错误似乎来自 TI 编译的 F021 API 库文件中的调试信息。
是否尝试链接用"_NDS"作为后缀的文件名(这意味着在不包含调试符号的情况下进行编译)?
对于 TMS570LS3137、它将是 F021_API_CortexR4_BE_NDS.lib
好的, 我会尝试并回复你,谢谢你的信息
如您 所见,链接器生成警告,即 F021 API 文件不是链接的一部分
我使用了没有调试符号的 API、但问题仍然相同。
F021_API_CortexR4_BE_NDS.lib 包含41个目标文件:
$ ar t /mnt/windows/ti/Hercules/F021\ Flash\ API/02.01.01/F021_API_CortexR4_BE_NDS.lib | wc -l 41
Greenhills 链接器警告 F021_API_CortexR4_BE_NDS.lib 库中的15个目标文件未包含在链接中。 这看起来是正常行为、因为链接器仅包含库中满足 extechutable 未定义符号所需的目标文件。
链接的可执行文件是否成功运行?
No Mr. Chester Gillon 当 我执行代码时、应该根据映射文件的符号位置来存储闪存 API 的.text 文件的位置在 RAM 位置或复制 ROM 位置中没有数据。
这些是符号位置、当我的程序执行时、启动代码将闪存 API 从复制 ROM 位置复制到 RAM 中
但这些位置只是空的 、因为编译器在编译期间未包含这些位置
当我尝试运行代码时 ,控制器进入未定义条 目,这是 由于执行未定义指令而导致的运行时间错误
此错误是由于 在闪存 API 符号的位置没有放置十六进制代码或指令。
好的、由于我没有 Green Hills 编译器的许可证、我无法进一步调查。
您能向 Green Hills 寻求支持吗?
Chester Gillon 先生
正如您所说、我将尝试询问 Green Hills
IAM 还将要求 TI 提供源文件